@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
@@ -0,0 +1,192 @@
1
+ /**
2
+ * # A leased, stale-while-revalidate, single-flight cache for values read on the AUDIT EMISSION PATH
3
+ *
4
+ * The audit dispatcher holds two per-organization caches — the SIEM export config that decides WHERE
5
+ * an event is routed, and the organization name that decorates the envelope. Both were hand-rolled
6
+ * `Map`s with a 5-minute wall-clock TTL, a copy-pasted FIFO eviction block, and a blocking re-read on
7
+ * expiry. This is the one place those mechanics live now, so a property fixed here is fixed for both
8
+ * — the shape `.claude/rules/invariant-call-site-enumeration.md` exists to force.
9
+ *
10
+ * ## The governing constraint: emission must never fail, and never block, the thing it observes
11
+ *
12
+ * `AuditEventDispatcherBackendService` runs detached (`audit-logs.backend.service.ts:349` calls it
13
+ * without `await`, with a `.catch`), and its whole contract is that a routing failure is logged and
14
+ * never thrown onto the business operation. Every property below follows from that:
15
+ *
16
+ * | Property | Why it is required here specifically |
17
+ * |---|---|
18
+ * | **Stale-while-revalidate** | Past the lease the CACHED value is returned immediately and the re-read runs off the caller's path. Staleness is tolerable (a config changes monthly); a stall is not. It is also what makes a SHORT lease affordable: shortening it now costs read volume only, never latency. |
19
+ * | **Single flight** | A burst of events for one organization must produce ONE read, not one per event. Without it a cold organization under load fires N concurrent reads — and for the SIEM config each of those reads emits its own `system_context_read` audit row and can race the lazy default-row materialisation. |
20
+ * | **Generation-guarded write-back** | An {@link invalidate} that lands WHILE a refresh is in flight must win. Without the guard the in-flight read — started before the write committed — writes the pre-write value back over the invalidation, so the invalidation silently does nothing in exactly the case it exists for. |
21
+ * | **Backoff on failure** | A failed refresh stamps the next attempt one lease ahead rather than retrying per event. A broken repository must not turn into a read storm that scales with audit volume. |
22
+ * | **LRU, not FIFO, eviction** | The evicted entry is the least recently USED. The previous FIFO block (labelled "simple LRU approximation", which it was not) evicted by insertion order, so the busiest organization — inserted first, refreshed in place, never re-inserted — was the first one thrown out and forced back onto a blocking cold read. |
23
+ *
24
+ * ## What it deliberately does NOT do
25
+ *
26
+ * - **It does not live in a shared store.** Putting the VALUE in Redis would make routing depend on a
27
+ * store that can be unavailable, and would put a network round trip on the emission path. Cross-replica
28
+ * convergence is carried instead by a published invalidation (see the dispatcher's
29
+ * `_publishSiemConfigInvalidation`) plus the lease — neither of which the emission path touches.
30
+ * - **It does not expire entries out of the map.** An entry is refreshed in place, never dropped on age,
31
+ * so a warm organization never pays a blocking read again. Only {@link invalidate} and LRU pressure
32
+ * remove an entry.
33
+ * - **It caches negative results.** `null` / `undefined` is a value like any other. The alternative —
34
+ * re-reading on every event for a key with no row — is unbounded read amplification precisely for the
35
+ * keys that are cheapest to get wrong, and it is the shape the org-name cache had before this.
36
+ *
37
+ * ## Precondition on the loader, which is a real constraint and not boilerplate
38
+ *
39
+ * A caller that JOINS an in-flight load receives the value **the first caller's loader produced**. So
40
+ * every loader passed for one key must be equally privileged: a per-request loader whose visibility
41
+ * varies with the caller would leak one caller's view to another. Both current call sites satisfy this
42
+ * because the execution context they close over is the audit service's freshly-synthesised super-admin
43
+ * APPLICATION-scoped temp context (`audit-logs.backend.service.ts:284`, handed to the dispatcher at
44
+ * `:349`) — identical in privilege for every dispatch. **State the equivalent before adding a third.**
45
+ */
46
+ /**
47
+ * A per-key leased cache. See the module header for the design and its constraints.
48
+ *
49
+ * @typeParam T The cached value. Nullable members are cached like any other value, deliberately.
50
+ */
51
+ export class LeasedValueCache {
52
+ options;
53
+ entries = new Map();
54
+ /** In-flight loads/refreshes, keyed identically. Present ⇒ a read is already on the wire for that key. */
55
+ inFlight = new Map();
56
+ /** Monotonic per-key generation. A key absent here has never been invalidated. */
57
+ generations = new Map();
58
+ constructor(options) {
59
+ this.options = options;
60
+ }
61
+ /**
62
+ * Serve `key`, loading it when there is nothing to serve.
63
+ *
64
+ * Rejects ONLY when a COLD load rejects — there is no cached value to fall back to, so the caller has
65
+ * to decide. Once a value exists this never rejects and never blocks: a stale entry is returned as it
66
+ * stands and the refresh runs detached.
67
+ *
68
+ * @param load Reads the current value. Must satisfy the loader precondition in the module header.
69
+ */
70
+ async get(key, load) {
71
+ const entry = this.entries.get(key);
72
+ if (entry) {
73
+ // Touch for LRU on every hit, fresh or stale: "recently used" is about READS, so refreshing in
74
+ // place must not let a busy key drift toward the eviction end.
75
+ this.entries.delete(key);
76
+ this.entries.set(key, entry);
77
+ if (Date.now() >= entry.nextRefreshAt) {
78
+ // An UNOBSERVABLE optimisation, and deliberately unpinned: removing it changes no outcome,
79
+ // because `inFlight` already collapses the reads. What it saves is that every event arriving
80
+ // during a slow refresh would otherwise re-enter `startLoad`, join the same promise and attach
81
+ // its own `.catch` handler — bounded and released on settle, but pointless work per event on
82
+ // the emission path.
83
+ //
84
+ // It is NOT the failure backoff, however much it looks like one. Backing off after a failed
85
+ // refresh is `startLoad`'s catch, which re-stamps from the moment the failure LANDED; a slow
86
+ // failure exhausts this stamp while still on the wire. Mistaking the two makes a backoff pin
87
+ // that passes with the backoff deleted — measured, and the reason the suite pins both.
88
+ entry.nextRefreshAt = Date.now() + this.options.refreshAfterMs;
89
+ void this.startLoad(key, load).catch(() => {
90
+ /* Reported through `onRefreshFailure` inside `startLoad`; nothing may escape onto the emission path. */
91
+ });
92
+ }
93
+ return entry.value;
94
+ }
95
+ return this.startLoad(key, load);
96
+ }
97
+ /**
98
+ * Drop `key`, so the next {@link get} performs a blocking read.
99
+ *
100
+ * Synchronous, infallible and idempotent — a caller needs no error handling, which is why the write-path
101
+ * hook can invoke it inside a postfix handler without a try/catch.
102
+ *
103
+ * Bumping the generation is the load-bearing half: it makes any refresh already on the wire discard its
104
+ * result instead of writing the pre-invalidation value back. Deleting the entry alone would leave the
105
+ * invalidation defeated by a read that started microseconds earlier.
106
+ */
107
+ invalidate(key) {
108
+ this.entries.delete(key);
109
+ this.generations.set(key, (this.generations.get(key) ?? 0) + 1);
110
+ }
111
+ /** Resident key count. A test and diagnostics seam; nothing branches on it in production. */
112
+ size() {
113
+ return this.entries.size;
114
+ }
115
+ /** Drop everything, including generation history. Test isolation only. */
116
+ clear() {
117
+ this.entries.clear();
118
+ this.inFlight.clear();
119
+ this.generations.clear();
120
+ }
121
+ /**
122
+ * Await every load currently on the wire.
123
+ *
124
+ * A TEST seam: stale-while-revalidate means a refresh outlives the `get` that started it, so a pin that
125
+ * asserts on the refreshed value has no other deterministic join point. Never called from production
126
+ * code — production must never wait for a refresh, which is the entire point of the design.
127
+ */
128
+ async settle() {
129
+ while (this.inFlight.size > 0) {
130
+ await Promise.allSettled([...this.inFlight.values()]);
131
+ }
132
+ }
133
+ /** Start (or join) the single in-flight read for `key`, writing the result back under generation guard. */
134
+ startLoad(key, load) {
135
+ const joined = this.inFlight.get(key);
136
+ if (joined)
137
+ return joined;
138
+ const startedAtGeneration = this.generations.get(key) ?? 0;
139
+ const pending = load()
140
+ .then((value) => {
141
+ // The generation guard. An `invalidate` that landed while this read was on the wire means the
142
+ // value we are holding predates a write we already know about — publishing it would restore
143
+ // exactly the staleness the invalidation was raised to remove.
144
+ if ((this.generations.get(key) ?? 0) === startedAtGeneration) {
145
+ this.store(key, value);
146
+ }
147
+ return value;
148
+ })
149
+ .catch((error) => {
150
+ const existing = this.entries.get(key);
151
+ if (existing) {
152
+ // Serve the last known value and back off a full lease rather than retrying per event. A source
153
+ // that is down must not convert audit volume into read volume.
154
+ existing.nextRefreshAt = Date.now() + this.options.refreshAfterMs;
155
+ this.options.onRefreshFailure?.(key, error);
156
+ return existing.value;
157
+ }
158
+ // COLD failure: there is nothing to serve, so the caller decides. Deliberately NOT reported through
159
+ // `onRefreshFailure`, which names the silent case; a cold rejection is visible to the caller.
160
+ throw error;
161
+ })
162
+ .finally(() => {
163
+ // Only clear the slot if it is still OURS. A `clear()` between start and settle would otherwise
164
+ // have this delete a newer in-flight read's entry.
165
+ if (this.inFlight.get(key) === pending)
166
+ this.inFlight.delete(key);
167
+ });
168
+ this.inFlight.set(key, pending);
169
+ return pending;
170
+ }
171
+ /** Insert or replace, evicting the least recently used key first when at capacity. */
172
+ store(key, value) {
173
+ const existing = this.entries.get(key);
174
+ if (existing) {
175
+ existing.value = value;
176
+ existing.nextRefreshAt = Date.now() + this.options.refreshAfterMs;
177
+ return;
178
+ }
179
+ if (this.entries.size >= this.options.maxEntries) {
180
+ // Map iteration is insertion order and `get` re-inserts on every hit, so the first key is the least
181
+ // recently used one.
182
+ const leastRecentlyUsed = this.entries.keys().next().value;
183
+ if (leastRecentlyUsed !== undefined) {
184
+ this.entries.delete(leastRecentlyUsed);
185
+ // Its generation goes too: an unbounded generation map would be the leak the entry cap prevents.
186
+ this.generations.delete(leastRecentlyUsed);
187
+ }
188
+ }
189
+ this.entries.set(key, { value, nextRefreshAt: Date.now() + this.options.refreshAfterMs });
190
+ }
191
+ }
192
+ //# sourceMappingURL=leased-value-cache.backend.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leased-value-cache.backend.utils.js","sourceRoot":"","sources":["../../../../../../../src/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * # A leased, stale-while-revalidate, single-flight cache for values read on the AUDIT EMISSION PATH\n *\n * The audit dispatcher holds two per-organization caches — the SIEM export config that decides WHERE\n * an event is routed, and the organization name that decorates the envelope. Both were hand-rolled\n * `Map`s with a 5-minute wall-clock TTL, a copy-pasted FIFO eviction block, and a blocking re-read on\n * expiry. This is the one place those mechanics live now, so a property fixed here is fixed for both\n * — the shape `.claude/rules/invariant-call-site-enumeration.md` exists to force.\n *\n * ## The governing constraint: emission must never fail, and never block, the thing it observes\n *\n * `AuditEventDispatcherBackendService` runs detached (`audit-logs.backend.service.ts:349` calls it\n * without `await`, with a `.catch`), and its whole contract is that a routing failure is logged and\n * never thrown onto the business operation. Every property below follows from that:\n *\n * | Property | Why it is required here specifically |\n * |---|---|\n * | **Stale-while-revalidate** | Past the lease the CACHED value is returned immediately and the re-read runs off the caller's path. Staleness is tolerable (a config changes monthly); a stall is not. It is also what makes a SHORT lease affordable: shortening it now costs read volume only, never latency. |\n * | **Single flight** | A burst of events for one organization must produce ONE read, not one per event. Without it a cold organization under load fires N concurrent reads — and for the SIEM config each of those reads emits its own `system_context_read` audit row and can race the lazy default-row materialisation. |\n * | **Generation-guarded write-back** | An {@link invalidate} that lands WHILE a refresh is in flight must win. Without the guard the in-flight read — started before the write committed — writes the pre-write value back over the invalidation, so the invalidation silently does nothing in exactly the case it exists for. |\n * | **Backoff on failure** | A failed refresh stamps the next attempt one lease ahead rather than retrying per event. A broken repository must not turn into a read storm that scales with audit volume. |\n * | **LRU, not FIFO, eviction** | The evicted entry is the least recently USED. The previous FIFO block (labelled \"simple LRU approximation\", which it was not) evicted by insertion order, so the busiest organization — inserted first, refreshed in place, never re-inserted — was the first one thrown out and forced back onto a blocking cold read. |\n *\n * ## What it deliberately does NOT do\n *\n * - **It does not live in a shared store.** Putting the VALUE in Redis would make routing depend on a\n * store that can be unavailable, and would put a network round trip on the emission path. Cross-replica\n * convergence is carried instead by a published invalidation (see the dispatcher's\n * `_publishSiemConfigInvalidation`) plus the lease — neither of which the emission path touches.\n * - **It does not expire entries out of the map.** An entry is refreshed in place, never dropped on age,\n * so a warm organization never pays a blocking read again. Only {@link invalidate} and LRU pressure\n * remove an entry.\n * - **It caches negative results.** `null` / `undefined` is a value like any other. The alternative —\n * re-reading on every event for a key with no row — is unbounded read amplification precisely for the\n * keys that are cheapest to get wrong, and it is the shape the org-name cache had before this.\n *\n * ## Precondition on the loader, which is a real constraint and not boilerplate\n *\n * A caller that JOINS an in-flight load receives the value **the first caller's loader produced**. So\n * every loader passed for one key must be equally privileged: a per-request loader whose visibility\n * varies with the caller would leak one caller's view to another. Both current call sites satisfy this\n * because the execution context they close over is the audit service's freshly-synthesised super-admin\n * APPLICATION-scoped temp context (`audit-logs.backend.service.ts:284`, handed to the dispatcher at\n * `:349`) — identical in privilege for every dispatch. **State the equivalent before adding a third.**\n */\n\n/** One cached entry. `nextRefreshAt` — not an age — is what the lease is measured against, so a failed refresh can back off without pretending the value is fresh. */\ninterface LeasedEntry<T> {\n value: T;\n /** Wall-clock instant at or after which the next {@link LeasedValueCache.get} triggers a background refresh. */\n nextRefreshAt: number;\n}\n\n/** Construction options. `refreshAfterMs` is the guarantee the owning subsystem states publicly — see each call site. */\nexport interface LeasedValueCacheOptions {\n /** How long a value is served without a re-read. The convergence bound for any change no invalidation reaches. */\n readonly refreshAfterMs: number;\n /** Hard ceiling on resident keys; the least recently used is evicted on overflow. */\n readonly maxEntries: number;\n /**\n * Reported when a BACKGROUND refresh throws. The cache keeps serving the previous value and backs off\n * one lease. Optional, but omitting it makes a persistently unreadable source silent, which is the\n * failure this whole subsystem exists to make visible — pass one.\n */\n readonly onRefreshFailure?: (key: string, error: unknown) => void;\n}\n\n/**\n * A per-key leased cache. See the module header for the design and its constraints.\n *\n * @typeParam T The cached value. Nullable members are cached like any other value, deliberately.\n */\nexport class LeasedValueCache<T> {\n private readonly entries = new Map<string, LeasedEntry<T>>();\n /** In-flight loads/refreshes, keyed identically. Present ⇒ a read is already on the wire for that key. */\n private readonly inFlight = new Map<string, Promise<T>>();\n /** Monotonic per-key generation. A key absent here has never been invalidated. */\n private readonly generations = new Map<string, number>();\n\n constructor(private readonly options: LeasedValueCacheOptions) {}\n\n /**\n * Serve `key`, loading it when there is nothing to serve.\n *\n * Rejects ONLY when a COLD load rejects — there is no cached value to fall back to, so the caller has\n * to decide. Once a value exists this never rejects and never blocks: a stale entry is returned as it\n * stands and the refresh runs detached.\n *\n * @param load Reads the current value. Must satisfy the loader precondition in the module header.\n */\n public async get(key: string, load: () => Promise<T>): Promise<T> {\n const entry = this.entries.get(key);\n\n if (entry) {\n // Touch for LRU on every hit, fresh or stale: \"recently used\" is about READS, so refreshing in\n // place must not let a busy key drift toward the eviction end.\n this.entries.delete(key);\n this.entries.set(key, entry);\n\n if (Date.now() >= entry.nextRefreshAt) {\n // An UNOBSERVABLE optimisation, and deliberately unpinned: removing it changes no outcome,\n // because `inFlight` already collapses the reads. What it saves is that every event arriving\n // during a slow refresh would otherwise re-enter `startLoad`, join the same promise and attach\n // its own `.catch` handler — bounded and released on settle, but pointless work per event on\n // the emission path.\n //\n // It is NOT the failure backoff, however much it looks like one. Backing off after a failed\n // refresh is `startLoad`'s catch, which re-stamps from the moment the failure LANDED; a slow\n // failure exhausts this stamp while still on the wire. Mistaking the two makes a backoff pin\n // that passes with the backoff deleted — measured, and the reason the suite pins both.\n entry.nextRefreshAt = Date.now() + this.options.refreshAfterMs;\n void this.startLoad(key, load).catch(() => {\n /* Reported through `onRefreshFailure` inside `startLoad`; nothing may escape onto the emission path. */\n });\n }\n return entry.value;\n }\n\n return this.startLoad(key, load);\n }\n\n /**\n * Drop `key`, so the next {@link get} performs a blocking read.\n *\n * Synchronous, infallible and idempotent — a caller needs no error handling, which is why the write-path\n * hook can invoke it inside a postfix handler without a try/catch.\n *\n * Bumping the generation is the load-bearing half: it makes any refresh already on the wire discard its\n * result instead of writing the pre-invalidation value back. Deleting the entry alone would leave the\n * invalidation defeated by a read that started microseconds earlier.\n */\n public invalidate(key: string): void {\n this.entries.delete(key);\n this.generations.set(key, (this.generations.get(key) ?? 0) + 1);\n }\n\n /** Resident key count. A test and diagnostics seam; nothing branches on it in production. */\n public size(): number {\n return this.entries.size;\n }\n\n /** Drop everything, including generation history. Test isolation only. */\n public clear(): void {\n this.entries.clear();\n this.inFlight.clear();\n this.generations.clear();\n }\n\n /**\n * Await every load currently on the wire.\n *\n * A TEST seam: stale-while-revalidate means a refresh outlives the `get` that started it, so a pin that\n * asserts on the refreshed value has no other deterministic join point. Never called from production\n * code — production must never wait for a refresh, which is the entire point of the design.\n */\n public async settle(): Promise<void> {\n while (this.inFlight.size > 0) {\n await Promise.allSettled([...this.inFlight.values()]);\n }\n }\n\n /** Start (or join) the single in-flight read for `key`, writing the result back under generation guard. */\n private startLoad(key: string, load: () => Promise<T>): Promise<T> {\n const joined = this.inFlight.get(key);\n if (joined) return joined;\n\n const startedAtGeneration = this.generations.get(key) ?? 0;\n const pending = load()\n .then((value) => {\n // The generation guard. An `invalidate` that landed while this read was on the wire means the\n // value we are holding predates a write we already know about — publishing it would restore\n // exactly the staleness the invalidation was raised to remove.\n if ((this.generations.get(key) ?? 0) === startedAtGeneration) {\n this.store(key, value);\n }\n return value;\n })\n .catch((error: unknown) => {\n const existing = this.entries.get(key);\n if (existing) {\n // Serve the last known value and back off a full lease rather than retrying per event. A source\n // that is down must not convert audit volume into read volume.\n existing.nextRefreshAt = Date.now() + this.options.refreshAfterMs;\n this.options.onRefreshFailure?.(key, error);\n return existing.value;\n }\n // COLD failure: there is nothing to serve, so the caller decides. Deliberately NOT reported through\n // `onRefreshFailure`, which names the silent case; a cold rejection is visible to the caller.\n throw error;\n })\n .finally(() => {\n // Only clear the slot if it is still OURS. A `clear()` between start and settle would otherwise\n // have this delete a newer in-flight read's entry.\n if (this.inFlight.get(key) === pending) this.inFlight.delete(key);\n });\n\n this.inFlight.set(key, pending);\n return pending;\n }\n\n /** Insert or replace, evicting the least recently used key first when at capacity. */\n private store(key: string, value: T): void {\n const existing = this.entries.get(key);\n if (existing) {\n existing.value = value;\n existing.nextRefreshAt = Date.now() + this.options.refreshAfterMs;\n return;\n }\n\n if (this.entries.size >= this.options.maxEntries) {\n // Map iteration is insertion order and `get` re-inserts on every hit, so the first key is the least\n // recently used one.\n const leastRecentlyUsed = this.entries.keys().next().value;\n if (leastRecentlyUsed !== undefined) {\n this.entries.delete(leastRecentlyUsed);\n // Its generation goes too: an unbounded generation map would be the leak the entry cap prevents.\n this.generations.delete(leastRecentlyUsed);\n }\n }\n\n this.entries.set(key, { value, nextRefreshAt: Date.now() + this.options.refreshAfterMs });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ocsf-activity-mapping.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAkC,sBAAsB,EAAsD,MAAM,uBAAuB,CAAC;AAGnJ,oFAAoF;AACpF,oBAAY,kBAAkB;IAC5B,uCAAuC;IACvC,OAAO,IAAI;IACX,6EAA6E;IAC7E,KAAK,KAAK;CACX;AAED,sEAAsE;AACtE,oBAAY,0BAA0B;IACpC,8HAA8H;IAC9H,KAAK,IAAI;IACT,6DAA6D;IAC7D,MAAM,IAAI;IACV,mHAAmH;IACnH,OAAO,IAAI;IACX,KAAK,KAAK;CACX;AAED,oEAAoE;AACpE,oBAAY,eAAe;IACzB,MAAM,IAAI;IACV,uFAAuF;IACvF,IAAI,IAAI;IACR,MAAM,IAAI;IACV,MAAM,IAAI;IACV,KAAK,KAAK;CACX;AAED,yEAAyE;AACzE,oBAAY,4BAA4B;IACtC,MAAM,IAAI;IACV,IAAI,IAAI;IACR,MAAM,IAAI;IACV,MAAM,IAAI;IACV,IAAI,IAAI;IACR,sEAAsE;IACtE,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,OAAO,IAAI;IACX,QAAQ,KAAK;IACb,UAAU,KAAK;IACf,OAAO,KAAK;IACZ,2GAA2G;IAC3G,MAAM,KAAK;IACX,KAAK,KAAK;CACX;AAED,uEAAuE;AACvE,oBAAY,0BAA0B;IACpC,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,IAAI,IAAI;IACR,MAAM,IAAI;IACV,eAAe,IAAI;IACnB,cAAc,IAAI;IAClB,eAAe,KAAK;IACpB,eAAe,KAAK;IACpB,kBAAkB,KAAK;IACvB,mBAAmB,KAAK;IACxB,iBAAiB,KAAK;IACtB,iBAAiB,KAAK;IACtB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,4BAA4B,KAAK;IACjC,+BAA+B,KAAK;IACpC,KAAK,KAAK;CACX;AAgBD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CA6IxF,CAAC;AAwBF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjG;AAED;;;;;;GAMG;AACH,oBAAY,kBAAkB;IAC5B,OAAO,IAAI;IACX,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;IACV,IAAI,IAAI;IACR,SAAS,IAAI;IACb,GAAG,IAAI;IACP,IAAI,IAAI;IACR,GAAG,IAAI;IACP,MAAM,KAAK;IACX,oBAAoB,KAAK;IACzB,IAAI,KAAK;IACT,KAAK,KAAK;CACX;AAyCD,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAK5E;AAuCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUlF"}
1
+ {"version":3,"file":"ocsf-activity-mapping.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAkC,sBAAsB,EAAsD,MAAM,uBAAuB,CAAC;AAGnJ,oFAAoF;AACpF,oBAAY,kBAAkB;IAC5B,uCAAuC;IACvC,OAAO,IAAI;IACX,6EAA6E;IAC7E,KAAK,KAAK;CACX;AAED,sEAAsE;AACtE,oBAAY,0BAA0B;IACpC,8HAA8H;IAC9H,KAAK,IAAI;IACT,6DAA6D;IAC7D,MAAM,IAAI;IACV,mHAAmH;IACnH,OAAO,IAAI;IACX,KAAK,KAAK;CACX;AAED,oEAAoE;AACpE,oBAAY,eAAe;IACzB,MAAM,IAAI;IACV,uFAAuF;IACvF,IAAI,IAAI;IACR,MAAM,IAAI;IACV,MAAM,IAAI;IACV,KAAK,KAAK;CACX;AAED,yEAAyE;AACzE,oBAAY,4BAA4B;IACtC,MAAM,IAAI;IACV,IAAI,IAAI;IACR,MAAM,IAAI;IACV,MAAM,IAAI;IACV,IAAI,IAAI;IACR,sEAAsE;IACtE,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,OAAO,IAAI;IACX,QAAQ,KAAK;IACb,UAAU,KAAK;IACf,OAAO,KAAK;IACZ,2GAA2G;IAC3G,MAAM,KAAK;IACX,KAAK,KAAK;CACX;AAED,uEAAuE;AACvE,oBAAY,0BAA0B;IACpC,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,IAAI,IAAI;IACR,MAAM,IAAI;IACV,eAAe,IAAI;IACnB,cAAc,IAAI;IAClB,eAAe,KAAK;IACpB,eAAe,KAAK;IACpB,kBAAkB,KAAK;IACvB,mBAAmB,KAAK;IACxB,iBAAiB,KAAK;IACtB,iBAAiB,KAAK;IACtB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,4BAA4B,KAAK;IACjC,+BAA+B,KAAK;IACpC,KAAK,KAAK;CACX;AAgBD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CA0LxF,CAAC;AAwBF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjG;AAED;;;;;;GAMG;AACH,oBAAY,kBAAkB;IAC5B,OAAO,IAAI;IACX,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;IACV,IAAI,IAAI;IACR,SAAS,IAAI;IACb,GAAG,IAAI;IACP,IAAI,IAAI;IACR,GAAG,IAAI;IACP,MAAM,KAAK;IACX,oBAAoB,KAAK;IACzB,IAAI,KAAK;IACT,KAAK,KAAK;CACX;AAyCD,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAK5E;AAuCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUlF"}
@@ -172,6 +172,7 @@ export const OCSF_ACTIVITY_BY_EVENT_TYPE = {
172
172
  [CoreAuditableEventType.USER_MFA_SETUP_STARTED]: OcsfAuthenticationActivity.OTHER,
173
173
  [CoreAuditableEventType.USER_PASSKEY_AUTHENTICATION_FAILURE]: OcsfAuthenticationActivity.LOGON,
174
174
  [CoreAuditableEventType.USER_PASSKEY_AUTHENTICATION_SUCCESS]: OcsfAuthenticationActivity.LOGON,
175
+ [CoreAuditableEventType.USER_PASSKEY_CLONE_SUSPECTED]: OcsfAuthenticationActivity.LOGON,
175
176
  [CoreAuditableEventType.USER_PASSKEY_REGISTERED]: OcsfAuthenticationActivity.OTHER,
176
177
  [CoreAuditableEventType.USER_PASSKEY_REMOVED]: OcsfAuthenticationActivity.OTHER,
177
178
  [CoreAuditableEventType.USER_PASSWORD_CHANGED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Change(8), but this event's category routes it to 3002, which does not
@@ -181,6 +182,13 @@ export const OCSF_ACTIVITY_BY_EVENT_TYPE = {
181
182
  [CoreAuditableEventType.USER_PASSWORD_SET]: OcsfAuthenticationActivity.OTHER,
182
183
  [CoreAuditableEventType.USER_REFRESH_TOKEN_REUSE_DETECTED]: OcsfAuthenticationActivity.OTHER,
183
184
  [CoreAuditableEventType.USER_SESSION_EXPIRED]: OcsfAuthenticationActivity.LOGOFF,
185
+ /*
186
+ * LOGOFF, like the expiry above: the session is terminated and no longer exists, which is what the
187
+ * OCSF verb states. The DIFFERENCE between the two — time elapsed versus a cap displacing a live
188
+ * chain — is not expressible in `activity_id`, so it rides the typed eventData and the WARNING
189
+ * severity instead. Mapping it to OTHER would have lost the one thing a SIEM correlates on.
190
+ */
191
+ [CoreAuditableEventType.USER_SESSION_EVICTED]: OcsfAuthenticationActivity.LOGOFF,
184
192
  [CoreAuditableEventType.USER_SMS_OTP_FAILED]: OcsfAuthenticationActivity.LOGON,
185
193
  [CoreAuditableEventType.USER_SMS_OTP_SENT]: OcsfAuthenticationActivity.PREAUTH,
186
194
  [CoreAuditableEventType.USER_SMS_OTP_VERIFIED]: OcsfAuthenticationActivity.LOGON,
@@ -190,6 +198,10 @@ export const OCSF_ACTIVITY_BY_EVENT_TYPE = {
190
198
  [CoreAuditableEventType.USER_TOKEN_REFRESHED]: OcsfAuthenticationActivity.OTHER,
191
199
  [CoreAuditableEventType.USER_TOTP_DISABLED]: OcsfAuthenticationActivity.OTHER,
192
200
  // ── AUTHORIZATION ──
201
+ // A file upload grant delegates one upload under the minter's authority; issuing/revoking it is not
202
+ // one of 6003's CRUD verbs on a resource.
203
+ [CoreAuditableEventType.FILE_UPLOAD_GRANT_ISSUED]: OcsfApiActivity.OTHER,
204
+ [CoreAuditableEventType.FILE_UPLOAD_GRANT_REVOKED]: OcsfApiActivity.OTHER,
193
205
  [CoreAuditableEventType.APPLICATION_SUPER_ADMIN_FLOOR_BREACHED]: OcsfApiActivity.OTHER,
194
206
  [CoreAuditableEventType.CROSS_TENANT_ADMINISTRATIVE_ACCESS]: OcsfApiActivity.OTHER,
195
207
  [CoreAuditableEventType.OAUTH2_PROVIDER_BLOCKED]: OcsfApiActivity.OTHER,
@@ -208,6 +220,14 @@ export const OCSF_ACTIVITY_BY_EVENT_TYPE = {
208
220
  [CoreAuditableEventType.USER_APP_ROLES_CHANGED]: OcsfApiActivity.OTHER, // a role change is not one of 6003 CRUD verbs
209
221
  // ── DATA_ACCESS ──
210
222
  [CoreAuditableEventType.FIELD_ACCESS]: OcsfApiActivity.READ,
223
+ // CREATE, not OTHER: redeeming a grant IS the creation of one FILES row — the one DATA_ACCESS event
224
+ // whose CRUD verb is derivable from the type, like PLATFORM_DIRECTORY_ACCESS below.
225
+ [CoreAuditableEventType.FILE_UPLOAD_GRANT_REDEEMED]: OcsfApiActivity.CREATE,
226
+ // OTHER for both (#506): a scan CONCLUSION is not one of 6003's CRUD verbs on a resource. The file
227
+ // row is updated as a consequence, but the event names the finding, not the write — mapping it to
228
+ // UPDATE would tell a SIEM that a record was modified and lose that malware was found.
229
+ [CoreAuditableEventType.FILE_MALWARE_DETECTED]: OcsfApiActivity.OTHER,
230
+ [CoreAuditableEventType.FILE_MALWARE_SCAN_FAILED]: OcsfApiActivity.OTHER,
211
231
  [CoreAuditableEventType.MACHINE_ACCESS]: OcsfApiActivity.OTHER, // names a surface reach (A2A/MCP turn), not a CRUD verb on a resource
212
232
  // READ, not OTHER: enumerating a directory IS a read of resource rows, and it is the one case
213
233
  // where the CRUD verb IS derivable from the event type — the event only ever names a collection
@@ -238,6 +258,31 @@ export const OCSF_ACTIVITY_BY_EVENT_TYPE = {
238
258
  [CoreAuditableEventType.ORGANIZATION_PROFILE_UPDATED]: OcsfEntityManagementActivity.UPDATE,
239
259
  [CoreAuditableEventType.ORGANIZATION_RESTORED]: OcsfEntityManagementActivity.OTHER, // un-deletion has no 3004 member; Resume(13) is unsuspend and Activate(10) is a transient engine state
240
260
  [CoreAuditableEventType.ORGANIZATION_SIEM_EXPORT_CONFIGURED]: OcsfEntityManagementActivity.UPDATE,
261
+ // Organization provider credentials. The credential row IS the managed entity, so the three
262
+ // lifecycle verbs map onto its CRUD members directly — CREATE for the first grant, UPDATE for a
263
+ // rotation (the entity persists, its secret changes), DELETE for the withdrawal.
264
+ [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_SET]: OcsfEntityManagementActivity.CREATE,
265
+ [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED]: OcsfEntityManagementActivity.UPDATE,
266
+ // READ(2), not OTHER: resolving the credential for an outbound call reads the managed entity, and
267
+ // READ is what an OCSF consumer's "who accessed this secret" query is written against. Mapping a
268
+ // spend to OTHER(99) would take the highest-value events in this family out of every stock rule.
269
+ [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_USED]: OcsfEntityManagementActivity.READ,
270
+ [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_DELETED]: OcsfEntityManagementActivity.DELETE,
271
+ // A person's own credential maps identically to the tenant's: the OCSF activity describes what was
272
+ // done to the managed entity, and that is the same verb regardless of who owns it. WHO owns it is
273
+ // carried by the event data, not by the activity — collapsing the two would make "who accessed
274
+ // this secret" queries miss half their population.
275
+ [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_SET]: OcsfEntityManagementActivity.CREATE,
276
+ [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_ROTATED]: OcsfEntityManagementActivity.UPDATE,
277
+ [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_USED]: OcsfEntityManagementActivity.READ,
278
+ [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_DELETED]: OcsfEntityManagementActivity.DELETE,
279
+ // CREATE, like the `_SET` siblings: what OCSF records is the verb done to the managed entity, and
280
+ // a connection coming into existence is a creation however it was obtained. The fact that this one
281
+ // came from a consent ceremony rather than a paste lives in the event DATA — an OCSF activity is
282
+ // deliberately a small closed vocabulary, and stretching it to carry provenance would make it a
283
+ // worse index of what happened, not a better one.
284
+ [CoreAuditableEventType.ORGANIZATION_PROVIDER_CONNECTION_GRANTED]: OcsfEntityManagementActivity.CREATE,
285
+ [CoreAuditableEventType.USER_PROVIDER_CONNECTION_GRANTED]: OcsfEntityManagementActivity.CREATE,
241
286
  [CoreAuditableEventType.ORGANIZATION_SSO_CONFIGURATION_CHANGED]: OcsfEntityManagementActivity.UPDATE,
242
287
  // An application authentication-policy change is a configuration entity being UPDATED — the same
243
288
  // OCSF shape as the SSO / SIEM / SCIM configuration-change siblings around it. (Confirmed by the
@@ -1 +1 @@
1
- {"version":3,"file":"ocsf-activity-mapping.backend.utils.js","sourceRoot":"","sources":["../../../../../../../src/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OCSF `activity_id` — the normalised verb, resolved per Wildo audit event type.\n *\n * Until this table existed every OCSF document we emitted carried `activity_id: 0` (Unknown), which\n * also pinned `type_uid` to `class_uid * 100`. That is the single largest fidelity loss in the OCSF\n * projection: `activity_id` is the axis OCSF uses to separate events WITHIN a class, so collapsing it\n * makes a logon indistinguishable from a logoff to any consumer that groups by `type_uid`.\n *\n * ## Three values, three different claims\n *\n * | Value | Means | When we use it |\n * |---|---|---|\n * | a specific member | the published description matches this event | the description matched — never the caption alone |\n * | `OTHER` (99) | in the class's domain, absent from its enum | with `activity_name` carrying our event type, which is what the schema asks for |\n * | `UNKNOWN` (0) | we cannot say | application-defined event types the engine cannot enumerate |\n *\n * `OTHER` is not a shrug. The schema defines it as \"the event activity is not mapped. See the\n * `activity_name` attribute, which contains a data source specific value\" — so it is a positive\n * statement plus an obligation, and it strictly beats `UNKNOWN` for any event we understand.\n *\n * ## Read descriptions, not captions\n *\n * Authentication's `Authentication Ticket` (3), `Service Ticket Request` (4) and `Service Ticket\n * Renew` (5) read like a natural home for OAuth token issuance and refresh. Their descriptions are\n * explicitly **Kerberos** (\"A Kerberos service ticket was renewed\"), so every OAuth token event here\n * is `OTHER` instead. Mapping those from the captions would have been a fabrication that validated\n * perfectly.\n *\n * ## A structural observation, deliberately NOT acted on here\n *\n * A Wildo event's audit CATEGORY selects the OCSF class, and for several events the natural activity\n * exists in a DIFFERENT class than the category picks: `USER_PASSWORD_CHANGED`, `USER_MFA_ENABLED`,\n * `USER_ACCOUNT_LOCKED` and friends are `AUTHENTICATION` (class 3002), while `Password Change` (8),\n * `Enable MFA Factors` (12) and `Lock` (6) are published by `user_management` (3007). Those rows are\n * `OTHER` with the mismatch named on each. Re-categorising them would change SIEM category filtering\n * for existing tenants, so it is a product decision, not a mapping fix.\n *\n * spec-cite: OCSF schema 1.9.0 — `schema.ocsf.io/api/1.9.0/classes/{authentication,api_activity,\n * entity_management,user_management}`, the `activity_id` enum and `activity_name` attribute of each.\n */\n\nimport { AuditEventCategory, AuthMethod, CoreAuditableEventType, CoreResourceOperation, getAuditEventClassification } from '@wildo-ai/saas-models';\nimport { OCSF_CLASS_BY_AUDIT_CATEGORY, OcsfClassUid } from './ocsf-class-mapping.backend.utils';\n\n/** `0` and `99` mean the same thing in every OCSF class, so they are named once. */\nexport enum OcsfCommonActivity {\n /** \"The event activity is unknown.\" */\n UNKNOWN = 0,\n /** \"The event activity is not mapped. See the `activity_name` attribute…\" */\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 3002 (authentication). */\nexport enum OcsfAuthenticationActivity {\n /** \"A new logon session was requested.\" Includes FAILED attempts — the verb is the request; the outcome rides `status_id`. */\n LOGON = 1,\n /** \"A logon session was terminated and no longer exists.\" */\n LOGOFF = 2,\n /** \"A preauthentication stage was engaged.\" Covers issuing an OTP or magic link: a stage BEFORE authentication. */\n PREAUTH = 6,\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 6003 (api_activity). */\nexport enum OcsfApiActivity {\n CREATE = 1,\n /** \"Read\" — the only CRUD verb our authorization/data-access events reliably carry. */\n READ = 2,\n UPDATE = 3,\n DELETE = 4,\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 3004 (entity_management). */\nexport enum OcsfEntityManagementActivity {\n CREATE = 1,\n READ = 2,\n UPDATE = 3,\n DELETE = 4,\n MOVE = 5,\n /** \"Enroll an existing managed entity.\" A member joining a tenant. */\n ENROLL = 6,\n UNENROLL = 7,\n ENABLE = 8,\n DISABLE = 9,\n ACTIVATE = 10,\n DEACTIVATE = 11,\n SUSPEND = 12,\n /** \"Resume (unsuspend) an existing managed entity.\" SUSPENDED is the only state our activate runs from. */\n RESUME = 13,\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 3007 (user_management). */\nexport enum OcsfUserManagementActivity {\n CREATE = 1,\n UPDATE = 2,\n DELETE = 3,\n ENABLE = 4,\n DISABLE = 5,\n LOCK = 6,\n UNLOCK = 7,\n PASSWORD_CHANGE = 8,\n PASSWORD_RESET = 9,\n ATTACH_POLICIES = 10,\n DETACH_POLICIES = 11,\n ENABLE_MFA_FACTORS = 12,\n DISABLE_MFA_FACTORS = 13,\n ASSIGN_PRIVILEGES = 14,\n REMOVE_PRIVILEGES = 15,\n ASSIGN_ROLES = 16,\n REMOVE_ROLES = 17,\n ADD_PROGRAMMATIC_CREDENTIALS = 18,\n REMOVE_PROGRAMMATIC_CREDENTIALS = 19,\n OTHER = 99,\n}\n\n/**\n * Every published activity id, per class — the membership check's source of truth.\n *\n * An activity number is only meaningful WITH its class: `1` is `Logon` in 3002 and `Create` in 6003.\n * So a row that assigns the right number under the wrong class is silently wrong, and nothing about\n * the emitted document would look malformed. {@link assertActivitiesBelongToTheirClass} closes that.\n */\nconst PUBLISHED_ACTIVITIES_BY_CLASS: Readonly<Record<OcsfClassUid, ReadonlySet<number>>> = {\n [OcsfClassUid.AUTHENTICATION]: new Set(Object.values(OcsfAuthenticationActivity).filter((v): v is number => typeof v === 'number')),\n [OcsfClassUid.API_ACTIVITY]: new Set(Object.values(OcsfApiActivity).filter((v): v is number => typeof v === 'number')),\n [OcsfClassUid.ENTITY_MANAGEMENT]: new Set(Object.values(OcsfEntityManagementActivity).filter((v): v is number => typeof v === 'number')),\n [OcsfClassUid.USER_MANAGEMENT]: new Set(Object.values(OcsfUserManagementActivity).filter((v): v is number => typeof v === 'number')),\n};\n\n/**\n * The activity each core audit event resolves to.\n *\n * **Total over `CoreAuditableEventType`**, so a new core event type cannot be added without deciding\n * its activity — the same shape the classification map now has, and for the same reason: an open set\n * silently defaulting is how `activity_id` stayed `Unknown` for every event in the first place.\n */\nexport const OCSF_ACTIVITY_BY_EVENT_TYPE: Readonly<Record<CoreAuditableEventType, number>> = {\n\n // ── AUTHENTICATION ──\n [CoreAuditableEventType.EMERGENCY_ACCESS_USED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.MACHINE_AUTH_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.MACHINE_AUTH_SUCCESS]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.OAUTH_CIMD_CLIENT_REFUSED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CODE_EXCHANGE_FAILED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_DYNAMIC_CLIENT_REGISTERED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_TOKEN_REFRESHED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_TOKEN_REVOKED]: OcsfAuthenticationActivity.OTHER,\n // Unlike the token-revoke sibling above (a no-oracle RFC 7009 ATTEMPT → Other), an RP-Initiated Logout\n // terminates a real user SESSION, so it is a genuine OCSF Logoff — matching USER_LOGOUT / SAML_SLO_COMPLETED.\n [CoreAuditableEventType.OAUTH_RP_INITIATED_LOGOUT]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.ONE_OFF_TOKEN_CREATED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.ONE_OFF_TOKEN_EXCHANGED]: OcsfAuthenticationActivity.OTHER,\n // Admin token-lifecycle, not an OCSF user LOGOFF — Other(99) + activity_name, matching the family.\n [CoreAuditableEventType.ONE_OFF_TOKEN_REVOKED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.SAML_ASSERTION_REPLAY_DETECTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.SAML_LOGIN_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.SAML_LOGIN_INITIATED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.SAML_LOGIN_SUCCESS]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.SAML_SLO_COMPLETED]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.SAML_SLO_INITIATED]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.USER_ACCOUNT_LOCKED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Lock(6), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_CROSS_FRONTEND_HANDOFF_ISSUED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_IDENTITY_LINK_REMOVED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_LOGIN]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_LOGIN_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_LOGOUT]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.USER_MAGIC_LINK_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_MAGIC_LINK_SENT]: OcsfAuthenticationActivity.PREAUTH,\n [CoreAuditableEventType.USER_MAGIC_LINK_VERIFIED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_MFA_DISABLED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Disable MFA Factors(13), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_MFA_EMAIL_OTP_SENT]: OcsfAuthenticationActivity.PREAUTH,\n [CoreAuditableEventType.USER_MFA_ENABLED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Enable MFA Factors(12), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_MFA_SETUP_COMPLETED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_MFA_SETUP_STARTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSKEY_AUTHENTICATION_FAILURE]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_PASSKEY_AUTHENTICATION_SUCCESS]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_PASSKEY_REGISTERED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSKEY_REMOVED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSWORD_CHANGED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Change(8), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_PASSWORD_RESET_COMPLETED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Reset(9), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_PASSWORD_RESET_FORCED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Reset(9), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_PASSWORD_RESET_REQUESTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSWORD_SET]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_REFRESH_TOKEN_REUSE_DETECTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_SESSION_EXPIRED]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.USER_SMS_OTP_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_SMS_OTP_SENT]: OcsfAuthenticationActivity.PREAUTH,\n [CoreAuditableEventType.USER_SMS_OTP_VERIFIED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_SSO_ENFORCEMENT_BLOCKED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_SSO_LOGIN]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_SSO_LOGIN_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_TOKEN_REFRESHED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_TOTP_DISABLED]: OcsfAuthenticationActivity.OTHER,\n\n // ── AUTHORIZATION ──\n [CoreAuditableEventType.APPLICATION_SUPER_ADMIN_FLOOR_BREACHED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.CROSS_TENANT_ADMINISTRATIVE_ACCESS]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH2_PROVIDER_BLOCKED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_BINDING_VIOLATION]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_DENIED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_GRANTED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_GRANT_PERSISTED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_DELEGATED_TOKEN_ISSUED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_ROLE_CHANGED]: OcsfApiActivity.OTHER, // a role change is not one of 6003 CRUD verbs\n [CoreAuditableEventType.ORGANIZATION_OWNER_FLOOR_BREACHED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.ORGANIZATION_UNIT_MEMBER_REMOVED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.ORGANIZATION_UNIT_MEMBER_ROLE_CHANGED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.PLATFORM_ACCESS_GRANT_LIFECYCLE]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.RESOURCE_OPERATION_DENIED]: OcsfApiActivity.OTHER, // the CRUD verb is runtime data (the operation), not derivable from the event type\n [CoreAuditableEventType.RESOURCE_OPERATION_PERFORMED]: OcsfApiActivity.OTHER, // the CRUD verb is runtime data (the operation), not derivable from the event type\n [CoreAuditableEventType.USER_APP_ROLES_CHANGED]: OcsfApiActivity.OTHER, // a role change is not one of 6003 CRUD verbs\n\n // ── DATA_ACCESS ──\n [CoreAuditableEventType.FIELD_ACCESS]: OcsfApiActivity.READ,\n [CoreAuditableEventType.MACHINE_ACCESS]: OcsfApiActivity.OTHER, // names a surface reach (A2A/MCP turn), not a CRUD verb on a resource\n // READ, not OTHER: enumerating a directory IS a read of resource rows, and it is the one case\n // where the CRUD verb IS derivable from the event type — the event only ever names a collection\n // read (list/search/count), never a mutation.\n [CoreAuditableEventType.PLATFORM_DIRECTORY_ACCESS]: OcsfApiActivity.READ,\n [CoreAuditableEventType.RETAINED_DATA_ACCESS]: OcsfApiActivity.READ,\n [CoreAuditableEventType.SUBJECT_DATA_EXPORT]: OcsfApiActivity.READ,\n [CoreAuditableEventType.COLLECTION_DATA_EXPORT]: OcsfApiActivity.READ,\n [CoreAuditableEventType.HTTP_API_READ_THROUGH_ACCESS]: OcsfApiActivity.READ,\n // D6 stance 6b: the declared external-erasure operation DELETED remote rows.\n [CoreAuditableEventType.HTTP_API_EXTERNAL_ERASURE]: OcsfApiActivity.DELETE,\n // D6 stance 6c: nothing was deleted — the event records a deliberate non-action.\n [CoreAuditableEventType.HTTP_API_NON_ERASURE_ACKNOWLEDGED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.SYSTEM_CONTEXT_READ]: OcsfApiActivity.READ,\n [CoreAuditableEventType.SYSTEM_CONTEXT_WRITE]: OcsfApiActivity.OTHER, // static fallback only — refined per emission from eventData.operation (CREATE | UPDATE | UPDATE_MANY)\n\n // ── ORG_MANAGEMENT ──\n [CoreAuditableEventType.ORGANIZATION_ACTIVATED]: OcsfEntityManagementActivity.RESUME,\n [CoreAuditableEventType.ORGANIZATION_CREATED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.ORGANIZATION_DELETED]: OcsfEntityManagementActivity.DELETE,\n [CoreAuditableEventType.ORGANIZATION_DELETION_REQUESTED]: OcsfEntityManagementActivity.OTHER, // marks the tenant and opens a window; nothing is deleted yet, so Delete(4) would overstate it\n [CoreAuditableEventType.ORGANIZATION_MEMBER_INVITED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_JOINED]: OcsfEntityManagementActivity.ENROLL,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_REMOVED]: OcsfEntityManagementActivity.UNENROLL,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_STATUS_CHANGED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_NOTIFICATIONS_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_PREFERENCES_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_PROFILE_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_RESTORED]: OcsfEntityManagementActivity.OTHER, // un-deletion has no 3004 member; Resume(13) is unsuspend and Activate(10) is a transient engine state\n [CoreAuditableEventType.ORGANIZATION_SIEM_EXPORT_CONFIGURED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_SSO_CONFIGURATION_CHANGED]: OcsfEntityManagementActivity.UPDATE,\n // An application authentication-policy change is a configuration entity being UPDATED — the same\n // OCSF shape as the SSO / SIEM / SCIM configuration-change siblings around it. (Confirmed by the\n // session that added the event: UPDATE is the intended activity.)\n [CoreAuditableEventType.APPLICATION_AUTH_POLICY_CHANGED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_SUSPENDED]: OcsfEntityManagementActivity.SUSPEND,\n [CoreAuditableEventType.ORGANIZATION_UNIT_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.SAML_CERT_EXPIRING]: OcsfEntityManagementActivity.OTHER,\n [CoreAuditableEventType.SAML_METADATA_PARSED]: OcsfEntityManagementActivity.OTHER,\n [CoreAuditableEventType.SCIM_PROVISIONING_CONFIG_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.SCIM_PROVISIONING_FAILED]: OcsfEntityManagementActivity.OTHER,\n [CoreAuditableEventType.SCIM_TOKEN_CREATED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.SCIM_TOKEN_GENERATED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.SCIM_TOKEN_REVOKED]: OcsfEntityManagementActivity.DELETE,\n [CoreAuditableEventType.SCIM_TOKEN_ROTATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.WEBHOOK_ENDPOINT_TEST_DISPATCHED]: OcsfEntityManagementActivity.OTHER,\n\n // ── USER_LIFECYCLE ──\n [CoreAuditableEventType.RESOURCE_STATUS_TRANSITION_PERFORMED]: OcsfUserManagementActivity.OTHER,\n [CoreAuditableEventType.SAML_EMAIL_CHANGED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.SCIM_USER_DEACTIVATED]: OcsfUserManagementActivity.DISABLE,\n [CoreAuditableEventType.SCIM_USER_PROVISIONED]: OcsfUserManagementActivity.CREATE,\n [CoreAuditableEventType.SCIM_USER_UPDATED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_CREATED]: OcsfUserManagementActivity.CREATE,\n [CoreAuditableEventType.USER_DELETED]: OcsfUserManagementActivity.DELETE,\n [CoreAuditableEventType.USER_EMAIL_VERIFIED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_PHONE_VERIFICATION_FAILED]: OcsfUserManagementActivity.OTHER,\n [CoreAuditableEventType.USER_PHONE_VERIFIED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_REGISTERED]: OcsfUserManagementActivity.CREATE,\n [CoreAuditableEventType.USER_UPDATED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_VERIFICATION_EMAIL_RESENT]: OcsfUserManagementActivity.OTHER,\n};\n\n/**\n * Fail at module load if any row assigns an activity its own class does not publish.\n *\n * This is the check the table exists to make possible. Activity numbers are class-scoped and collide\n * across classes, so a misfiled row produces a document that is structurally valid, schema-conformant,\n * and semantically wrong — the failure mode nothing downstream can catch.\n */\nfunction assertActivitiesBelongToTheirClass(): void {\n const offenders: string[] = [];\n for (const [eventType, activityId] of Object.entries(OCSF_ACTIVITY_BY_EVENT_TYPE)) {\n const category = getAuditEventClassification(eventType).category;\n const descriptor = OCSF_CLASS_BY_AUDIT_CATEGORY[category as AuditEventCategory];\n if (!PUBLISHED_ACTIVITIES_BY_CLASS[descriptor.classUid].has(activityId)) {\n offenders.push(`${eventType} → activity ${activityId} is not published by class ${descriptor.classUid}`);\n }\n }\n if (offenders.length > 0) {\n throw new Error(`OCSF activity mapping assigns activities their class does not publish:\\n ${offenders.join('\\n ')}`);\n }\n}\nassertActivitiesBelongToTheirClass();\n\n/**\n * Resolve the OCSF activity for an event type.\n *\n * Application-defined event types are ordinary strings the engine cannot enumerate, so they resolve to\n * `UNKNOWN` — the one case where \"we cannot say\" is the truthful answer.\n */\nexport function resolveOcsfActivityId(eventType: string): number {\n return OCSF_ACTIVITY_BY_EVENT_TYPE[eventType as CoreAuditableEventType] ?? OcsfCommonActivity.UNKNOWN;\n}\n\n/**\n * The `activity_name` companion for an `OTHER` assignment, or `undefined` when the activity is specific.\n *\n * The schema's own definition of `OTHER` points the reader at `activity_name`, so emitting `OTHER`\n * without it discards the very information the value promises is available.\n *\n * Takes the RESOLVED activity rather than re-deriving it from the event type. That distinction became\n * load-bearing when 6003 gained runtime refinement: an event whose TABLE entry is `Other` but whose\n * refined activity is `Update` must NOT carry `activity_name`, and a version of this that re-derived\n * from the event type would have emitted both — a specific activity plus a companion asserting it was\n * unmapped. Two ways to answer one question is the drift this contract exists to prevent.\n */\nexport function resolveOcsfActivityName(activityId: number, eventType: string): string | undefined {\n return activityId === OcsfCommonActivity.OTHER ? eventType : undefined;\n}\n\n/**\n * OCSF `auth_protocol_id` — the NORMALISED authentication protocol.\n *\n * spec-cite: OCSF 1.9.0 — `schema.ocsf.io/api/1.9.0/classes/authentication`, the `auth_protocol_id`\n * enum. `auth_protocol` is documented as \"the authentication protocol as defined by the caption of\n * `auth_protocol_id`. In the case of Other, it is defined by the event source.\"\n */\nexport enum OcsfAuthProtocolId {\n UNKNOWN = 0,\n NTLM = 1,\n KERBEROS = 2,\n DIGEST = 3,\n OPENID = 4,\n SAML = 5,\n OAUTH_2_0 = 6,\n PAP = 7,\n CHAP = 8,\n EAP = 9,\n RADIUS = 10,\n BASIC_AUTHENTICATION = 11,\n LDAP = 12,\n OTHER = 99,\n}\n\n/** The published CAPTION for each id — what `auth_protocol` must carry when the id is not `Other`. */\nconst OCSF_AUTH_PROTOCOL_CAPTION: Readonly<Record<OcsfAuthProtocolId, string>> = {\n [OcsfAuthProtocolId.UNKNOWN]: 'Unknown',\n [OcsfAuthProtocolId.NTLM]: 'NTLM',\n [OcsfAuthProtocolId.KERBEROS]: 'Kerberos',\n [OcsfAuthProtocolId.DIGEST]: 'Digest',\n [OcsfAuthProtocolId.OPENID]: 'OpenID',\n [OcsfAuthProtocolId.SAML]: 'SAML',\n [OcsfAuthProtocolId.OAUTH_2_0]: 'OAUTH 2.0',\n [OcsfAuthProtocolId.PAP]: 'PAP',\n [OcsfAuthProtocolId.CHAP]: 'CHAP',\n [OcsfAuthProtocolId.EAP]: 'EAP',\n [OcsfAuthProtocolId.RADIUS]: 'RADIUS',\n [OcsfAuthProtocolId.BASIC_AUTHENTICATION]: 'Basic Authentication',\n [OcsfAuthProtocolId.LDAP]: 'LDAP',\n [OcsfAuthProtocolId.OTHER]: 'Other',\n};\n\n/**\n * The `AuthMethod` members that ARE a protocol OCSF normalises. Everything else resolves to `Other`.\n *\n * Deliberately partial. Three members are absent for a reason, and each absence is a decision:\n *\n * - `PASSWORD` is NOT `Basic Authentication` (11). Basic Auth is an HTTP transport scheme (RFC 7617);\n * a user typing a password into a form is not that, and the resemblance is only in the English word.\n * - `MAGIC_LINK`, `TOTP`, `SMS_OTP`, `EMAIL_OTP` and `PASSKEY` name no protocol in the published enum.\n * WebAuthn/FIDO2 in particular is absent from OCSF 1.9.0 — mapping a passkey to `Other` is the\n * accurate answer, not a shortfall.\n * - `EXTERNAL_OAUTH2` DOES map: it is OAuth 2.0 by construction.\n *\n * The `ORG_` prefix on the SSO members is SCOPE, not protocol — an organization-restricted SAML login\n * is still SAML — so those normalise cleanly.\n */\nconst OCSF_AUTH_PROTOCOL_BY_AUTH_METHOD: Readonly<Partial<Record<AuthMethod, OcsfAuthProtocolId>>> = {\n [AuthMethod.ORG_SAML]: OcsfAuthProtocolId.SAML,\n [AuthMethod.ORG_OPENID_CONNECT]: OcsfAuthProtocolId.OPENID,\n [AuthMethod.EXTERNAL_OAUTH2]: OcsfAuthProtocolId.OAUTH_2_0,\n};\n\n/** `auth_protocol` + `auth_protocol_id`, resolved together because the schema couples them. */\nexport interface OcsfAuthProtocol {\n readonly protocol: string;\n readonly protocolId: OcsfAuthProtocolId;\n}\n\n/**\n * Resolve the OCSF protocol pair for an envelope's `authMethod`.\n *\n * The two attributes are resolved TOGETHER because the schema defines one in terms of the other: when\n * the id is normalised, the string must be that id's published caption; only under `Other` may the\n * string be the producer's own value. Returning them separately invites the pairing to drift, which is\n * exactly how this shipped wrong the first time (`org_saml` with no id at all).\n *\n * `authMethod` is an OPEN string on the envelope — applications define their own — so anything outside\n * the framework's own `AuthMethod` vocabulary lands on `Other` carrying its raw value, which is\n * precisely what `Other` is for.\n */\nexport function resolveOcsfAuthProtocol(authMethod: string): OcsfAuthProtocol {\n const normalised = OCSF_AUTH_PROTOCOL_BY_AUTH_METHOD[authMethod as AuthMethod];\n return normalised === undefined\n ? { protocol: authMethod, protocolId: OcsfAuthProtocolId.OTHER }\n : { protocol: OCSF_AUTH_PROTOCOL_CAPTION[normalised], protocolId: normalised };\n}\n\n/**\n * The CRUD verb an API Activity (6003) event performed, mapped from the framework's core operation.\n *\n * spec-cite: OCSF 1.9.0 — `api_activity.activity_id` enum: 0 Unknown, 1 Create, 2 Read, 3 Update,\n * 4 Delete, 99 Other.\n *\n * The bulk forms collapse onto their singular verb: OCSF's activity names WHAT was done, and the\n * cardinality is carried separately by the envelope (`isBulkOperation` / `affectedRecordCount`).\n * `COUNT` is a Read — it answers a question about existing rows without changing any.\n */\nconst OCSF_API_ACTIVITY_BY_CORE_OPERATION: Readonly<Record<CoreResourceOperation, OcsfApiActivity>> = {\n [CoreResourceOperation.CREATE]: OcsfApiActivity.CREATE,\n [CoreResourceOperation.CREATE_MANY]: OcsfApiActivity.CREATE,\n [CoreResourceOperation.READ]: OcsfApiActivity.READ,\n [CoreResourceOperation.LIST]: OcsfApiActivity.READ,\n [CoreResourceOperation.SEARCH]: OcsfApiActivity.READ,\n [CoreResourceOperation.COUNT]: OcsfApiActivity.READ,\n [CoreResourceOperation.UPDATE]: OcsfApiActivity.UPDATE,\n [CoreResourceOperation.UPDATE_MANY]: OcsfApiActivity.UPDATE,\n [CoreResourceOperation.DELETE]: OcsfApiActivity.DELETE,\n [CoreResourceOperation.DELETE_MANY]: OcsfApiActivity.DELETE,\n};\n\n/**\n * The `eventData` keys that can name a 6003 event's CRUD verb, in precedence order.\n *\n * Three keys rather than one because the emitters spell it differently and each is authoritative for\n * its own event: `resourceOperationLike` is the core semantics a CUSTOM verb borrows (a `suspend`\n * behaving as an `update`), `operationIdentifier` is the verb on resource-operation and field-access\n * events, and `operation` is what `logSystemContextWrite` records — typed `CREATE | UPDATE |\n * UPDATE_MANY`, so it always resolves.\n *\n * Enumerated by the QUESTION (\"what names the verb on a 6003 event?\") rather than by one emitter's\n * field name, which is how `operation` was missed on the first pass.\n */\nconst OCSF_API_VERB_EVENT_DATA_KEYS = ['resourceOperationLike', 'operationIdentifier', 'operation'] as const;\n\n/**\n * Refine a 6003 event's `activity_id` from RUNTIME data, when the event type alone cannot say.\n *\n * Class 6003 is organised around the CRUD axis, and the resource-operation events (`performed` /\n * `denied`) are the bulk of what we route there — yet the event TYPE is the same string for a create\n * and a delete. So the table maps them to `Other`, and every authorization event landed in one\n * undifferentiated bucket: the same collapse `activity_id` being pinned to `Unknown` used to cause,\n * surviving one layer down after that was fixed.\n *\n * The verb is in the envelope — under one of {@link OCSF_API_VERB_EVENT_DATA_KEYS}, in that precedence\n * order. Anything else (a custom verb borrowing nothing) keeps `Other`, where `activity_name` already\n * carries the event type.\n *\n * Two consequences that are DECISIONS, not side effects:\n *\n * - **`FIELD_ACCESS` refines away from its static `Read`.** It carries `operationIdentifier`, so a\n * secret exposed during a create now reads as Create(1). That is correct: 6003's activity names what\n * the API CALL did, and the field-access nature rides `metadata.event_code`. The static `Read` remains\n * the fallback for an emission that names no operation.\n * - **`SYSTEM_CONTEXT_WRITE` stops being `Other`.** Its table comment says \"neither Create nor Update is\n * true of every emission\" — true of a STATIC mapping and not a permanent conclusion, because at\n * runtime `operation` says exactly which. This matters more than most: it is the ACL-bypass write.\n */\nexport function refineOcsfApiActivity(eventData: unknown, fallback: number): number {\n if (eventData === null || typeof eventData !== 'object') return fallback;\n const record = eventData as Readonly<Record<string, unknown>>;\n for (const key of OCSF_API_VERB_EVENT_DATA_KEYS) {\n const candidate = record[key];\n if (typeof candidate !== 'string') continue;\n const mapped = OCSF_API_ACTIVITY_BY_CORE_OPERATION[candidate as CoreResourceOperation];\n if (mapped !== undefined) return mapped;\n }\n return fallback;\n}\n"]}
1
+ {"version":3,"file":"ocsf-activity-mapping.backend.utils.js","sourceRoot":"","sources":["../../../../../../../src/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OCSF `activity_id` — the normalised verb, resolved per Wildo audit event type.\n *\n * Until this table existed every OCSF document we emitted carried `activity_id: 0` (Unknown), which\n * also pinned `type_uid` to `class_uid * 100`. That is the single largest fidelity loss in the OCSF\n * projection: `activity_id` is the axis OCSF uses to separate events WITHIN a class, so collapsing it\n * makes a logon indistinguishable from a logoff to any consumer that groups by `type_uid`.\n *\n * ## Three values, three different claims\n *\n * | Value | Means | When we use it |\n * |---|---|---|\n * | a specific member | the published description matches this event | the description matched — never the caption alone |\n * | `OTHER` (99) | in the class's domain, absent from its enum | with `activity_name` carrying our event type, which is what the schema asks for |\n * | `UNKNOWN` (0) | we cannot say | application-defined event types the engine cannot enumerate |\n *\n * `OTHER` is not a shrug. The schema defines it as \"the event activity is not mapped. See the\n * `activity_name` attribute, which contains a data source specific value\" — so it is a positive\n * statement plus an obligation, and it strictly beats `UNKNOWN` for any event we understand.\n *\n * ## Read descriptions, not captions\n *\n * Authentication's `Authentication Ticket` (3), `Service Ticket Request` (4) and `Service Ticket\n * Renew` (5) read like a natural home for OAuth token issuance and refresh. Their descriptions are\n * explicitly **Kerberos** (\"A Kerberos service ticket was renewed\"), so every OAuth token event here\n * is `OTHER` instead. Mapping those from the captions would have been a fabrication that validated\n * perfectly.\n *\n * ## A structural observation, deliberately NOT acted on here\n *\n * A Wildo event's audit CATEGORY selects the OCSF class, and for several events the natural activity\n * exists in a DIFFERENT class than the category picks: `USER_PASSWORD_CHANGED`, `USER_MFA_ENABLED`,\n * `USER_ACCOUNT_LOCKED` and friends are `AUTHENTICATION` (class 3002), while `Password Change` (8),\n * `Enable MFA Factors` (12) and `Lock` (6) are published by `user_management` (3007). Those rows are\n * `OTHER` with the mismatch named on each. Re-categorising them would change SIEM category filtering\n * for existing tenants, so it is a product decision, not a mapping fix.\n *\n * spec-cite: OCSF schema 1.9.0 — `schema.ocsf.io/api/1.9.0/classes/{authentication,api_activity,\n * entity_management,user_management}`, the `activity_id` enum and `activity_name` attribute of each.\n */\n\nimport { AuditEventCategory, AuthMethod, CoreAuditableEventType, CoreResourceOperation, getAuditEventClassification } from '@wildo-ai/saas-models';\nimport { OCSF_CLASS_BY_AUDIT_CATEGORY, OcsfClassUid } from './ocsf-class-mapping.backend.utils';\n\n/** `0` and `99` mean the same thing in every OCSF class, so they are named once. */\nexport enum OcsfCommonActivity {\n /** \"The event activity is unknown.\" */\n UNKNOWN = 0,\n /** \"The event activity is not mapped. See the `activity_name` attribute…\" */\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 3002 (authentication). */\nexport enum OcsfAuthenticationActivity {\n /** \"A new logon session was requested.\" Includes FAILED attempts — the verb is the request; the outcome rides `status_id`. */\n LOGON = 1,\n /** \"A logon session was terminated and no longer exists.\" */\n LOGOFF = 2,\n /** \"A preauthentication stage was engaged.\" Covers issuing an OTP or magic link: a stage BEFORE authentication. */\n PREAUTH = 6,\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 6003 (api_activity). */\nexport enum OcsfApiActivity {\n CREATE = 1,\n /** \"Read\" — the only CRUD verb our authorization/data-access events reliably carry. */\n READ = 2,\n UPDATE = 3,\n DELETE = 4,\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 3004 (entity_management). */\nexport enum OcsfEntityManagementActivity {\n CREATE = 1,\n READ = 2,\n UPDATE = 3,\n DELETE = 4,\n MOVE = 5,\n /** \"Enroll an existing managed entity.\" A member joining a tenant. */\n ENROLL = 6,\n UNENROLL = 7,\n ENABLE = 8,\n DISABLE = 9,\n ACTIVATE = 10,\n DEACTIVATE = 11,\n SUSPEND = 12,\n /** \"Resume (unsuspend) an existing managed entity.\" SUSPENDED is the only state our activate runs from. */\n RESUME = 13,\n OTHER = 99,\n}\n\n/** Published `activity_id` members of class 3007 (user_management). */\nexport enum OcsfUserManagementActivity {\n CREATE = 1,\n UPDATE = 2,\n DELETE = 3,\n ENABLE = 4,\n DISABLE = 5,\n LOCK = 6,\n UNLOCK = 7,\n PASSWORD_CHANGE = 8,\n PASSWORD_RESET = 9,\n ATTACH_POLICIES = 10,\n DETACH_POLICIES = 11,\n ENABLE_MFA_FACTORS = 12,\n DISABLE_MFA_FACTORS = 13,\n ASSIGN_PRIVILEGES = 14,\n REMOVE_PRIVILEGES = 15,\n ASSIGN_ROLES = 16,\n REMOVE_ROLES = 17,\n ADD_PROGRAMMATIC_CREDENTIALS = 18,\n REMOVE_PROGRAMMATIC_CREDENTIALS = 19,\n OTHER = 99,\n}\n\n/**\n * Every published activity id, per class — the membership check's source of truth.\n *\n * An activity number is only meaningful WITH its class: `1` is `Logon` in 3002 and `Create` in 6003.\n * So a row that assigns the right number under the wrong class is silently wrong, and nothing about\n * the emitted document would look malformed. {@link assertActivitiesBelongToTheirClass} closes that.\n */\nconst PUBLISHED_ACTIVITIES_BY_CLASS: Readonly<Record<OcsfClassUid, ReadonlySet<number>>> = {\n [OcsfClassUid.AUTHENTICATION]: new Set(Object.values(OcsfAuthenticationActivity).filter((v): v is number => typeof v === 'number')),\n [OcsfClassUid.API_ACTIVITY]: new Set(Object.values(OcsfApiActivity).filter((v): v is number => typeof v === 'number')),\n [OcsfClassUid.ENTITY_MANAGEMENT]: new Set(Object.values(OcsfEntityManagementActivity).filter((v): v is number => typeof v === 'number')),\n [OcsfClassUid.USER_MANAGEMENT]: new Set(Object.values(OcsfUserManagementActivity).filter((v): v is number => typeof v === 'number')),\n};\n\n/**\n * The activity each core audit event resolves to.\n *\n * **Total over `CoreAuditableEventType`**, so a new core event type cannot be added without deciding\n * its activity — the same shape the classification map now has, and for the same reason: an open set\n * silently defaulting is how `activity_id` stayed `Unknown` for every event in the first place.\n */\nexport const OCSF_ACTIVITY_BY_EVENT_TYPE: Readonly<Record<CoreAuditableEventType, number>> = {\n\n // ── AUTHENTICATION ──\n [CoreAuditableEventType.EMERGENCY_ACCESS_USED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.MACHINE_AUTH_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.MACHINE_AUTH_SUCCESS]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.OAUTH_CIMD_CLIENT_REFUSED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CODE_EXCHANGE_FAILED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_DYNAMIC_CLIENT_REGISTERED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_TOKEN_REFRESHED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.OAUTH_TOKEN_REVOKED]: OcsfAuthenticationActivity.OTHER,\n // Unlike the token-revoke sibling above (a no-oracle RFC 7009 ATTEMPT → Other), an RP-Initiated Logout\n // terminates a real user SESSION, so it is a genuine OCSF Logoff — matching USER_LOGOUT / SAML_SLO_COMPLETED.\n [CoreAuditableEventType.OAUTH_RP_INITIATED_LOGOUT]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.ONE_OFF_TOKEN_CREATED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.ONE_OFF_TOKEN_EXCHANGED]: OcsfAuthenticationActivity.OTHER,\n // Admin token-lifecycle, not an OCSF user LOGOFF — Other(99) + activity_name, matching the family.\n [CoreAuditableEventType.ONE_OFF_TOKEN_REVOKED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.SAML_ASSERTION_REPLAY_DETECTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.SAML_LOGIN_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.SAML_LOGIN_INITIATED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.SAML_LOGIN_SUCCESS]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.SAML_SLO_COMPLETED]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.SAML_SLO_INITIATED]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.USER_ACCOUNT_LOCKED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Lock(6), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_CROSS_FRONTEND_HANDOFF_ISSUED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_IDENTITY_LINK_REMOVED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_LOGIN]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_LOGIN_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_LOGOUT]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.USER_MAGIC_LINK_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_MAGIC_LINK_SENT]: OcsfAuthenticationActivity.PREAUTH,\n [CoreAuditableEventType.USER_MAGIC_LINK_VERIFIED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_MFA_DISABLED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Disable MFA Factors(13), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_MFA_EMAIL_OTP_SENT]: OcsfAuthenticationActivity.PREAUTH,\n [CoreAuditableEventType.USER_MFA_ENABLED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Enable MFA Factors(12), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_MFA_SETUP_COMPLETED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_MFA_SETUP_STARTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSKEY_AUTHENTICATION_FAILURE]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_PASSKEY_AUTHENTICATION_SUCCESS]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_PASSKEY_CLONE_SUSPECTED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_PASSKEY_REGISTERED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSKEY_REMOVED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSWORD_CHANGED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Change(8), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_PASSWORD_RESET_COMPLETED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Reset(9), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_PASSWORD_RESET_FORCED]: OcsfAuthenticationActivity.OTHER, // 3007 publishes Password Reset(9), but this event's category routes it to 3002, which does not\n [CoreAuditableEventType.USER_PASSWORD_RESET_REQUESTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_PASSWORD_SET]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_REFRESH_TOKEN_REUSE_DETECTED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_SESSION_EXPIRED]: OcsfAuthenticationActivity.LOGOFF,\n /*\n * LOGOFF, like the expiry above: the session is terminated and no longer exists, which is what the\n * OCSF verb states. The DIFFERENCE between the two — time elapsed versus a cap displacing a live\n * chain — is not expressible in `activity_id`, so it rides the typed eventData and the WARNING\n * severity instead. Mapping it to OTHER would have lost the one thing a SIEM correlates on.\n */\n [CoreAuditableEventType.USER_SESSION_EVICTED]: OcsfAuthenticationActivity.LOGOFF,\n [CoreAuditableEventType.USER_SMS_OTP_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_SMS_OTP_SENT]: OcsfAuthenticationActivity.PREAUTH,\n [CoreAuditableEventType.USER_SMS_OTP_VERIFIED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_SSO_ENFORCEMENT_BLOCKED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_SSO_LOGIN]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_SSO_LOGIN_FAILED]: OcsfAuthenticationActivity.LOGON,\n [CoreAuditableEventType.USER_TOKEN_REFRESHED]: OcsfAuthenticationActivity.OTHER,\n [CoreAuditableEventType.USER_TOTP_DISABLED]: OcsfAuthenticationActivity.OTHER,\n\n // ── AUTHORIZATION ──\n // A file upload grant delegates one upload under the minter's authority; issuing/revoking it is not\n // one of 6003's CRUD verbs on a resource.\n [CoreAuditableEventType.FILE_UPLOAD_GRANT_ISSUED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.FILE_UPLOAD_GRANT_REVOKED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.APPLICATION_SUPER_ADMIN_FLOOR_BREACHED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.CROSS_TENANT_ADMINISTRATIVE_ACCESS]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH2_PROVIDER_BLOCKED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_BINDING_VIOLATION]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_DENIED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_GRANTED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_CONSENT_GRANT_PERSISTED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.OAUTH_DELEGATED_TOKEN_ISSUED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_ROLE_CHANGED]: OcsfApiActivity.OTHER, // a role change is not one of 6003 CRUD verbs\n [CoreAuditableEventType.ORGANIZATION_OWNER_FLOOR_BREACHED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.ORGANIZATION_UNIT_MEMBER_REMOVED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.ORGANIZATION_UNIT_MEMBER_ROLE_CHANGED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.PLATFORM_ACCESS_GRANT_LIFECYCLE]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.RESOURCE_OPERATION_DENIED]: OcsfApiActivity.OTHER, // the CRUD verb is runtime data (the operation), not derivable from the event type\n [CoreAuditableEventType.RESOURCE_OPERATION_PERFORMED]: OcsfApiActivity.OTHER, // the CRUD verb is runtime data (the operation), not derivable from the event type\n [CoreAuditableEventType.USER_APP_ROLES_CHANGED]: OcsfApiActivity.OTHER, // a role change is not one of 6003 CRUD verbs\n\n // ── DATA_ACCESS ──\n [CoreAuditableEventType.FIELD_ACCESS]: OcsfApiActivity.READ,\n // CREATE, not OTHER: redeeming a grant IS the creation of one FILES row — the one DATA_ACCESS event\n // whose CRUD verb is derivable from the type, like PLATFORM_DIRECTORY_ACCESS below.\n [CoreAuditableEventType.FILE_UPLOAD_GRANT_REDEEMED]: OcsfApiActivity.CREATE,\n // OTHER for both (#506): a scan CONCLUSION is not one of 6003's CRUD verbs on a resource. The file\n // row is updated as a consequence, but the event names the finding, not the write — mapping it to\n // UPDATE would tell a SIEM that a record was modified and lose that malware was found.\n [CoreAuditableEventType.FILE_MALWARE_DETECTED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.FILE_MALWARE_SCAN_FAILED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.MACHINE_ACCESS]: OcsfApiActivity.OTHER, // names a surface reach (A2A/MCP turn), not a CRUD verb on a resource\n // READ, not OTHER: enumerating a directory IS a read of resource rows, and it is the one case\n // where the CRUD verb IS derivable from the event type — the event only ever names a collection\n // read (list/search/count), never a mutation.\n [CoreAuditableEventType.PLATFORM_DIRECTORY_ACCESS]: OcsfApiActivity.READ,\n [CoreAuditableEventType.RETAINED_DATA_ACCESS]: OcsfApiActivity.READ,\n [CoreAuditableEventType.SUBJECT_DATA_EXPORT]: OcsfApiActivity.READ,\n [CoreAuditableEventType.COLLECTION_DATA_EXPORT]: OcsfApiActivity.READ,\n [CoreAuditableEventType.HTTP_API_READ_THROUGH_ACCESS]: OcsfApiActivity.READ,\n // D6 stance 6b: the declared external-erasure operation DELETED remote rows.\n [CoreAuditableEventType.HTTP_API_EXTERNAL_ERASURE]: OcsfApiActivity.DELETE,\n // D6 stance 6c: nothing was deleted — the event records a deliberate non-action.\n [CoreAuditableEventType.HTTP_API_NON_ERASURE_ACKNOWLEDGED]: OcsfApiActivity.OTHER,\n [CoreAuditableEventType.SYSTEM_CONTEXT_READ]: OcsfApiActivity.READ,\n [CoreAuditableEventType.SYSTEM_CONTEXT_WRITE]: OcsfApiActivity.OTHER, // static fallback only — refined per emission from eventData.operation (CREATE | UPDATE | UPDATE_MANY)\n\n // ── ORG_MANAGEMENT ──\n [CoreAuditableEventType.ORGANIZATION_ACTIVATED]: OcsfEntityManagementActivity.RESUME,\n [CoreAuditableEventType.ORGANIZATION_CREATED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.ORGANIZATION_DELETED]: OcsfEntityManagementActivity.DELETE,\n [CoreAuditableEventType.ORGANIZATION_DELETION_REQUESTED]: OcsfEntityManagementActivity.OTHER, // marks the tenant and opens a window; nothing is deleted yet, so Delete(4) would overstate it\n [CoreAuditableEventType.ORGANIZATION_MEMBER_INVITED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_JOINED]: OcsfEntityManagementActivity.ENROLL,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_REMOVED]: OcsfEntityManagementActivity.UNENROLL,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_STATUS_CHANGED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_MEMBER_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_NOTIFICATIONS_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_PREFERENCES_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_PROFILE_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_RESTORED]: OcsfEntityManagementActivity.OTHER, // un-deletion has no 3004 member; Resume(13) is unsuspend and Activate(10) is a transient engine state\n [CoreAuditableEventType.ORGANIZATION_SIEM_EXPORT_CONFIGURED]: OcsfEntityManagementActivity.UPDATE,\n // Organization provider credentials. The credential row IS the managed entity, so the three\n // lifecycle verbs map onto its CRUD members directly — CREATE for the first grant, UPDATE for a\n // rotation (the entity persists, its secret changes), DELETE for the withdrawal.\n [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_SET]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_ROTATED]: OcsfEntityManagementActivity.UPDATE,\n // READ(2), not OTHER: resolving the credential for an outbound call reads the managed entity, and\n // READ is what an OCSF consumer's \"who accessed this secret\" query is written against. Mapping a\n // spend to OTHER(99) would take the highest-value events in this family out of every stock rule.\n [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_USED]: OcsfEntityManagementActivity.READ,\n [CoreAuditableEventType.ORGANIZATION_PROVIDER_CREDENTIAL_DELETED]: OcsfEntityManagementActivity.DELETE,\n // A person's own credential maps identically to the tenant's: the OCSF activity describes what was\n // done to the managed entity, and that is the same verb regardless of who owns it. WHO owns it is\n // carried by the event data, not by the activity — collapsing the two would make \"who accessed\n // this secret\" queries miss half their population.\n [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_SET]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_ROTATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_USED]: OcsfEntityManagementActivity.READ,\n [CoreAuditableEventType.USER_PROVIDER_CREDENTIAL_DELETED]: OcsfEntityManagementActivity.DELETE,\n // CREATE, like the `_SET` siblings: what OCSF records is the verb done to the managed entity, and\n // a connection coming into existence is a creation however it was obtained. The fact that this one\n // came from a consent ceremony rather than a paste lives in the event DATA — an OCSF activity is\n // deliberately a small closed vocabulary, and stretching it to carry provenance would make it a\n // worse index of what happened, not a better one.\n [CoreAuditableEventType.ORGANIZATION_PROVIDER_CONNECTION_GRANTED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.USER_PROVIDER_CONNECTION_GRANTED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.ORGANIZATION_SSO_CONFIGURATION_CHANGED]: OcsfEntityManagementActivity.UPDATE,\n // An application authentication-policy change is a configuration entity being UPDATED — the same\n // OCSF shape as the SSO / SIEM / SCIM configuration-change siblings around it. (Confirmed by the\n // session that added the event: UPDATE is the intended activity.)\n [CoreAuditableEventType.APPLICATION_AUTH_POLICY_CHANGED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_SUSPENDED]: OcsfEntityManagementActivity.SUSPEND,\n [CoreAuditableEventType.ORGANIZATION_UNIT_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.ORGANIZATION_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.SAML_CERT_EXPIRING]: OcsfEntityManagementActivity.OTHER,\n [CoreAuditableEventType.SAML_METADATA_PARSED]: OcsfEntityManagementActivity.OTHER,\n [CoreAuditableEventType.SCIM_PROVISIONING_CONFIG_UPDATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.SCIM_PROVISIONING_FAILED]: OcsfEntityManagementActivity.OTHER,\n [CoreAuditableEventType.SCIM_TOKEN_CREATED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.SCIM_TOKEN_GENERATED]: OcsfEntityManagementActivity.CREATE,\n [CoreAuditableEventType.SCIM_TOKEN_REVOKED]: OcsfEntityManagementActivity.DELETE,\n [CoreAuditableEventType.SCIM_TOKEN_ROTATED]: OcsfEntityManagementActivity.UPDATE,\n [CoreAuditableEventType.WEBHOOK_ENDPOINT_TEST_DISPATCHED]: OcsfEntityManagementActivity.OTHER,\n\n // ── USER_LIFECYCLE ──\n [CoreAuditableEventType.RESOURCE_STATUS_TRANSITION_PERFORMED]: OcsfUserManagementActivity.OTHER,\n [CoreAuditableEventType.SAML_EMAIL_CHANGED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.SCIM_USER_DEACTIVATED]: OcsfUserManagementActivity.DISABLE,\n [CoreAuditableEventType.SCIM_USER_PROVISIONED]: OcsfUserManagementActivity.CREATE,\n [CoreAuditableEventType.SCIM_USER_UPDATED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_CREATED]: OcsfUserManagementActivity.CREATE,\n [CoreAuditableEventType.USER_DELETED]: OcsfUserManagementActivity.DELETE,\n [CoreAuditableEventType.USER_EMAIL_VERIFIED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_PHONE_VERIFICATION_FAILED]: OcsfUserManagementActivity.OTHER,\n [CoreAuditableEventType.USER_PHONE_VERIFIED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_REGISTERED]: OcsfUserManagementActivity.CREATE,\n [CoreAuditableEventType.USER_UPDATED]: OcsfUserManagementActivity.UPDATE,\n [CoreAuditableEventType.USER_VERIFICATION_EMAIL_RESENT]: OcsfUserManagementActivity.OTHER,\n};\n\n/**\n * Fail at module load if any row assigns an activity its own class does not publish.\n *\n * This is the check the table exists to make possible. Activity numbers are class-scoped and collide\n * across classes, so a misfiled row produces a document that is structurally valid, schema-conformant,\n * and semantically wrong — the failure mode nothing downstream can catch.\n */\nfunction assertActivitiesBelongToTheirClass(): void {\n const offenders: string[] = [];\n for (const [eventType, activityId] of Object.entries(OCSF_ACTIVITY_BY_EVENT_TYPE)) {\n const category = getAuditEventClassification(eventType).category;\n const descriptor = OCSF_CLASS_BY_AUDIT_CATEGORY[category as AuditEventCategory];\n if (!PUBLISHED_ACTIVITIES_BY_CLASS[descriptor.classUid].has(activityId)) {\n offenders.push(`${eventType} → activity ${activityId} is not published by class ${descriptor.classUid}`);\n }\n }\n if (offenders.length > 0) {\n throw new Error(`OCSF activity mapping assigns activities their class does not publish:\\n ${offenders.join('\\n ')}`);\n }\n}\nassertActivitiesBelongToTheirClass();\n\n/**\n * Resolve the OCSF activity for an event type.\n *\n * Application-defined event types are ordinary strings the engine cannot enumerate, so they resolve to\n * `UNKNOWN` — the one case where \"we cannot say\" is the truthful answer.\n */\nexport function resolveOcsfActivityId(eventType: string): number {\n return OCSF_ACTIVITY_BY_EVENT_TYPE[eventType as CoreAuditableEventType] ?? OcsfCommonActivity.UNKNOWN;\n}\n\n/**\n * The `activity_name` companion for an `OTHER` assignment, or `undefined` when the activity is specific.\n *\n * The schema's own definition of `OTHER` points the reader at `activity_name`, so emitting `OTHER`\n * without it discards the very information the value promises is available.\n *\n * Takes the RESOLVED activity rather than re-deriving it from the event type. That distinction became\n * load-bearing when 6003 gained runtime refinement: an event whose TABLE entry is `Other` but whose\n * refined activity is `Update` must NOT carry `activity_name`, and a version of this that re-derived\n * from the event type would have emitted both — a specific activity plus a companion asserting it was\n * unmapped. Two ways to answer one question is the drift this contract exists to prevent.\n */\nexport function resolveOcsfActivityName(activityId: number, eventType: string): string | undefined {\n return activityId === OcsfCommonActivity.OTHER ? eventType : undefined;\n}\n\n/**\n * OCSF `auth_protocol_id` — the NORMALISED authentication protocol.\n *\n * spec-cite: OCSF 1.9.0 — `schema.ocsf.io/api/1.9.0/classes/authentication`, the `auth_protocol_id`\n * enum. `auth_protocol` is documented as \"the authentication protocol as defined by the caption of\n * `auth_protocol_id`. In the case of Other, it is defined by the event source.\"\n */\nexport enum OcsfAuthProtocolId {\n UNKNOWN = 0,\n NTLM = 1,\n KERBEROS = 2,\n DIGEST = 3,\n OPENID = 4,\n SAML = 5,\n OAUTH_2_0 = 6,\n PAP = 7,\n CHAP = 8,\n EAP = 9,\n RADIUS = 10,\n BASIC_AUTHENTICATION = 11,\n LDAP = 12,\n OTHER = 99,\n}\n\n/** The published CAPTION for each id — what `auth_protocol` must carry when the id is not `Other`. */\nconst OCSF_AUTH_PROTOCOL_CAPTION: Readonly<Record<OcsfAuthProtocolId, string>> = {\n [OcsfAuthProtocolId.UNKNOWN]: 'Unknown',\n [OcsfAuthProtocolId.NTLM]: 'NTLM',\n [OcsfAuthProtocolId.KERBEROS]: 'Kerberos',\n [OcsfAuthProtocolId.DIGEST]: 'Digest',\n [OcsfAuthProtocolId.OPENID]: 'OpenID',\n [OcsfAuthProtocolId.SAML]: 'SAML',\n [OcsfAuthProtocolId.OAUTH_2_0]: 'OAUTH 2.0',\n [OcsfAuthProtocolId.PAP]: 'PAP',\n [OcsfAuthProtocolId.CHAP]: 'CHAP',\n [OcsfAuthProtocolId.EAP]: 'EAP',\n [OcsfAuthProtocolId.RADIUS]: 'RADIUS',\n [OcsfAuthProtocolId.BASIC_AUTHENTICATION]: 'Basic Authentication',\n [OcsfAuthProtocolId.LDAP]: 'LDAP',\n [OcsfAuthProtocolId.OTHER]: 'Other',\n};\n\n/**\n * The `AuthMethod` members that ARE a protocol OCSF normalises. Everything else resolves to `Other`.\n *\n * Deliberately partial. Three members are absent for a reason, and each absence is a decision:\n *\n * - `PASSWORD` is NOT `Basic Authentication` (11). Basic Auth is an HTTP transport scheme (RFC 7617);\n * a user typing a password into a form is not that, and the resemblance is only in the English word.\n * - `MAGIC_LINK`, `TOTP`, `SMS_OTP`, `EMAIL_OTP` and `PASSKEY` name no protocol in the published enum.\n * WebAuthn/FIDO2 in particular is absent from OCSF 1.9.0 — mapping a passkey to `Other` is the\n * accurate answer, not a shortfall.\n * - `EXTERNAL_OAUTH2` DOES map: it is OAuth 2.0 by construction.\n *\n * The `ORG_` prefix on the SSO members is SCOPE, not protocol — an organization-restricted SAML login\n * is still SAML — so those normalise cleanly.\n */\nconst OCSF_AUTH_PROTOCOL_BY_AUTH_METHOD: Readonly<Partial<Record<AuthMethod, OcsfAuthProtocolId>>> = {\n [AuthMethod.ORG_SAML]: OcsfAuthProtocolId.SAML,\n [AuthMethod.ORG_OPENID_CONNECT]: OcsfAuthProtocolId.OPENID,\n [AuthMethod.EXTERNAL_OAUTH2]: OcsfAuthProtocolId.OAUTH_2_0,\n};\n\n/** `auth_protocol` + `auth_protocol_id`, resolved together because the schema couples them. */\nexport interface OcsfAuthProtocol {\n readonly protocol: string;\n readonly protocolId: OcsfAuthProtocolId;\n}\n\n/**\n * Resolve the OCSF protocol pair for an envelope's `authMethod`.\n *\n * The two attributes are resolved TOGETHER because the schema defines one in terms of the other: when\n * the id is normalised, the string must be that id's published caption; only under `Other` may the\n * string be the producer's own value. Returning them separately invites the pairing to drift, which is\n * exactly how this shipped wrong the first time (`org_saml` with no id at all).\n *\n * `authMethod` is an OPEN string on the envelope — applications define their own — so anything outside\n * the framework's own `AuthMethod` vocabulary lands on `Other` carrying its raw value, which is\n * precisely what `Other` is for.\n */\nexport function resolveOcsfAuthProtocol(authMethod: string): OcsfAuthProtocol {\n const normalised = OCSF_AUTH_PROTOCOL_BY_AUTH_METHOD[authMethod as AuthMethod];\n return normalised === undefined\n ? { protocol: authMethod, protocolId: OcsfAuthProtocolId.OTHER }\n : { protocol: OCSF_AUTH_PROTOCOL_CAPTION[normalised], protocolId: normalised };\n}\n\n/**\n * The CRUD verb an API Activity (6003) event performed, mapped from the framework's core operation.\n *\n * spec-cite: OCSF 1.9.0 — `api_activity.activity_id` enum: 0 Unknown, 1 Create, 2 Read, 3 Update,\n * 4 Delete, 99 Other.\n *\n * The bulk forms collapse onto their singular verb: OCSF's activity names WHAT was done, and the\n * cardinality is carried separately by the envelope (`isBulkOperation` / `affectedRecordCount`).\n * `COUNT` is a Read — it answers a question about existing rows without changing any.\n */\nconst OCSF_API_ACTIVITY_BY_CORE_OPERATION: Readonly<Record<CoreResourceOperation, OcsfApiActivity>> = {\n [CoreResourceOperation.CREATE]: OcsfApiActivity.CREATE,\n [CoreResourceOperation.CREATE_MANY]: OcsfApiActivity.CREATE,\n [CoreResourceOperation.READ]: OcsfApiActivity.READ,\n [CoreResourceOperation.LIST]: OcsfApiActivity.READ,\n [CoreResourceOperation.SEARCH]: OcsfApiActivity.READ,\n [CoreResourceOperation.COUNT]: OcsfApiActivity.READ,\n [CoreResourceOperation.UPDATE]: OcsfApiActivity.UPDATE,\n [CoreResourceOperation.UPDATE_MANY]: OcsfApiActivity.UPDATE,\n [CoreResourceOperation.DELETE]: OcsfApiActivity.DELETE,\n [CoreResourceOperation.DELETE_MANY]: OcsfApiActivity.DELETE,\n};\n\n/**\n * The `eventData` keys that can name a 6003 event's CRUD verb, in precedence order.\n *\n * Three keys rather than one because the emitters spell it differently and each is authoritative for\n * its own event: `resourceOperationLike` is the core semantics a CUSTOM verb borrows (a `suspend`\n * behaving as an `update`), `operationIdentifier` is the verb on resource-operation and field-access\n * events, and `operation` is what `logSystemContextWrite` records — typed `CREATE | UPDATE |\n * UPDATE_MANY`, so it always resolves.\n *\n * Enumerated by the QUESTION (\"what names the verb on a 6003 event?\") rather than by one emitter's\n * field name, which is how `operation` was missed on the first pass.\n */\nconst OCSF_API_VERB_EVENT_DATA_KEYS = ['resourceOperationLike', 'operationIdentifier', 'operation'] as const;\n\n/**\n * Refine a 6003 event's `activity_id` from RUNTIME data, when the event type alone cannot say.\n *\n * Class 6003 is organised around the CRUD axis, and the resource-operation events (`performed` /\n * `denied`) are the bulk of what we route there — yet the event TYPE is the same string for a create\n * and a delete. So the table maps them to `Other`, and every authorization event landed in one\n * undifferentiated bucket: the same collapse `activity_id` being pinned to `Unknown` used to cause,\n * surviving one layer down after that was fixed.\n *\n * The verb is in the envelope — under one of {@link OCSF_API_VERB_EVENT_DATA_KEYS}, in that precedence\n * order. Anything else (a custom verb borrowing nothing) keeps `Other`, where `activity_name` already\n * carries the event type.\n *\n * Two consequences that are DECISIONS, not side effects:\n *\n * - **`FIELD_ACCESS` refines away from its static `Read`.** It carries `operationIdentifier`, so a\n * secret exposed during a create now reads as Create(1). That is correct: 6003's activity names what\n * the API CALL did, and the field-access nature rides `metadata.event_code`. The static `Read` remains\n * the fallback for an emission that names no operation.\n * - **`SYSTEM_CONTEXT_WRITE` stops being `Other`.** Its table comment says \"neither Create nor Update is\n * true of every emission\" — true of a STATIC mapping and not a permanent conclusion, because at\n * runtime `operation` says exactly which. This matters more than most: it is the ACL-bypass write.\n */\nexport function refineOcsfApiActivity(eventData: unknown, fallback: number): number {\n if (eventData === null || typeof eventData !== 'object') return fallback;\n const record = eventData as Readonly<Record<string, unknown>>;\n for (const key of OCSF_API_VERB_EVENT_DATA_KEYS) {\n const candidate = record[key];\n if (typeof candidate !== 'string') continue;\n const mapped = OCSF_API_ACTIVITY_BY_CORE_OPERATION[candidate as CoreResourceOperation];\n if (mapped !== undefined) return mapped;\n }\n return fallback;\n}\n"]}
@@ -118,6 +118,11 @@ export interface ApplicationRuntimeProfileBootAssertions {
118
118
  * and only there.
119
119
  */
120
120
  assertsLayer2AuditProviderPresence: boolean;
121
+ /**
122
+ * Whether ENABLED members of `ENGINE_CAPABILITIES_REQUIRING_A_PROVIDER_WHEN_ENABLED` must resolve a
123
+ * provider on this host (#328). The application's own `required` flags are asserted everywhere.
124
+ */
125
+ assertsEngineCapabilityProviderFloor: boolean;
121
126
  /**
122
127
  * Whether this runtime performs boot-time SCHEMA/DATA MAINTENANCE over the
123
128
  * application's collections — the retention-marker backfill and the drifted
@@ -1 +1 @@
1
- {"version":3,"file":"application-runtime-profile.backend.d.ts","sourceRoot":"","sources":["../../../../../src/config/bootstrap/application-runtime-profile.backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,oBAAY,yBAAyB;IACnC;;;;;;;OAOG;IACH,mBAAmB,wBAAwB;IAC3C;;;;;OAKG;IACH,MAAM,WAAW;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,uCAAuC;IACtD;;;;;;;;OAQG;IACH,2CAA2C,EAAE,OAAO,CAAC;IACrD;;;;;;;;;OASG;IACH,sCAAsC,EAAE,OAAO,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,kCAAkC,EAAE,OAAO,CAAC;IAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,6BAA6B,EAAE,OAAO,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qCAAqC,EAAE,OAAO,CAAC;IAC/C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,sCAAsC,EAAE,OAAO,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,wBAAgB,8CAA8C,CAC5D,OAAO,EAAE,yBAAyB,GACjC,uCAAuC,CAoDzC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,+BAA+B,EAAE,OAAO,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,yBAAyB,GACjC,8BAA8B,CAahC"}
1
+ {"version":3,"file":"application-runtime-profile.backend.d.ts","sourceRoot":"","sources":["../../../../../src/config/bootstrap/application-runtime-profile.backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,oBAAY,yBAAyB;IACnC;;;;;;;OAOG;IACH,mBAAmB,wBAAwB;IAC3C;;;;;OAKG;IACH,MAAM,WAAW;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,uCAAuC;IACtD;;;;;;;;OAQG;IACH,2CAA2C,EAAE,OAAO,CAAC;IACrD;;;;;;;;;OASG;IACH,sCAAsC,EAAE,OAAO,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,kCAAkC,EAAE,OAAO,CAAC;IAC5C;;;OAGG;IACH,oCAAoC,EAAE,OAAO,CAAC;IAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,6BAA6B,EAAE,OAAO,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qCAAqC,EAAE,OAAO,CAAC;IAC/C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,sCAAsC,EAAE,OAAO,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,wBAAgB,8CAA8C,CAC5D,OAAO,EAAE,yBAAyB,GACjC,uCAAuC,CA0DzC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,+BAA+B,EAAE,OAAO,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,yBAAyB,GACjC,8BAA8B,CAahC"}
@@ -80,6 +80,9 @@ export function resolveApplicationRuntimeProfileBootAssertions(profile) {
80
80
  // installed only here), so an enabled audit capability with no resolved
81
81
  // provider is a genuine misconfiguration it must surface.
82
82
  assertsLayer2AuditProviderPresence: true,
83
+ // The backend is the host that SERVES email, billing and SMS, so an enabled slot with
84
+ // nothing behind it is a misconfiguration it must refuse at boot (#328).
85
+ assertsEngineCapabilityProviderFloor: true,
83
86
  // The backend owns application-wide schema maintenance. It is the one
84
87
  // runtime holding database-wide authority, and a migration wants a
85
88
  // single owner.
@@ -105,6 +108,9 @@ export function resolveApplicationRuntimeProfileBootAssertions(profile) {
105
108
  // therefore correct, not a misconfiguration — warning on every restart
106
109
  // would be false-alarm noise.
107
110
  assertsLayer2AuditProviderPresence: false,
111
+ // A minion's registry is filtered to ITS scope; the backend serves the engine flows, so
112
+ // an enabled email/billing/SMS slot resolving nothing here is the normal topology (#328).
113
+ assertsEngineCapabilityProviderFloor: false,
108
114
  // A minion must NOT. Its database user is collection-scoped to what
109
115
  // `resourceAccess` declared, so a backfill over every retention-governed
110
116
  // collection is both unauthorised and not its concern. The backend