@wildo-ai/saas-backend-lib 1.1.2 → 1.1.4

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 (1358) hide show
  1. package/dist/esm/__tests__/fixture-deep-partial.d.ts.map +1 -1
  2. package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
  3. package/dist/esm/__tests__/setup.d.ts.map +1 -1
  4. package/dist/esm/__tests__/test-container.d.ts.map +1 -1
  5. package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
  6. package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
  7. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
  8. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
  9. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  10. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  11. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
  12. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  13. package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
  14. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
  15. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
  16. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
  18. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
  19. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
  20. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
  21. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
  22. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
  23. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
  24. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
  25. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +210 -0
  26. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
  27. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
  28. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  29. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
  30. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  31. package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
  32. package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
  33. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
  34. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  35. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
  36. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  37. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
  38. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
  39. package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
  40. package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
  41. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
  42. package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
  44. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
  45. package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
  46. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
  47. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  48. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +220 -25
  49. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  50. package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
  51. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
  52. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  53. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +191 -26
  54. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  55. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
  56. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  57. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
  58. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  59. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
  60. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
  61. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
  62. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
  63. package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
  64. package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
  65. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
  66. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
  68. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  69. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
  70. package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
  71. package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
  72. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  73. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
  74. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  75. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
  76. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
  77. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +106 -0
  78. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  79. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +266 -20
  80. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  81. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  82. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
  83. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  84. package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
  85. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
  86. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  87. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +34 -3
  88. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  89. package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
  90. package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
  91. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
  92. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
  93. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
  94. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
  95. package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
  96. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
  97. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
  98. package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
  99. package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
  100. package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
  101. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
  102. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  103. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  104. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
  105. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
  106. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
  107. package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
  108. package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
  109. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  110. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
  111. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  112. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
  113. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  114. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
  115. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  116. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
  117. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  118. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +571 -45
  119. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  120. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
  121. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  122. package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
  123. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  124. package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
  125. package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
  126. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
  127. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
  128. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
  129. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
  130. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
  131. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
  132. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
  133. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
  134. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
  135. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
  136. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
  137. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
  138. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
  139. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
  140. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
  141. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
  142. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +475 -0
  143. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
  144. package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
  145. package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
  146. package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
  147. package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
  148. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
  149. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  150. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
  151. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  152. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
  153. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  154. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
  155. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  156. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
  157. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
  158. package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
  159. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
  160. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
  161. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  162. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
  163. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  164. package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
  165. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  166. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
  167. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  168. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +70 -1
  169. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  170. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +98 -2
  171. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  172. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
  173. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  174. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
  175. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  176. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  177. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
  178. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  179. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
  180. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  181. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  182. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
  183. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  184. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +21 -1
  185. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  186. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +109 -2
  187. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  188. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
  189. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
  190. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
  191. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
  192. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
  193. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
  194. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
  195. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  196. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +310 -29
  197. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  198. package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
  199. package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
  200. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  201. package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
  202. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  203. package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
  204. package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
  205. package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
  206. package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
  207. package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
  208. package/dist/esm/companion-exports.d.ts.map +1 -1
  209. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
  210. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
  211. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
  212. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  213. package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
  214. package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  215. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
  216. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
  217. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  218. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
  219. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  220. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +350 -10
  221. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  222. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +562 -10
  223. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  224. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  225. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
  226. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  227. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
  228. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  229. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
  230. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
  231. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
  232. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  233. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
  234. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  235. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
  236. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
  237. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
  238. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
  239. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  240. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +52 -0
  241. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  242. package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
  243. package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
  244. package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
  245. package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
  246. package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
  247. package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
  248. package/dist/esm/compliance/index.d.ts.map +1 -1
  249. package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
  250. package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
  251. package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
  252. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
  253. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  254. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
  255. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  256. package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
  257. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
  258. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
  259. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
  260. package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
  261. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
  262. package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
  263. package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
  264. package/dist/esm/config/models/app-config.backend.schemas.d.ts +145 -49
  265. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  266. package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
  267. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  268. package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
  269. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
  270. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
  271. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
  272. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
  273. package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
  274. package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
  275. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
  276. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  277. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
  278. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  279. package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
  280. package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
  281. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
  282. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  283. package/dist/esm/config/services/app-configuration-loader.backend.service.js +71 -76
  284. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  285. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  286. package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
  287. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  288. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
  289. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  290. package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
  291. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  292. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +37 -0
  293. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  294. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +69 -1
  295. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  296. package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
  297. package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
  298. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
  299. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
  300. package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
  301. package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
  302. package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
  303. package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
  304. package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
  305. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
  306. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
  307. package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
  308. package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
  309. package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
  310. package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
  311. package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
  312. package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
  313. package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
  314. package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
  315. package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
  316. package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
  317. package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
  318. package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
  319. package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
  320. package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
  321. package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
  322. package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
  323. package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
  324. package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
  325. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
  326. package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
  327. package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
  328. package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
  329. package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
  330. package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
  331. package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
  332. package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
  333. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
  334. package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
  335. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
  336. package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
  337. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
  338. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
  339. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
  340. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
  341. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
  342. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
  343. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
  344. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
  345. package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
  346. package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
  347. package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
  348. package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
  349. package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
  350. package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
  351. package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
  352. package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
  353. package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
  354. package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
  355. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  356. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
  357. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  358. package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
  359. package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
  360. package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
  361. package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
  362. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
  363. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
  364. package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
  365. package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
  366. package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
  367. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  368. package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
  369. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  370. package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
  371. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  372. package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
  373. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  374. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
  375. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  376. package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
  377. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  378. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
  379. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  380. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
  381. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  382. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
  383. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  384. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
  385. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  386. package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
  387. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
  388. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
  389. package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
  390. package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
  391. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
  392. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  393. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
  394. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  395. package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
  396. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
  397. package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
  398. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
  399. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  400. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  401. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +306 -0
  402. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
  403. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +379 -0
  404. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
  405. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
  406. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
  407. package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
  408. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
  409. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
  410. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
  411. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +235 -0
  412. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
  413. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
  414. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
  415. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
  416. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
  417. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
  418. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  419. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
  420. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  421. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
  422. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
  423. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
  424. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
  425. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
  426. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  427. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
  428. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  429. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
  430. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  431. package/dist/esm/external-providers/services/document-extraction.backend.service.js +181 -100
  432. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  433. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  434. package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
  435. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  436. package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
  437. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +413 -7
  438. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  439. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +684 -45
  440. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  441. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
  442. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  443. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +84 -5
  444. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  445. package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
  446. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
  447. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
  448. package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  449. package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
  450. package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
  451. package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
  452. package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  453. package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
  454. package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  455. package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
  456. package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
  457. package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
  458. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
  459. package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
  460. package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
  461. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
  462. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  463. package/dist/esm/files/controllers/file.controller.js +21 -13
  464. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  465. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
  466. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
  467. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
  468. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  469. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +260 -36
  470. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  471. package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
  472. package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
  473. package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
  474. package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
  475. package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
  476. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
  477. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
  478. package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
  479. package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
  480. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
  481. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
  482. package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
  483. package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
  484. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  485. package/dist/esm/files/services/file-scanning.backend.service.js +202 -17
  486. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  487. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
  488. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  489. package/dist/esm/files/services/file-text-extraction.backend.service.js +175 -13
  490. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  491. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
  492. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
  493. package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
  494. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
  495. package/dist/esm/files/services/files.backend.service.d.ts +68 -0
  496. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  497. package/dist/esm/files/services/files.backend.service.js +177 -5
  498. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  499. package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
  500. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
  501. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
  502. package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
  503. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
  504. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
  505. package/dist/esm/files/storage/file-storage-provider.types.d.ts +52 -11
  506. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  507. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  508. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
  509. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
  510. package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
  511. package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
  512. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
  513. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
  514. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
  515. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
  516. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
  517. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  518. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
  519. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  520. package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
  521. package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  522. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  523. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
  524. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
  525. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  526. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
  527. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  528. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  529. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
  530. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  531. package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
  532. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
  533. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
  534. package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
  535. package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
  536. package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
  537. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
  538. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
  539. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
  540. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
  541. package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
  542. package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
  543. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
  544. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  545. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
  546. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  547. package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
  548. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  549. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
  550. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  551. package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
  552. package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
  553. package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
  554. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
  555. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  556. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
  557. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  558. package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
  559. package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
  560. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
  561. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  562. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
  563. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  564. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
  565. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  566. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
  567. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  568. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
  569. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  570. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
  571. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  572. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
  573. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  574. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  575. package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
  576. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
  577. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  578. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
  579. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  580. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
  581. package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
  582. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
  583. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  584. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
  585. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  586. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
  587. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
  588. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  589. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  590. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +179 -8
  591. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  592. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +436 -34
  593. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  594. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  595. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
  596. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  597. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
  598. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
  599. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
  600. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
  601. package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
  602. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  603. package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
  604. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  605. package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
  606. package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
  607. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +132 -6
  608. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  609. package/dist/esm/flows-actors/services/agents.backend.service.js +467 -49
  610. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  611. package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
  612. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +50 -1
  613. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  614. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +270 -20
  615. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  616. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
  617. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  618. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
  619. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  620. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  621. package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
  622. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  623. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  624. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
  625. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  626. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
  627. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
  628. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +371 -0
  629. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
  630. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
  631. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
  632. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
  633. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
  634. package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
  635. package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
  636. package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
  637. package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
  638. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
  639. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  640. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
  641. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  642. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  643. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +17 -4
  644. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  645. package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
  646. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
  647. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
  648. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  649. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
  650. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  651. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  652. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  653. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
  654. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
  655. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
  656. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
  657. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
  658. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
  659. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
  660. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
  661. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
  662. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
  663. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
  664. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
  665. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
  666. package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
  667. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
  668. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
  669. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
  670. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  671. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
  672. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  673. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
  674. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
  675. package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
  676. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
  677. package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
  678. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
  679. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  680. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
  681. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  682. package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
  683. package/dist/esm/index.d.ts +11 -5
  684. package/dist/esm/index.d.ts.map +1 -1
  685. package/dist/esm/index.js +31 -5
  686. package/dist/esm/index.js.map +1 -1
  687. package/dist/esm/inject/models/container.d.ts +10 -0
  688. package/dist/esm/inject/models/container.d.ts.map +1 -1
  689. package/dist/esm/inject/models/container.js +126 -10
  690. package/dist/esm/inject/models/container.js.map +1 -1
  691. package/dist/esm/inject/models/service-types.d.ts +20 -3
  692. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  693. package/dist/esm/inject/models/service-types.js +22 -3
  694. package/dist/esm/inject/models/service-types.js.map +1 -1
  695. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  696. package/dist/esm/mcp/controllers/mcp.controller.js +70 -3
  697. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  698. package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
  699. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
  700. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
  701. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
  702. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  703. package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
  704. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  705. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  706. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
  707. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  708. package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
  709. package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
  710. package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
  711. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  712. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
  713. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  714. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
  715. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
  716. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
  717. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
  718. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
  719. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  720. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
  721. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  722. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
  723. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  724. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  725. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
  726. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  727. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
  728. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  729. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
  730. package/dist/esm/monitoring/logger/services/logger.service.d.ts +24 -0
  731. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  732. package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
  733. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  734. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
  735. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
  736. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
  737. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
  738. package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
  739. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +313 -0
  740. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
  741. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +389 -0
  742. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
  743. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
  744. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  745. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  746. package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
  747. package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
  748. package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
  749. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
  750. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  751. package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
  752. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  753. package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
  754. package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
  755. package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
  756. package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
  757. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
  758. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
  759. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  760. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
  761. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  762. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  763. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
  764. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  765. package/dist/esm/notifications/email/services/email.backend.service.d.ts +102 -5
  766. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  767. package/dist/esm/notifications/email/services/email.backend.service.js +222 -70
  768. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  769. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
  770. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  771. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  772. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
  773. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
  774. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
  775. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  776. package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
  777. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  778. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
  779. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  780. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
  781. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  782. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
  783. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
  784. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
  785. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
  786. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
  787. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  788. package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
  789. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  790. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
  791. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  792. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
  793. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  794. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
  795. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  796. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
  797. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  798. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
  799. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  800. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
  801. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  802. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
  803. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
  804. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
  805. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
  806. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  807. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
  808. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  809. package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
  810. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
  811. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
  812. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  813. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
  814. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  815. package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
  816. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
  817. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
  818. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
  819. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  820. package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
  821. package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
  822. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
  823. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
  824. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  825. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
  826. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  827. package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  828. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
  829. package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
  830. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
  831. package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
  832. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
  833. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
  834. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
  835. package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
  836. package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
  837. package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
  838. package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
  839. package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
  840. package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
  841. package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
  842. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
  843. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
  844. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
  845. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
  846. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
  847. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
  848. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
  849. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
  850. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
  851. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
  852. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
  853. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
  854. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
  855. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
  856. package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
  857. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
  858. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
  859. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  860. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
  861. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  862. package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
  863. package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
  864. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
  865. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  866. package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
  867. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  868. package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
  869. package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
  870. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  871. package/dist/esm/queue/job-consumer.backend.service.js +1 -4
  872. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  873. package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
  874. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  875. package/dist/esm/queue/job-executor.backend.service.js +1 -4
  876. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  877. package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
  878. package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
  879. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
  880. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  881. package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
  882. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  883. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
  884. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  885. package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
  886. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  887. package/dist/esm/queue/queue.backend.service.d.ts +3 -3
  888. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  889. package/dist/esm/queue/queue.backend.service.js +26 -4
  890. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  891. package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
  892. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
  893. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  894. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
  895. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  896. package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
  897. package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
  898. package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
  899. package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
  900. package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
  901. package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
  902. package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
  903. package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
  904. package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
  905. package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
  906. package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
  907. package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
  908. package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
  909. package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
  910. package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
  911. package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
  912. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
  913. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  914. package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
  915. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  916. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
  917. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  918. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
  919. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  920. package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
  921. package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
  922. package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
  923. package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
  924. package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
  925. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
  926. package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
  927. package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
  928. package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
  929. package/dist/esm/requests/service/websocket.service.d.ts +9 -0
  930. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  931. package/dist/esm/requests/service/websocket.service.js +81 -9
  932. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  933. package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
  934. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  935. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
  936. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  937. package/dist/esm/resources/models/index.d.ts.map +1 -1
  938. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  939. package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
  940. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  941. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  942. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
  943. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  944. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
  945. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  946. package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
  947. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  948. package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
  949. package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
  950. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
  951. package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
  952. package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
  953. package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
  954. package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
  955. package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
  956. package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
  957. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +83 -5
  958. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  959. package/dist/esm/resources/services/resources-registry.backend.service.js +121 -6
  960. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  961. package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
  962. package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
  963. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
  964. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  965. package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
  966. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  967. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
  968. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  969. package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
  970. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  971. package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
  972. package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
  973. package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
  974. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
  975. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
  976. package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
  977. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
  978. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  979. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  980. package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
  981. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  982. package/dist/esm/runtime/services/http-server.backend.service.js +191 -1
  983. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  984. package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
  985. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  986. package/dist/esm/runtime/services/start-application.backend.service.js +287 -89
  987. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  988. package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
  989. package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
  990. package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
  991. package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
  992. package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
  993. package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
  994. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
  995. package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
  996. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
  997. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  998. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
  999. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  1000. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
  1001. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  1002. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
  1003. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  1004. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
  1005. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
  1006. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  1007. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +113 -4
  1008. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  1009. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
  1010. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  1011. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
  1012. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  1013. package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
  1014. package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
  1015. package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
  1016. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
  1017. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  1018. package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
  1019. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  1020. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
  1021. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
  1022. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
  1023. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
  1024. package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
  1025. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
  1026. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +30 -0
  1027. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  1028. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  1029. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
  1030. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
  1031. package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
  1032. package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
  1033. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
  1034. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
  1035. package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
  1036. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
  1037. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
  1038. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
  1039. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  1040. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
  1041. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  1042. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
  1043. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  1044. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
  1045. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  1046. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
  1047. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  1048. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
  1049. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  1050. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
  1051. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  1052. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
  1053. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  1054. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
  1055. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
  1056. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
  1057. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +197 -0
  1058. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  1059. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +384 -53
  1060. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  1061. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
  1062. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
  1063. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  1064. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
  1065. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  1066. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
  1067. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
  1068. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
  1069. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
  1070. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  1071. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
  1072. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  1073. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
  1074. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  1075. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +260 -27
  1076. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  1077. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
  1078. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  1079. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +70 -4
  1080. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  1081. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
  1082. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
  1083. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
  1084. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
  1085. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
  1086. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  1087. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
  1088. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  1089. package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
  1090. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
  1091. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  1092. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
  1093. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  1094. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
  1095. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  1096. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
  1097. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  1098. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
  1099. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  1100. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
  1101. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  1102. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  1103. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
  1104. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  1105. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
  1106. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
  1107. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
  1108. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
  1109. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +339 -0
  1110. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
  1111. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
  1112. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  1113. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
  1114. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  1115. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
  1116. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
  1117. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
  1118. package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
  1119. package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
  1120. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
  1121. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  1122. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
  1123. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  1124. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
  1125. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  1126. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
  1127. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  1128. package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
  1129. package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
  1130. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
  1131. package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
  1132. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
  1133. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  1134. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
  1135. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  1136. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
  1137. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  1138. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
  1139. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  1140. package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
  1141. package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
  1142. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
  1143. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  1144. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
  1145. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  1146. package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
  1147. package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
  1148. package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
  1149. package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
  1150. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
  1151. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  1152. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
  1153. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  1154. package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
  1155. package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
  1156. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
  1157. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
  1158. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
  1159. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
  1160. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
  1161. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
  1162. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
  1163. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
  1164. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
  1165. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
  1166. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
  1167. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
  1168. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
  1169. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
  1170. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
  1171. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
  1172. package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
  1173. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
  1174. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
  1175. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
  1176. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
  1177. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
  1178. package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
  1179. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
  1180. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  1181. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
  1182. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  1183. package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
  1184. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  1185. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +37 -124
  1186. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  1187. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
  1188. package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
  1189. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
  1190. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  1191. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
  1192. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  1193. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +133 -0
  1194. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
  1195. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +137 -0
  1196. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
  1197. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +134 -1
  1198. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  1199. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +152 -5
  1200. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  1201. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +146 -8
  1202. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  1203. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +328 -29
  1204. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  1205. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
  1206. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  1207. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
  1208. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  1209. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
  1210. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
  1211. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
  1212. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
  1213. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +299 -0
  1214. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
  1215. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +953 -0
  1216. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
  1217. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +99 -0
  1218. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
  1219. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
  1220. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
  1221. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
  1222. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
  1223. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
  1224. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
  1225. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +210 -0
  1226. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
  1227. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +423 -0
  1228. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
  1229. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
  1230. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  1231. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
  1232. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
  1233. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
  1234. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
  1235. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +282 -0
  1236. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
  1237. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +125 -0
  1238. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
  1239. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +123 -0
  1240. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
  1241. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
  1242. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
  1243. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
  1244. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
  1245. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +214 -0
  1246. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
  1247. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +430 -0
  1248. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
  1249. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
  1250. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  1251. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
  1252. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
  1253. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +98 -0
  1254. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
  1255. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
  1256. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
  1257. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
  1258. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
  1259. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
  1260. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
  1261. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
  1262. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
  1263. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
  1264. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
  1265. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
  1266. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
  1267. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
  1268. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
  1269. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
  1270. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
  1271. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
  1272. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
  1273. package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
  1274. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
  1275. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
  1276. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  1277. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
  1278. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  1279. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
  1280. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  1281. package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
  1282. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  1283. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
  1284. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
  1285. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
  1286. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
  1287. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
  1288. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
  1289. package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
  1290. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
  1291. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  1292. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
  1293. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  1294. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
  1295. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  1296. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
  1297. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  1298. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
  1299. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
  1300. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
  1301. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
  1302. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
  1303. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
  1304. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
  1305. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
  1306. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  1307. package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
  1308. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  1309. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
  1310. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  1311. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
  1312. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  1313. package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
  1314. package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
  1315. package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
  1316. package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
  1317. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
  1318. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  1319. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
  1320. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  1321. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
  1322. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
  1323. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
  1324. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
  1325. package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
  1326. package/dist/esm/testing.d.ts.map +1 -1
  1327. package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
  1328. package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  1329. package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
  1330. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
  1331. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
  1332. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
  1333. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
  1334. package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
  1335. package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
  1336. package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
  1337. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1338. package/package.json +11 -9
  1339. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
  1340. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
  1341. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
  1342. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
  1343. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
  1344. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
  1345. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
  1346. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
  1347. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
  1348. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
  1349. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
  1350. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
  1351. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
  1352. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
  1353. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
  1354. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
  1355. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
  1356. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
  1357. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
  1358. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"queue-monitoring.backend.service.js","sourceRoot":"","sources":["../../../../src/queue/queue-monitoring.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Queue Monitoring Backend Service\n *\n * Provides metrics, health checks, and alerting for the queue system.\n * Integrates with RabbitMQ for queue statistics and the job tracking system.\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { RabbitMQAdapterBackendService } from './adapters/rabbitmq-adapter.backend.service';\nimport {\n QueueMetrics,\n QueueHealthSummary,\n QueueHealthStatus,\n QueueAlertThreshold,\n} from '@wildo-ai/saas-models';\n\n/**\n * Alert callback type for queue monitoring.\n */\nexport type QueueAlertCallback = (\n alertType: string,\n queueName: string,\n details: Record<string, unknown>\n) => void | Promise<void>;\n\n@injectable()\nexport class QueueMonitoringBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private alertCallbacks: QueueAlertCallback[] = [];\n private alertThresholds: Map<string, QueueAlertThreshold> = new Map();\n private monitoringInterval: NodeJS.Timeout | null = null;\n private isMonitoring = false;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly configService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)\n private readonly rabbitMQAdapter: RabbitMQAdapterBackendService,\n ) {\n this.logDebug = this.logger.debugByType('QueueMonitoringBackendService');\n this.logger.setDebugTypeLogging('QueueMonitoringBackendService', false);\n }\n\n /**\n * Start monitoring queues at the specified interval.\n */\n startMonitoring(intervalMs: number = 30000): void {\n if (this.isMonitoring) {\n this.logger.warn('Queue monitoring is already running');\n return;\n }\n\n this.isMonitoring = true;\n this.logDebug('Starting queue monitoring', { intervalMs });\n\n this.monitoringInterval = setInterval(async () => {\n try {\n await this.checkAllQueues();\n } catch (error) {\n this.logger.error('Error during queue monitoring check', {\n ...projectCaughtErrorLogFields(error),\n });\n }\n }, intervalMs);\n\n // Initial check\n this.checkAllQueues().catch((error) => {\n this.logger.error('Error during initial queue monitoring check', {\n ...projectCaughtErrorLogFields(error),\n });\n });\n }\n\n /**\n * Stop monitoring queues.\n */\n stopMonitoring(): void {\n if (this.monitoringInterval) {\n clearInterval(this.monitoringInterval);\n this.monitoringInterval = null;\n }\n this.isMonitoring = false;\n this.logDebug('Queue monitoring stopped');\n }\n\n /**\n * Register an alert callback.\n */\n onAlert(callback: QueueAlertCallback): void {\n this.alertCallbacks.push(callback);\n }\n\n /**\n * Set alert thresholds for a queue.\n */\n setAlertThreshold(queueName: string, threshold: QueueAlertThreshold): void {\n this.alertThresholds.set(queueName, threshold);\n this.logDebug('Alert threshold set', { queueName, threshold });\n }\n\n /**\n * Get metrics for a specific queue.\n * Also checks the corresponding dead letter queue if it exists.\n */\n async getQueueMetrics(queueName: string): Promise<QueueMetrics> {\n const channel = this.rabbitMQAdapter.getChannel();\n\n if (!channel) {\n return this.createEmptyMetrics(queueName);\n }\n\n try {\n // Get queue info from RabbitMQ\n const queueInfo = await channel.checkQueue(queueName);\n\n // Note: Dead letter queue check is skipped because channel.checkQueue() closes the channel\n // if the queue doesn't exist. Only specific DLQ queues exist (operations.deadletter, etc.),\n // not per-variant (operations.priority.deadletter). DLQ monitoring should be done via\n // explicit queue name list instead.\n\n return {\n queueName,\n pendingCount: queueInfo.messageCount,\n processingCount: 0, // Would need consumer tracking\n deadLetterCount: 0, // Skipped - see note above\n publishRatePerMinute: 0, // Would need historical tracking\n consumeRatePerMinute: 0,\n avgProcessingTimeMs: 0,\n p95ProcessingTimeMs: 0,\n p99ProcessingTimeMs: 0,\n errorRate: 0,\n retryRate: 0,\n collectedAt: new Date(),\n };\n } catch (error) {\n // Queue might not exist yet\n this.logDebug('Could not get queue metrics', {\n queueName,\n error: describeCaughtError(error),\n });\n return this.createEmptyMetrics(queueName);\n }\n }\n\n /**\n * Get health summary for all monitored queues.\n */\n async getHealthSummary(): Promise<QueueHealthSummary> {\n const appId = this.configService.applicationId;\n // Mono-env: queue names are wildo.queue.{appId}.{category}[.{variant}]\n const queues = [\n `wildo.queue.${appId}.operations`,\n `wildo.queue.${appId}.operations.priority`,\n `wildo.queue.${appId}.scheduled`,\n `wildo.queue.${appId}.callbacks`,\n ];\n\n let overallStatus: QueueHealthStatus = QueueHealthStatus.HEALTHY;\n let healthyQueues = 0;\n let degradedQueues = 0;\n let unhealthyQueues = 0;\n const activeAlerts: Array<{\n queueName: string;\n alertType: string;\n value: number;\n threshold: number;\n triggeredAt: Date;\n }> = [];\n\n for (const queueName of queues) {\n const metrics = await this.getQueueMetrics(queueName);\n\n // Check thresholds\n const threshold = this.alertThresholds.get(queueName);\n if (threshold) {\n const status = this.evaluateQueueHealth(metrics, threshold);\n\n if (status === QueueHealthStatus.UNHEALTHY) {\n overallStatus = QueueHealthStatus.UNHEALTHY;\n unhealthyQueues++;\n activeAlerts.push({\n queueName,\n alertType: 'pending_count_exceeded',\n value: metrics.pendingCount,\n threshold: threshold.pendingCountThreshold ?? 0,\n triggeredAt: new Date(),\n });\n } else if (status === QueueHealthStatus.DEGRADED) {\n if (overallStatus === QueueHealthStatus.HEALTHY) {\n overallStatus = QueueHealthStatus.DEGRADED;\n }\n degradedQueues++;\n activeAlerts.push({\n queueName,\n alertType: 'queue_degraded',\n value: metrics.pendingCount,\n threshold: threshold.pendingCountThreshold ?? 0,\n triggeredAt: new Date(),\n });\n } else {\n healthyQueues++;\n }\n } else {\n healthyQueues++;\n }\n }\n\n return {\n status: overallStatus,\n healthyQueues,\n degradedQueues,\n unhealthyQueues,\n activeAlerts,\n checkedAt: new Date(),\n };\n }\n\n /**\n * Check if RabbitMQ connection is healthy.\n */\n async isRabbitMQHealthy(): Promise<boolean> {\n return this.rabbitMQAdapter.isConnected();\n }\n\n /**\n * Evaluate queue health based on thresholds.\n */\n private evaluateQueueHealth(\n metrics: QueueMetrics,\n threshold: QueueAlertThreshold\n ): QueueHealthStatus {\n // Check pending count threshold\n if (threshold.pendingCountThreshold !== undefined) {\n if (metrics.pendingCount >= threshold.pendingCountThreshold * 2) {\n return QueueHealthStatus.UNHEALTHY;\n }\n if (metrics.pendingCount >= threshold.pendingCountThreshold) {\n return QueueHealthStatus.DEGRADED;\n }\n }\n\n // Check dead letter threshold\n if (threshold.deadLetterThreshold !== undefined) {\n if (metrics.deadLetterCount >= threshold.deadLetterThreshold) {\n return QueueHealthStatus.UNHEALTHY;\n }\n }\n\n // Check error rate threshold\n if (threshold.errorRateThreshold !== undefined) {\n if (metrics.errorRate >= threshold.errorRateThreshold) {\n return QueueHealthStatus.DEGRADED;\n }\n }\n\n // Check latency threshold\n if (threshold.latencyThresholdMs !== undefined) {\n if (metrics.p95ProcessingTimeMs >= threshold.latencyThresholdMs) {\n return QueueHealthStatus.DEGRADED;\n }\n }\n\n return QueueHealthStatus.HEALTHY;\n }\n\n /**\n * Check all queues and trigger alerts if needed.\n */\n private async checkAllQueues(): Promise<void> {\n const summary = await this.getHealthSummary();\n\n if (summary.status !== QueueHealthStatus.HEALTHY) {\n for (const alert of summary.activeAlerts) {\n await this.triggerAlert(\n summary.status === QueueHealthStatus.UNHEALTHY ? 'critical' : 'warning',\n alert.queueName,\n {\n alertType: alert.alertType,\n value: alert.value,\n threshold: alert.threshold,\n summary,\n }\n );\n }\n }\n }\n\n /**\n * Trigger an alert to all registered callbacks.\n */\n private async triggerAlert(\n alertType: string,\n queueName: string,\n details: Record<string, unknown>\n ): Promise<void> {\n this.logger.warn('Queue alert triggered', { alertType, queueName, details });\n\n for (const callback of this.alertCallbacks) {\n try {\n await callback(alertType, queueName, details);\n } catch (error) {\n this.logger.error('Error in alert callback', {\n ...projectCaughtErrorLogFields(error),\n });\n }\n }\n }\n\n /**\n * Create empty metrics for a queue.\n */\n private createEmptyMetrics(queueName: string): QueueMetrics {\n return {\n queueName,\n pendingCount: 0,\n processingCount: 0,\n deadLetterCount: 0,\n publishRatePerMinute: 0,\n consumeRatePerMinute: 0,\n avgProcessingTimeMs: 0,\n p95ProcessingTimeMs: 0,\n p99ProcessingTimeMs: 0,\n errorRate: 0,\n retryRate: 0,\n collectedAt: new Date(),\n };\n }\n}\n"]}
1
+ {"version":3,"file":"queue-monitoring.backend.service.js","sourceRoot":"","sources":["../../../src/queue/queue-monitoring.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Queue Monitoring Backend Service\n *\n * Provides metrics, health checks, and alerting for the queue system.\n * Integrates with RabbitMQ for queue statistics and the job tracking system.\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport type { QueueAdapter } from './adapters/queue-adapter.backend.interface';\nimport {\n QueueMetrics,\n QueueHealthSummary,\n QueueHealthStatus,\n QueueAlertThreshold,\n} from '@wildo-ai/saas-models';\n\n/**\n * Alert callback type for queue monitoring.\n */\nexport type QueueAlertCallback = (\n alertType: string,\n queueName: string,\n details: Record<string, unknown>\n) => void | Promise<void>;\n\n@injectable()\nexport class QueueMonitoringBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private alertCallbacks: QueueAlertCallback[] = [];\n private alertThresholds: Map<string, QueueAlertThreshold> = new Map();\n private monitoringInterval: NodeJS.Timeout | null = null;\n private isMonitoring = false;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly configService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)\n private readonly queueAdapter: QueueAdapter,\n ) {\n this.logDebug = this.logger.debugByType('QueueMonitoringBackendService');\n this.logger.setDebugTypeLogging('QueueMonitoringBackendService', false);\n }\n\n /**\n * Start monitoring queues at the specified interval.\n */\n startMonitoring(intervalMs: number = 30000): void {\n if (this.isMonitoring) {\n this.logger.warn('Queue monitoring is already running');\n return;\n }\n\n this.isMonitoring = true;\n this.logDebug('Starting queue monitoring', { intervalMs });\n\n this.monitoringInterval = setInterval(async () => {\n try {\n await this.checkAllQueues();\n } catch (error) {\n this.logger.error('Error during queue monitoring check', {\n ...projectCaughtErrorLogFields(error),\n });\n }\n }, intervalMs);\n\n // Initial check\n this.checkAllQueues().catch((error) => {\n this.logger.error('Error during initial queue monitoring check', {\n ...projectCaughtErrorLogFields(error),\n });\n });\n }\n\n /**\n * Stop monitoring queues.\n */\n stopMonitoring(): void {\n if (this.monitoringInterval) {\n clearInterval(this.monitoringInterval);\n this.monitoringInterval = null;\n }\n this.isMonitoring = false;\n this.logDebug('Queue monitoring stopped');\n }\n\n /**\n * Register an alert callback.\n */\n onAlert(callback: QueueAlertCallback): void {\n this.alertCallbacks.push(callback);\n }\n\n /**\n * Set alert thresholds for a queue.\n */\n setAlertThreshold(queueName: string, threshold: QueueAlertThreshold): void {\n this.alertThresholds.set(queueName, threshold);\n this.logDebug('Alert threshold set', { queueName, threshold });\n }\n\n /**\n * Get metrics for a specific queue.\n * Also checks the corresponding dead letter queue if it exists.\n */\n async getQueueMetrics(queueName: string): Promise<QueueMetrics> {\n /*\n * Asks the ADAPTER how deep the queue is, rather than reaching through it for an amqplib\n * channel (#502). Behaviour is unchanged for RabbitMQ — `null` here is what a null channel\n * produced before, and it still yields empty metrics — but the question is now one every\n * adapter can answer about itself, so a broker-free runtime reports real numbers instead of\n * being structurally unable to be monitored.\n *\n * Dead-letter depth stays unreported: on RabbitMQ `checkQueue` CLOSES the channel when the\n * queue does not exist, and only specific DLQs exist (`operations.deadletter`, not the\n * per-variant `operations.priority.deadletter`). That needs an explicit queue-name list, and it\n * is unrelated to this change.\n */\n const pendingCount = await this.queueAdapter.getQueueDepth(queueName);\n\n if (pendingCount === null) {\n return this.createEmptyMetrics(queueName);\n }\n\n try {\n return {\n queueName,\n pendingCount,\n processingCount: 0, // Would need consumer tracking\n deadLetterCount: 0, // Skipped - see note above\n publishRatePerMinute: 0, // Would need historical tracking\n consumeRatePerMinute: 0,\n avgProcessingTimeMs: 0,\n p95ProcessingTimeMs: 0,\n p99ProcessingTimeMs: 0,\n errorRate: 0,\n retryRate: 0,\n collectedAt: new Date(),\n };\n } catch (error) {\n // Queue might not exist yet\n this.logDebug('Could not get queue metrics', {\n queueName,\n error: describeCaughtError(error),\n });\n return this.createEmptyMetrics(queueName);\n }\n }\n\n /**\n * Get health summary for all monitored queues.\n */\n async getHealthSummary(): Promise<QueueHealthSummary> {\n const appId = this.configService.applicationId;\n // Mono-env: queue names are wildo.queue.{appId}.{category}[.{variant}]\n const queues = [\n `wildo.queue.${appId}.operations`,\n `wildo.queue.${appId}.operations.priority`,\n `wildo.queue.${appId}.scheduled`,\n `wildo.queue.${appId}.callbacks`,\n ];\n\n let overallStatus: QueueHealthStatus = QueueHealthStatus.HEALTHY;\n let healthyQueues = 0;\n let degradedQueues = 0;\n let unhealthyQueues = 0;\n const activeAlerts: Array<{\n queueName: string;\n alertType: string;\n value: number;\n threshold: number;\n triggeredAt: Date;\n }> = [];\n\n for (const queueName of queues) {\n const metrics = await this.getQueueMetrics(queueName);\n\n // Check thresholds\n const threshold = this.alertThresholds.get(queueName);\n if (threshold) {\n const status = this.evaluateQueueHealth(metrics, threshold);\n\n if (status === QueueHealthStatus.UNHEALTHY) {\n overallStatus = QueueHealthStatus.UNHEALTHY;\n unhealthyQueues++;\n activeAlerts.push({\n queueName,\n alertType: 'pending_count_exceeded',\n value: metrics.pendingCount,\n threshold: threshold.pendingCountThreshold ?? 0,\n triggeredAt: new Date(),\n });\n } else if (status === QueueHealthStatus.DEGRADED) {\n if (overallStatus === QueueHealthStatus.HEALTHY) {\n overallStatus = QueueHealthStatus.DEGRADED;\n }\n degradedQueues++;\n activeAlerts.push({\n queueName,\n alertType: 'queue_degraded',\n value: metrics.pendingCount,\n threshold: threshold.pendingCountThreshold ?? 0,\n triggeredAt: new Date(),\n });\n } else {\n healthyQueues++;\n }\n } else {\n healthyQueues++;\n }\n }\n\n return {\n status: overallStatus,\n healthyQueues,\n degradedQueues,\n unhealthyQueues,\n activeAlerts,\n checkedAt: new Date(),\n };\n }\n\n /**\n * Whether the queue substrate this runtime uses is connected.\n *\n * Named `isRabbitMQHealthy` for its callers' sake and answered by whichever adapter is bound\n * (#502) — an in-memory queue reports connected once `connect()` has run, which is the honest\n * answer to \"can this runtime enqueue work\" regardless of what is behind it.\n */\n async isRabbitMQHealthy(): Promise<boolean> {\n return this.queueAdapter.isConnected();\n }\n\n /**\n * Evaluate queue health based on thresholds.\n */\n private evaluateQueueHealth(\n metrics: QueueMetrics,\n threshold: QueueAlertThreshold\n ): QueueHealthStatus {\n // Check pending count threshold\n if (threshold.pendingCountThreshold !== undefined) {\n if (metrics.pendingCount >= threshold.pendingCountThreshold * 2) {\n return QueueHealthStatus.UNHEALTHY;\n }\n if (metrics.pendingCount >= threshold.pendingCountThreshold) {\n return QueueHealthStatus.DEGRADED;\n }\n }\n\n // Check dead letter threshold\n if (threshold.deadLetterThreshold !== undefined) {\n if (metrics.deadLetterCount >= threshold.deadLetterThreshold) {\n return QueueHealthStatus.UNHEALTHY;\n }\n }\n\n // Check error rate threshold\n if (threshold.errorRateThreshold !== undefined) {\n if (metrics.errorRate >= threshold.errorRateThreshold) {\n return QueueHealthStatus.DEGRADED;\n }\n }\n\n // Check latency threshold\n if (threshold.latencyThresholdMs !== undefined) {\n if (metrics.p95ProcessingTimeMs >= threshold.latencyThresholdMs) {\n return QueueHealthStatus.DEGRADED;\n }\n }\n\n return QueueHealthStatus.HEALTHY;\n }\n\n /**\n * Check all queues and trigger alerts if needed.\n */\n private async checkAllQueues(): Promise<void> {\n const summary = await this.getHealthSummary();\n\n if (summary.status !== QueueHealthStatus.HEALTHY) {\n for (const alert of summary.activeAlerts) {\n await this.triggerAlert(\n summary.status === QueueHealthStatus.UNHEALTHY ? 'critical' : 'warning',\n alert.queueName,\n {\n alertType: alert.alertType,\n value: alert.value,\n threshold: alert.threshold,\n summary,\n }\n );\n }\n }\n }\n\n /**\n * Trigger an alert to all registered callbacks.\n */\n private async triggerAlert(\n alertType: string,\n queueName: string,\n details: Record<string, unknown>\n ): Promise<void> {\n this.logger.warn('Queue alert triggered', { alertType, queueName, details });\n\n for (const callback of this.alertCallbacks) {\n try {\n await callback(alertType, queueName, details);\n } catch (error) {\n this.logger.error('Error in alert callback', {\n ...projectCaughtErrorLogFields(error),\n });\n }\n }\n }\n\n /**\n * Create empty metrics for a queue.\n */\n private createEmptyMetrics(queueName: string): QueueMetrics {\n return {\n queueName,\n pendingCount: 0,\n processingCount: 0,\n deadLetterCount: 0,\n publishRatePerMinute: 0,\n consumeRatePerMinute: 0,\n avgProcessingTimeMs: 0,\n p95ProcessingTimeMs: 0,\n p99ProcessingTimeMs: 0,\n errorRate: 0,\n retryRate: 0,\n collectedAt: new Date(),\n };\n }\n}\n"]}
@@ -1,8 +1,21 @@
1
1
  /**
2
+ * @wildo_source:part:start saas.backend.queue.worker-topology facet:layer:backend facet:audience:app-developer
3
+ *
4
+ * Where an application's background jobs actually run.
5
+ *
6
+ * ⚠️ **Queue consumers are NOT a separate tier.** They run inside each backend API pod, so every pod
7
+ * both ENQUEUES jobs (as an API handler) and CONSUMES them (as a worker). The consequence is the one
8
+ * that matters when a queue backs up: **scaling job processing means scaling the BACKEND**, not
9
+ * adding worker processes.
10
+ *
11
+ * ⚠️ **A declared `workers:` entry is a different thing entirely, and its name misleads.** That is a
12
+ * standalone HTTP service the backend CALLS — it never connects to the broker, has no database and
13
+ * no cache, and cannot read or write application resources except through what the caller puts in the
14
+ * request. Adding one does not add queue capacity.
15
+ *
2
16
  * Queue Worker Initializer Backend Service
3
17
  *
4
18
  * Initializes queue workers within the backend API application.
5
- * Workers are NOT separate microservices - they run inside each backend API pod.
6
19
  *
7
20
  * This service is called during application startup to:
8
21
  * 1. Connect to RabbitMQ
@@ -13,6 +26,8 @@
13
26
  * Every backend API pod can both:
14
27
  * - Enqueue jobs (as API handlers)
15
28
  * - Consume and execute jobs (as workers)
29
+ *
30
+ * @wildo_source:part:end saas.backend.queue.worker-topology
16
31
  */
17
32
  import { LoggerService } from '../monitoring/logger/services/logger.service';
18
33
  import { AppConfigurationService } from '../config/services/app-configuration.backend.service';
@@ -1 +1 @@
1
- {"version":3,"file":"queue-worker-initializer.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/queue/queue-worker-initializer.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAE7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mCAAmC,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AASD,qBACa,oCAAoC;IAO7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAhB7B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAA+C;gBAI1C,MAAM,EAAE,aAAa,EAErB,gBAAgB,EAAE,uBAAuB,EAEzC,YAAY,EAAE,mBAAmB,EAEjC,WAAW,EAAE,yBAAyB,EAEtC,eAAe,EAAE,mCAAmC,EAEpD,UAAU,EAAE,6BAA6B;IAM5D;;;;;OAKG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkF3D;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
1
+ {"version":3,"file":"queue-worker-initializer.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/queue-worker-initializer.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAE7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mCAAmC,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AASD,qBACa,oCAAoC;IAO7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAhB7B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAA+C;gBAI1C,MAAM,EAAE,aAAa,EAErB,gBAAgB,EAAE,uBAAuB,EAEzC,YAAY,EAAE,mBAAmB,EAEjC,WAAW,EAAE,yBAAyB,EAEtC,eAAe,EAAE,mCAAmC,EAEpD,UAAU,EAAE,6BAA6B;IAM5D;;;;;OAKG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkF3D;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
@@ -1,8 +1,21 @@
1
1
  /**
2
+ * @wildo_source:part:start saas.backend.queue.worker-topology facet:layer:backend facet:audience:app-developer
3
+ *
4
+ * Where an application's background jobs actually run.
5
+ *
6
+ * ⚠️ **Queue consumers are NOT a separate tier.** They run inside each backend API pod, so every pod
7
+ * both ENQUEUES jobs (as an API handler) and CONSUMES them (as a worker). The consequence is the one
8
+ * that matters when a queue backs up: **scaling job processing means scaling the BACKEND**, not
9
+ * adding worker processes.
10
+ *
11
+ * ⚠️ **A declared `workers:` entry is a different thing entirely, and its name misleads.** That is a
12
+ * standalone HTTP service the backend CALLS — it never connects to the broker, has no database and
13
+ * no cache, and cannot read or write application resources except through what the caller puts in the
14
+ * request. Adding one does not add queue capacity.
15
+ *
2
16
  * Queue Worker Initializer Backend Service
3
17
  *
4
18
  * Initializes queue workers within the backend API application.
5
- * Workers are NOT separate microservices - they run inside each backend API pod.
6
19
  *
7
20
  * This service is called during application startup to:
8
21
  * 1. Connect to RabbitMQ
@@ -13,6 +26,8 @@
13
26
  * Every backend API pod can both:
14
27
  * - Enqueue jobs (as API handlers)
15
28
  * - Consume and execute jobs (as workers)
29
+ *
30
+ * @wildo_source:part:end saas.backend.queue.worker-topology
16
31
  */
17
32
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
33
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"queue-worker-initializer.backend.service.js","sourceRoot":"","sources":["../../../../src/queue/queue-worker-initializer.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Queue Worker Initializer Backend Service\n *\n * Initializes queue workers within the backend API application.\n * Workers are NOT separate microservices - they run inside each backend API pod.\n *\n * This service is called during application startup to:\n * 1. Connect to RabbitMQ\n * 2. Start job consumers for operations queues\n * 3. Start monitoring\n * 4. Register graceful shutdown handlers\n *\n * Every backend API pod can both:\n * - Enqueue jobs (as API handlers)\n * - Consume and execute jobs (as workers)\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { QueueBackendService } from './queue.backend.service';\nimport { JobConsumerBackendService } from './job-consumer.backend.service';\nimport { WorkerShutdownManagerBackendService } from './worker-shutdown-manager.backend.service';\nimport { QueueMonitoringBackendService } from './queue-monitoring.backend.service';\n\n/**\n * Configuration for queue worker initialization.\n */\nexport interface QueueWorkerConfig {\n /** Whether to enable queue workers (default: true) */\n enabled?: boolean;\n\n /**\n * Whether to start the shared application job consumers — the subscriptions\n * on the `operations` / `operations.priority` / `scheduled` / `callbacks`\n * queues drained by {@link JobConsumerBackendService} (default: `true`).\n *\n * Headless runtimes that connect to RabbitMQ ONLY for their own dedicated\n * topology — the canonical case is a `BackgroundRuntimeType.MINION`, which\n * consumes just its `wildo.queue.<appId>.minion-tick.<name>` queue — set this\n * to `false`. When `false`, {@link initializeForWorker} still runs (the\n * broker connection + topology channel are required by the minion's own tick\n * consumer) but {@link JobConsumerBackendService.startConsuming} is skipped.\n *\n * WHY THIS MATTERS: a minion reuses the full backend startup lifecycle. If it\n * also subscribed to the shared `scheduled` queue, RabbitMQ would round-robin\n * every scheduled-cron tick between the backend-api pod and the minion, and\n * the minion — which only understands its own tick tokens — would nack every\n * foreign message straight to the dead-letter queue (≈50% loss of scheduled\n * work for any app that runs a minion).\n */\n startJobConsumers?: boolean;\n\n /** Whether to start queue monitoring (default: true) */\n enableMonitoring?: boolean;\n\n /** Monitoring interval in milliseconds (default: 30000) */\n monitoringIntervalMs?: number;\n}\n\nconst DEFAULT_CONFIG: Required<QueueWorkerConfig> = {\n enabled: true,\n startJobConsumers: true,\n enableMonitoring: true,\n monitoringIntervalMs: 30000,\n};\n\n@injectable()\nexport class QueueWorkerInitializerBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private isInitialized = false;\n private config: Required<QueueWorkerConfig> = DEFAULT_CONFIG;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.QueueBackendService)\n private readonly queueService: QueueBackendService,\n @inject(SAAS_SERVICE_TYPES.JobConsumerService)\n private readonly jobConsumer: JobConsumerBackendService,\n @inject(SAAS_SERVICE_TYPES.WorkerShutdownManagerService)\n private readonly shutdownManager: WorkerShutdownManagerBackendService,\n @inject(SAAS_SERVICE_TYPES.QueueMonitoringService)\n private readonly monitoring: QueueMonitoringBackendService,\n ) {\n this.logDebug = this.logger.debugByType('QueueWorkerInitializerBackendService');\n this.logger.setDebugTypeLogging('QueueWorkerInitializerBackendService', false);\n }\n\n /**\n * Initialize queue workers.\n * Called during application startup after all other services are ready.\n *\n * @param config - Optional configuration overrides\n */\n async initialize(config?: QueueWorkerConfig): Promise<void> {\n if (this.isInitialized) {\n this.logger.warn('Queue workers already initialized');\n return;\n }\n\n // Merge config with defaults\n this.config = { ...DEFAULT_CONFIG, ...config };\n\n // Check if queue workers are disabled\n if (!this.config.enabled) {\n this.logger.info('Queue workers disabled by configuration');\n this.isInitialized = true;\n return;\n }\n\n // Check if RabbitMQ is configured\n const appConfig = this.appConfigService.config;\n if (!appConfig.database?.rabbitmq) {\n this.logDebug('RabbitMQ not configured, skipping queue worker initialization');\n this.isInitialized = true;\n return;\n }\n\n try {\n this.logDebug('Initializing queue workers...');\n\n // Step 1: Initialize queue service (connects to RabbitMQ)\n await this.queueService.initializeForWorker();\n this.logDebug('RabbitMQ connected');\n\n // Step 2: Register shutdown handlers\n // Stop handlers are called FIRST (stop accepting new work)\n // Shutdown handlers are called LAST (final cleanup)\n this.shutdownManager.registerSignalHandlers();\n\n // Register stop handler to stop consuming new jobs.\n // Registered UNCONDITIONALLY (regardless of startJobConsumers /\n // enableMonitoring): both `stopConsuming()` and `stopMonitoring()`\n // short-circuit to a no-op when their subsystem never started, so a\n // runtime that opted out still gets a correct, side-effect-free stop\n // handler without leaking a monitoring interval on shutdown.\n this.shutdownManager.registerStopHandler(async () => {\n this.logDebug('Stopping queue consumers...');\n await this.jobConsumer.stopConsuming();\n this.monitoring.stopMonitoring();\n });\n\n // Step 3: Start consuming jobs — unless this runtime opted out via\n // `startJobConsumers: false`. A minion connects (Step 1) for its own\n // dedicated tick queue only and must NOT drain the shared\n // operations/scheduled/callbacks queues (see the field JSDoc above).\n if (this.config.startJobConsumers) {\n this.logDebug('Starting job consumers...');\n await this.jobConsumer.startConsuming();\n this.logDebug('Job consumers started');\n } else {\n this.logDebug(\n 'Job consumers disabled for this runtime — the shared application job '\n + 'queues (operations/scheduled/callbacks) are left to the backend-api pod',\n );\n }\n\n // Step 4: Start monitoring (optional)\n if (this.config.enableMonitoring) {\n this.monitoring.startMonitoring(this.config.monitoringIntervalMs);\n this.logDebug('Queue monitoring started');\n }\n\n this.isInitialized = true;\n this.logDebug('Queue workers initialized successfully');\n\n } catch (error) {\n this.logger.error('❌ Queue worker initialization failed', {\n ...projectCaughtErrorLogFields(error),\n });\n // Don't throw - queue workers failing shouldn't prevent the app from starting\n // The app can still function, just without background job processing\n this.logger.warn('⚠️ Application will continue without queue workers');\n }\n }\n\n /**\n * Check if queue workers are initialized and running.\n */\n isRunning(): boolean {\n return this.isInitialized && this.config.enabled;\n }\n\n /**\n * Gracefully shutdown queue workers.\n * Note: This stops consumers and monitoring but does NOT exit the process.\n * Process exit is handled by WorkerShutdownManager's signal handlers.\n */\n async shutdown(): Promise<void> {\n if (!this.isInitialized) {\n return;\n }\n\n this.logger.info('🛑 Shutting down queue workers...');\n\n try {\n // Stop consumers (this is also called by shutdown handlers, but safe to call twice)\n await this.jobConsumer.stopConsuming();\n\n // Stop monitoring\n this.monitoring.stopMonitoring();\n\n this.logger.info('✅ Queue workers shut down');\n } catch (error) {\n this.logger.error('❌ Queue worker shutdown error', {\n ...projectCaughtErrorLogFields(error),\n });\n }\n\n this.isInitialized = false;\n }\n}\n"]}
1
+ {"version":3,"file":"queue-worker-initializer.backend.service.js","sourceRoot":"","sources":["../../../src/queue/queue-worker-initializer.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;;;;;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AAC3H,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mCAAmC,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAqCnF,MAAM,cAAc,GAAgC;IAClD,OAAO,EAAE,IAAI;IACb,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAGK,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAO5B;IAEA;IAEA;IAEA;IAEA;IAEA;IAhBT,QAAQ,CAA+D;IACzE,aAAa,GAAG,KAAK,CAAC;IACtB,MAAM,GAAgC,cAAc,CAAC;IAE7D,YAEmB,MAAqB,EAErB,gBAAyC,EAEzC,YAAiC,EAEjC,WAAsC,EAEtC,eAAoD,EAEpD,UAAyC;QAVzC,WAAM,GAAN,MAAM,CAAe;QAErB,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEzC,iBAAY,GAAZ,YAAY,CAAqB;QAEjC,gBAAW,GAAX,WAAW,CAA2B;QAEtC,oBAAe,GAAf,eAAe,CAAqC;QAEpD,eAAU,GAAV,UAAU,CAA+B;QAE1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,MAA0B;QACzC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAE/C,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,+DAA+D,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YAE/C,0DAA0D;YAC1D,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAEpC,qCAAqC;YACrC,2DAA2D;YAC3D,oDAAoD;YACpD,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YAE9C,oDAAoD;YACpD,gEAAgE;YAChE,mEAAmE;YACnE,oEAAoE;YACpE,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE;gBAClD,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,mEAAmE;YACnE,qEAAqE;YACrE,0DAA0D;YAC1D,qEAAqE;YACrE,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBACxC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CACX,uEAAuE;sBACrE,yEAAyE,CAC5E,CAAC;YACJ,CAAC;YAED,sCAAsC;YACtC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC;QAE1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBACxD,GAAG,2BAA2B,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YACH,8EAA8E;YAC9E,qEAAqE;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,oFAAoF;YACpF,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAEvC,kBAAkB;YAClB,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACjD,GAAG,2BAA2B,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;CACF,CAAA;AAlJY,oCAAoC;IADhD,UAAU,EAAE;IAOR,WAAA,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAEjC,WAAA,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;IAE3C,WAAA,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;IAE9C,WAAA,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;IAE7C,WAAA,MAAM,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,CAAA;IAEvD,WAAA,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;qCATzB,aAAa;QAEH,uBAAuB;QAE3B,mBAAmB;QAEpB,yBAAyB;QAErB,mCAAmC;QAExC,6BAA6B;GAjBjD,oCAAoC,CAkJhD","sourcesContent":["/**\n * @wildo_source:part:start saas.backend.queue.worker-topology facet:layer:backend facet:audience:app-developer\n *\n * Where an application's background jobs actually run.\n *\n * ⚠️ **Queue consumers are NOT a separate tier.** They run inside each backend API pod, so every pod\n * both ENQUEUES jobs (as an API handler) and CONSUMES them (as a worker). The consequence is the one\n * that matters when a queue backs up: **scaling job processing means scaling the BACKEND**, not\n * adding worker processes.\n *\n * ⚠️ **A declared `workers:` entry is a different thing entirely, and its name misleads.** That is a\n * standalone HTTP service the backend CALLS — it never connects to the broker, has no database and\n * no cache, and cannot read or write application resources except through what the caller puts in the\n * request. Adding one does not add queue capacity.\n *\n * Queue Worker Initializer Backend Service\n *\n * Initializes queue workers within the backend API application.\n *\n * This service is called during application startup to:\n * 1. Connect to RabbitMQ\n * 2. Start job consumers for operations queues\n * 3. Start monitoring\n * 4. Register graceful shutdown handlers\n *\n * Every backend API pod can both:\n * - Enqueue jobs (as API handlers)\n * - Consume and execute jobs (as workers)\n *\n * @wildo_source:part:end saas.backend.queue.worker-topology\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { QueueBackendService } from './queue.backend.service';\nimport { JobConsumerBackendService } from './job-consumer.backend.service';\nimport { WorkerShutdownManagerBackendService } from './worker-shutdown-manager.backend.service';\nimport { QueueMonitoringBackendService } from './queue-monitoring.backend.service';\n\n/**\n * Configuration for queue worker initialization.\n */\nexport interface QueueWorkerConfig {\n /** Whether to enable queue workers (default: true) */\n enabled?: boolean;\n\n /**\n * Whether to start the shared application job consumers — the subscriptions\n * on the `operations` / `operations.priority` / `scheduled` / `callbacks`\n * queues drained by {@link JobConsumerBackendService} (default: `true`).\n *\n * Headless runtimes that connect to RabbitMQ ONLY for their own dedicated\n * topology — the canonical case is a `BackgroundRuntimeType.MINION`, which\n * consumes just its `wildo.queue.<appId>.minion-tick.<name>` queue — set this\n * to `false`. When `false`, {@link initializeForWorker} still runs (the\n * broker connection + topology channel are required by the minion's own tick\n * consumer) but {@link JobConsumerBackendService.startConsuming} is skipped.\n *\n * WHY THIS MATTERS: a minion reuses the full backend startup lifecycle. If it\n * also subscribed to the shared `scheduled` queue, RabbitMQ would round-robin\n * every scheduled-cron tick between the backend-api pod and the minion, and\n * the minion — which only understands its own tick tokens — would nack every\n * foreign message straight to the dead-letter queue (≈50% loss of scheduled\n * work for any app that runs a minion).\n */\n startJobConsumers?: boolean;\n\n /** Whether to start queue monitoring (default: true) */\n enableMonitoring?: boolean;\n\n /** Monitoring interval in milliseconds (default: 30000) */\n monitoringIntervalMs?: number;\n}\n\nconst DEFAULT_CONFIG: Required<QueueWorkerConfig> = {\n enabled: true,\n startJobConsumers: true,\n enableMonitoring: true,\n monitoringIntervalMs: 30000,\n};\n\n@injectable()\nexport class QueueWorkerInitializerBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private isInitialized = false;\n private config: Required<QueueWorkerConfig> = DEFAULT_CONFIG;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.QueueBackendService)\n private readonly queueService: QueueBackendService,\n @inject(SAAS_SERVICE_TYPES.JobConsumerService)\n private readonly jobConsumer: JobConsumerBackendService,\n @inject(SAAS_SERVICE_TYPES.WorkerShutdownManagerService)\n private readonly shutdownManager: WorkerShutdownManagerBackendService,\n @inject(SAAS_SERVICE_TYPES.QueueMonitoringService)\n private readonly monitoring: QueueMonitoringBackendService,\n ) {\n this.logDebug = this.logger.debugByType('QueueWorkerInitializerBackendService');\n this.logger.setDebugTypeLogging('QueueWorkerInitializerBackendService', false);\n }\n\n /**\n * Initialize queue workers.\n * Called during application startup after all other services are ready.\n *\n * @param config - Optional configuration overrides\n */\n async initialize(config?: QueueWorkerConfig): Promise<void> {\n if (this.isInitialized) {\n this.logger.warn('Queue workers already initialized');\n return;\n }\n\n // Merge config with defaults\n this.config = { ...DEFAULT_CONFIG, ...config };\n\n // Check if queue workers are disabled\n if (!this.config.enabled) {\n this.logger.info('Queue workers disabled by configuration');\n this.isInitialized = true;\n return;\n }\n\n // Check if RabbitMQ is configured\n const appConfig = this.appConfigService.config;\n if (!appConfig.database?.rabbitmq) {\n this.logDebug('RabbitMQ not configured, skipping queue worker initialization');\n this.isInitialized = true;\n return;\n }\n\n try {\n this.logDebug('Initializing queue workers...');\n\n // Step 1: Initialize queue service (connects to RabbitMQ)\n await this.queueService.initializeForWorker();\n this.logDebug('RabbitMQ connected');\n\n // Step 2: Register shutdown handlers\n // Stop handlers are called FIRST (stop accepting new work)\n // Shutdown handlers are called LAST (final cleanup)\n this.shutdownManager.registerSignalHandlers();\n\n // Register stop handler to stop consuming new jobs.\n // Registered UNCONDITIONALLY (regardless of startJobConsumers /\n // enableMonitoring): both `stopConsuming()` and `stopMonitoring()`\n // short-circuit to a no-op when their subsystem never started, so a\n // runtime that opted out still gets a correct, side-effect-free stop\n // handler without leaking a monitoring interval on shutdown.\n this.shutdownManager.registerStopHandler(async () => {\n this.logDebug('Stopping queue consumers...');\n await this.jobConsumer.stopConsuming();\n this.monitoring.stopMonitoring();\n });\n\n // Step 3: Start consuming jobs — unless this runtime opted out via\n // `startJobConsumers: false`. A minion connects (Step 1) for its own\n // dedicated tick queue only and must NOT drain the shared\n // operations/scheduled/callbacks queues (see the field JSDoc above).\n if (this.config.startJobConsumers) {\n this.logDebug('Starting job consumers...');\n await this.jobConsumer.startConsuming();\n this.logDebug('Job consumers started');\n } else {\n this.logDebug(\n 'Job consumers disabled for this runtime — the shared application job '\n + 'queues (operations/scheduled/callbacks) are left to the backend-api pod',\n );\n }\n\n // Step 4: Start monitoring (optional)\n if (this.config.enableMonitoring) {\n this.monitoring.startMonitoring(this.config.monitoringIntervalMs);\n this.logDebug('Queue monitoring started');\n }\n\n this.isInitialized = true;\n this.logDebug('Queue workers initialized successfully');\n\n } catch (error) {\n this.logger.error('❌ Queue worker initialization failed', {\n ...projectCaughtErrorLogFields(error),\n });\n // Don't throw - queue workers failing shouldn't prevent the app from starting\n // The app can still function, just without background job processing\n this.logger.warn('⚠️ Application will continue without queue workers');\n }\n }\n\n /**\n * Check if queue workers are initialized and running.\n */\n isRunning(): boolean {\n return this.isInitialized && this.config.enabled;\n }\n\n /**\n * Gracefully shutdown queue workers.\n * Note: This stops consumers and monitoring but does NOT exit the process.\n * Process exit is handled by WorkerShutdownManager's signal handlers.\n */\n async shutdown(): Promise<void> {\n if (!this.isInitialized) {\n return;\n }\n\n this.logger.info('🛑 Shutting down queue workers...');\n\n try {\n // Stop consumers (this is also called by shutdown handlers, but safe to call twice)\n await this.jobConsumer.stopConsuming();\n\n // Stop monitoring\n this.monitoring.stopMonitoring();\n\n this.logger.info('✅ Queue workers shut down');\n } catch (error) {\n this.logger.error('❌ Queue worker shutdown error', {\n ...projectCaughtErrorLogFields(error),\n });\n }\n\n this.isInitialized = false;\n }\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  import { LoggerService } from '../monitoring/logger/services/logger.service';
8
8
  import { AppConfigurationService } from '../config/services/app-configuration.backend.service';
9
9
  import { AuthorizationsBackendService } from '../security/authorizations/services/authorizations.backend.service';
10
- import { RabbitMQAdapterBackendService } from './adapters/rabbitmq-adapter.backend.service';
10
+ import type { QueueAdapter } from './adapters/queue-adapter.backend.interface';
11
11
  import { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';
12
12
  import { JobPayloadStorageBackendService } from './job-payload-storage.backend.service';
13
13
  import { ExecutionContext } from '../runtime/models/execution-context.backend.schemas';
@@ -33,7 +33,7 @@ export declare class QueueBackendService {
33
33
  private replyQueueName;
34
34
  private readonly pendingReplies;
35
35
  private initialized;
36
- constructor(appConfigService: AppConfigurationService, authorizationsService: AuthorizationsBackendService, logger: LoggerService, adapter: RabbitMQAdapterBackendService, jobStatusTracking: JobStatusTrackingBackendService, payloadStorage: JobPayloadStorageBackendService);
36
+ constructor(appConfigService: AppConfigurationService, authorizationsService: AuthorizationsBackendService, logger: LoggerService, adapter: QueueAdapter, jobStatusTracking: JobStatusTrackingBackendService, payloadStorage: JobPayloadStorageBackendService);
37
37
  /** Lazy getter for applicationId - avoids accessing config in constructor */
38
38
  private get appId();
39
39
  /**
@@ -101,7 +101,7 @@ export declare class QueueBackendService {
101
101
  /**
102
102
  * Get RabbitMQ adapter for direct operations.
103
103
  */
104
- getAdapter(): RabbitMQAdapterBackendService;
104
+ getAdapter(): QueueAdapter;
105
105
  /**
106
106
  * Close queue service gracefully.
107
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queue.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/queue/queue.backend.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.backend.service.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,22 @@ let QueueBackendService = class QueueBackendService {
75
75
  // source keeps the topology self-consistent. This queue is TERMINAL: it has
76
76
  // no dead-letter args of its own (a parked message stays here until a human /
77
77
  // tool inspects it — the queue has no consumer).
78
+ //
79
+ // ## Dead-letter inspection is a BROKER-level concern — decided 2026-09-08 (#469)
80
+ //
81
+ // Having no consumer is deliberate, not unfinished. Wildo ships no listing of parked jobs, no
82
+ // replay verb and no queue-depth health signal, and it is not going to: an operator inspects and
83
+ // replays a parked message with the broker's own tooling (the RabbitMQ management UI or CLI
84
+ // against this queue by name).
85
+ //
86
+ // Do not read the absence as an oversight and wire a surface here. A job-execution read surface
87
+ // exposes job PAYLOADS, which may carry personal data, and would need its own authorization and
88
+ // privacy classification — which is why the decision went the other way. The display behaviour
89
+ // that used to be authored for `jobExecutions` / `jobPayloadStorage` was deleted in the same
90
+ // change, because it rendered nowhere and made this absence look accidental.
91
+ //
92
+ // If this ever bites, the option to revisit FIRST is queue DEPTH as a health signal — it catches
93
+ // the fleet-level problem without exposing a single payload.
78
94
  const deadLetterQueue = buildQueueName(this.appId, 'operations', QueueVariant.DEADLETTER);
79
95
  await this.adapter.assertQueue(deadLetterQueue, {
80
96
  durable: true,
@@ -122,7 +138,15 @@ let QueueBackendService = class QueueBackendService {
122
138
  // Configure RabbitMQ adapter from app config
123
139
  const appConfig = this.appConfigService.config;
124
140
  const appSecrets = this.appConfigService.secrets;
125
- if (appConfig.database?.rabbitmq) {
141
+ /*
142
+ * Broker connection settings apply to the BROKER adapter, and to nothing else (#502).
143
+ *
144
+ * `configure()` takes a `RabbitMQConfig` and is deliberately absent from `QueueAdapter` — an
145
+ * in-memory queue has no host, port or vhost to be told about. Narrowing here rather than
146
+ * widening the port keeps that honest: the alternative was a `configure(config: unknown)` every
147
+ * adapter must accept and most must ignore, which is a hole in the port wearing a signature.
148
+ */
149
+ if (appConfig.database?.rabbitmq && this.adapter instanceof RabbitMQAdapterBackendService) {
126
150
  // Credentials from secrets first, then env vars, then defaults
127
151
  const username = appSecrets.database?.rabbitmq?.username
128
152
  || process.env.RABBITMQ_USERNAME
@@ -498,9 +522,7 @@ QueueBackendService = __decorate([
498
522
  __param(5, inject(SAAS_SERVICE_TYPES.JobPayloadStorageService)),
499
523
  __metadata("design:paramtypes", [AppConfigurationService,
500
524
  AuthorizationsBackendService,
501
- LoggerService,
502
- RabbitMQAdapterBackendService,
503
- JobStatusTrackingBackendService,
525
+ LoggerService, Object, JobStatusTrackingBackendService,
504
526
  JobPayloadStorageBackendService])
505
527
  ], QueueBackendService);
506
528
  export { QueueBackendService };
@@ -1 +1 @@
1
- {"version":3,"file":"queue.backend.service.js","sourceRoot":"","sources":["../../../../src/queue/queue.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Queue Backend Service\n *\n * Main entry point for queue operations.\n * Handles enqueuing jobs with authorization checks.\n */\n\nimport { injectable, inject } from 'inversify';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { AuthorizationsBackendService } from '~wildo-backend-lib/security/authorizations/services/authorizations.backend.service';\nimport { RabbitMQAdapterBackendService } from './adapters/rabbitmq-adapter.backend.service';\nimport { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';\nimport { JobPayloadStorageBackendService } from './job-payload-storage.backend.service';\nimport { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { getCurrentCorrelationId } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\nimport {\n JobPayload,\n JobType,\n JobInitiator,\n JobPriority,\n JobResult,\n JobStatus,\n QueueVariant,\n QueueRetryBackoffConfig,\n ResourceSerializationUtils,\n ResourcesConfig_OperationPathUtils,\n QUEUE_CONFIG_DEFAULTS,\n QUEUE_RETRY_DEFAULTS,\n buildQueueName,\n} from '@wildo-ai/saas-models';\n\n\n/**\n * Result of an enqueue operation.\n */\nexport interface EnqueueResult {\n /** Unique job identifier */\n jobId: string;\n /** Queue the job was published to */\n queueName: string;\n}\n\n@injectable()\nexport class QueueBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private _appId: string | null = null;\n private replyQueueName: string | null = null;\n private readonly pendingReplies: Map<string, {\n resolve: (result: any) => void;\n reject: (error: Error) => void;\n timeout: NodeJS.Timeout;\n }> = new Map();\n private initialized = false;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.AuthorizationsService)\n private readonly authorizationsService: AuthorizationsBackendService,\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)\n private readonly adapter: RabbitMQAdapterBackendService,\n @inject(SAAS_SERVICE_TYPES.JobStatusTrackingService)\n private readonly jobStatusTracking: JobStatusTrackingBackendService,\n @inject(SAAS_SERVICE_TYPES.JobPayloadStorageService)\n private readonly payloadStorage: JobPayloadStorageBackendService,\n ) {\n this.logDebug = this.logger.debugByType('QueueBackendService');\n this.logger.setDebugTypeLogging('QueueBackendService', false);\n // Lazy-load appId to avoid accessing config before initialization\n }\n\n /** Lazy getter for applicationId - avoids accessing config in constructor */\n private get appId(): string {\n if (!this._appId) {\n this._appId = this.appConfigService.applicationId;\n }\n return this._appId;\n }\n\n /**\n * Initialize queue service for API pod.\n * Sets up reply queue for RPC pattern.\n */\n public async initializeForApiPod(): Promise<void> {\n if (this.initialized) return;\n\n // Ensure adapter is connected\n if (!this.adapter.isConnected()) {\n await this.adapter.connect();\n }\n\n // Set up reply queue for RPC\n this.replyQueueName = await this.adapter.setupReplyQueue(\n this.appId,\n (correlationId, result) => this.handleReply(correlationId, result)\n );\n\n // Assert the operations dead-letter queue FIRST — the main queues below name\n // it as their dead-letter target, and asserting the target ahead of the\n // source keeps the topology self-consistent. This queue is TERMINAL: it has\n // no dead-letter args of its own (a parked message stays here until a human /\n // tool inspects it — the queue has no consumer).\n const deadLetterQueue = buildQueueName(this.appId, 'operations', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(deadLetterQueue, {\n durable: true,\n });\n\n // Assert operations queue, dead-lettering permanent failures to the DLQ above.\n // A consumer that exhausts retries (or hits a non-retryable / malformed\n // message) calls `channel.nack(msg, false, false)`; with the DLX wired the\n // broker parks that message in `operations.deadletter` instead of discarding\n // it. Default exchange ('') + routing key = the DLQ name routes by queue name\n // — the same plugin-free mechanism the retry delay queues use.\n const operationsQueue = buildQueueName(this.appId, 'operations');\n await this.adapter.assertQueue(operationsQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: deadLetterQueue,\n });\n\n // Assert priority queue. Priority is a dispatch VARIANT of operations, not a\n // distinct category, so its permanent failures share the SAME\n // `operations.deadletter` (there is intentionally no per-variant\n // `operations.priority.deadletter` — see queue-monitoring.backend.service.ts).\n const priorityQueue = buildQueueName(this.appId, 'operations', QueueVariant.PRIORITY);\n await this.adapter.assertQueue(priorityQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: deadLetterQueue,\n });\n\n this.initialized = true;\n this.logDebug('Queue service initialized for API pod', {\n appId: this.appId,\n replyQueue: this.replyQueueName,\n });\n }\n\n /**\n * Initialize queue service for worker pod.\n *\n * This method initializes all queue infrastructure needed for a pod that:\n * - Consumes and processes jobs (worker functionality)\n * - Enqueues jobs and receives RPC replies (API functionality)\n *\n * Every backend API pod serves both roles, hence this comprehensive initialization.\n */\n public async initializeForWorker(): Promise<void> {\n if (this.initialized) return;\n\n // Configure RabbitMQ adapter from app config\n const appConfig = this.appConfigService.config;\n const appSecrets = this.appConfigService.secrets;\n\n if (appConfig.database?.rabbitmq) {\n // Credentials from secrets first, then env vars, then defaults\n const username = appSecrets.database?.rabbitmq?.username\n || process.env.RABBITMQ_USERNAME\n || 'guest';\n const password = appSecrets.database?.rabbitmq?.password\n || process.env.RABBITMQ_PASSWORD\n || 'guest';\n\n this.adapter.configure({\n host: appConfig.database.rabbitmq.host,\n port: appConfig.database.rabbitmq.port,\n username,\n password,\n // Slice 2.5c-3 of `infra-provider-planner.md`: optional per-app\n // virtual host. Authored at `backingServices.rabbitmq.vhost` in\n // `wildo.infra.<envName>.config.ts`, threaded by apps-manager\n // into the persisted `Wildo_Application_Config`, read here. When\n // omitted the adapter falls back to the default vhost `/` (the\n // adapter's existing `this.config.vhost || '/'` semantics).\n vhost: appConfig.database.rabbitmq.vhost,\n });\n }\n\n // Ensure adapter is connected\n if (!this.adapter.isConnected()) {\n await this.adapter.connect();\n }\n\n // Set up reply queue for RPC pattern (enqueueAndWait)\n // Each pod gets its own exclusive reply queue\n this.replyQueueName = await this.adapter.setupReplyQueue(\n this.appId,\n (correlationId, result) => this.handleReply(correlationId, result)\n );\n\n // Assert the dead-letter queues FIRST — each is the dead-letter target of the\n // matching main queue below, so it must be declared ahead of the source that\n // names it. Each DLQ is TERMINAL (no dead-letter args of its own): a parked\n // message stays until inspected; these queues have no consumer.\n //\n // TOPOLOGY-MIGRATION NOTE: the main queues below are asserted WITH\n // `x-dead-letter-*` arguments. RabbitMQ will NOT mutate the arguments of an\n // already-existing durable queue — asserting `operations` with new DLX args\n // when it already exists as plain `{ durable: true }` throws\n // 406 PRECONDITION_FAILED and closes the channel. On deployments that ran a\n // pre-DLX build, the existing `operations` / `operations.priority` /\n // `scheduled` / `callbacks` / `domain.*` queues must be DELETED ONCE so they\n // are auto-recreated here with the DLX args. This project is greenfield (no\n // production data), so a one-time manual redeclare is the chosen migration —\n // see `.claude/plans/queue-permanent-dlx.md` for the rejected alternatives\n // (versioning the queue name; broker-side policies).\n const operationsDeadLetterQueue = buildQueueName(this.appId, 'operations', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(operationsDeadLetterQueue, { durable: true });\n\n const scheduledDeadLetterQueue = buildQueueName(this.appId, 'scheduled', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(scheduledDeadLetterQueue, { durable: true });\n\n const callbacksDeadLetterQueue = buildQueueName(this.appId, 'callbacks', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(callbacksDeadLetterQueue, { durable: true });\n\n // Assert operations queue, dead-lettering permanent failures (nack without\n // requeue) to `operations.deadletter` via the default exchange ('') routed by\n // queue name. Without this a permanently-failed job would be discarded.\n const operationsQueue = buildQueueName(this.appId, 'operations');\n await this.adapter.assertQueue(operationsQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: operationsDeadLetterQueue,\n });\n\n // Priority is a dispatch variant of operations → shares `operations.deadletter`\n // (no per-variant DLQ; see queue-monitoring.backend.service.ts).\n const priorityQueue = buildQueueName(this.appId, 'operations', QueueVariant.PRIORITY);\n await this.adapter.assertQueue(priorityQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: operationsDeadLetterQueue,\n });\n\n // Assert scheduled queue → parks permanently-failed scheduled executions in\n // `scheduled.deadletter` for inspection (they still re-run on the next\n // schedule; the parked token is a stale audit copy, not a re-execution).\n const scheduledQueue = buildQueueName(this.appId, 'scheduled');\n await this.adapter.assertQueue(scheduledQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: scheduledDeadLetterQueue,\n });\n\n // Assert callbacks queue → dead-letters to `callbacks.deadletter`.\n const callbacksQueue = buildQueueName(this.appId, 'callbacks');\n await this.adapter.assertQueue(callbacksQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: callbacksDeadLetterQueue,\n });\n\n this.initialized = true;\n this.logDebug('Queue service initialized for worker', {\n appId: this.appId,\n replyQueue: this.replyQueueName,\n });\n }\n\n /**\n * Enqueue operation (fire and forget).\n * Returns immediately after publishing.\n */\n public async enqueueOperation(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string\n ): Promise<EnqueueResult> {\n const operation = executionContext.operation;\n\n // Authorization check (same as controller layer)\n await this.authorizationsService.authorizeInController(inputId, executionContext);\n\n // Build job payload\n const job = await this.buildJobPayload(executionContext, inputData, inputId);\n\n // Determine queue based on priority\n const queueName = this.getOperationsQueueName(job.priority);\n\n // Create job tracking record before publishing\n await this.jobStatusTracking.createJobRecord(job, queueName);\n\n // Publish to queue\n await this.adapter.publish(queueName, job);\n\n this.logDebug('Job enqueued', {\n jobId: job.jobId,\n queueName,\n operationPathKey: job.operationPathKey,\n hasExternalPayload: !!job.inputPayloadStorageId,\n });\n\n return { jobId: job.jobId, queueName };\n }\n\n /**\n * Enqueue operation and wait for result (RPC pattern).\n * Used for QUEUED runtime mode.\n */\n public async enqueueAndWait<T>(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string,\n timeoutMs?: number\n ): Promise<T> {\n if (!this.replyQueueName) {\n throw new Error('Reply queue not initialized. Call initializeForApiPod() first.');\n }\n\n const operation = executionContext.operation;\n const queueConfig = operation.queueConfig ?? QUEUE_CONFIG_DEFAULTS;\n const timeout = timeoutMs ?? queueConfig.timeoutMs;\n\n // Authorization check\n await this.authorizationsService.authorizeInController(inputId, executionContext);\n\n // Build job with RPC headers\n const job = await this.buildJobPayload(executionContext, inputData, inputId);\n const correlationId = uuidv4();\n job.rpcReplyCorrelationId = correlationId;\n job.replyTo = this.replyQueueName;\n\n // Create promise for reply\n const resultPromise = new Promise<T>((resolve, reject) => {\n const timeoutHandle = setTimeout(() => {\n this.pendingReplies.delete(correlationId);\n reject(new Error(`Job timed out after ${timeout}ms`));\n }, timeout);\n\n this.pendingReplies.set(correlationId, { resolve, reject, timeout: timeoutHandle });\n });\n\n // Publish with RPC options\n const queueName = this.getOperationsQueueName(job.priority);\n await this.adapter.publish(queueName, job, {\n correlationId,\n replyTo: this.replyQueueName,\n });\n\n this.logDebug('Job enqueued with RPC', {\n jobId: job.jobId,\n // NOT `correlationId` — this is the RPC reply-matching id (the same value the job carries as\n // `rpcReplyCorrelationId`), distinct from the request's Wildo correlationId that the logger's\n // request-context mixin already stamps. Logging it under `correlationId` merged OVER the mixin\n // and replaced the request's trace id with an unrelated one on this line.\n rpcReplyCorrelationId: correlationId,\n queueName,\n });\n\n return resultPromise;\n }\n\n /**\n * Enqueue with callback (for BACKGROUND_JOB).\n * Returns job ID immediately, result delivered via callback mechanism.\n */\n public async enqueueWithCallback(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string\n ): Promise<EnqueueResult> {\n // Authorization check\n await this.authorizationsService.authorizeInController(inputId, executionContext);\n\n // Build job (callback is handled via callbacks queue)\n const job = await this.buildJobPayload(executionContext, inputData, inputId);\n\n // Publish to operations queue\n const queueName = this.getOperationsQueueName(job.priority);\n\n // Create job tracking record before publishing\n await this.jobStatusTracking.createJobRecord(job, queueName);\n\n await this.adapter.publish(queueName, job);\n\n this.logDebug('Job enqueued with callback', {\n jobId: job.jobId,\n queueName,\n hasExternalPayload: !!job.inputPayloadStorageId,\n });\n\n return { jobId: job.jobId, queueName };\n }\n\n /**\n * Build job payload from execution context and input data.\n * Stores large payloads (>100KB) externally and stores only the storage ID.\n */\n private async buildJobPayload(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string\n ): Promise<JobPayload> {\n const operation = executionContext.operation;\n const queueConfig = operation.queueConfig ?? QUEUE_CONFIG_DEFAULTS;\n\n // Serialize input data. Use the bigint-safe serializer: a resource `data`\n // payload may carry `z_money` (MoneyValue) amounts stored as `bigint`, which\n // a bare `JSON.stringify` cannot serialize (\"Do not know how to serialize a\n // BigInt\"). See ResourceSerializationUtils.bigIntSafeJsonReplacer for the\n // string-encoding rationale and the worker round-trip caveat.\n let inputDataJson = inputData !== undefined ? ResourceSerializationUtils.stringifyWithBigInt(inputData) : undefined;\n let inputPayloadStorageId: string | undefined;\n\n // Store large payloads externally to avoid RabbitMQ performance issues\n if (inputDataJson && this.payloadStorage.shouldStore(inputDataJson)) {\n inputPayloadStorageId = await this.payloadStorage.store(inputData);\n inputDataJson = undefined; // Don't embed in message\n this.logDebug('Large payload stored externally', { inputPayloadStorageId });\n }\n\n // Extract operation path for serialization\n const operationPath = ResourcesConfig_OperationPathUtils.extractOperationPath(operation as any);\n\n const job: JobPayload = {\n jobId: uuidv4(),\n jobType: JobType.RESOURCE_OPERATION,\n applicationId: this.appId,\n\n operationPathKey: ResourcesConfig_OperationPathUtils.createOperationPathKey(operationPath),\n operationPathJson: ResourceSerializationUtils.serializeOperationPath(operationPath),\n\n inputDataJson,\n inputPayloadStorageId,\n inputId,\n\n executionContextJson: ResourceSerializationUtils.serializeExecutionContext({\n executionType: executionContext.executionType,\n initiatorIds: executionContext.initiatorIds,\n initiatorRoles: [...executionContext.initiatorRoles],\n getContextResourceIds: () => executionContext.getContextResourceIds(),\n relationshipContexts: [...executionContext.relationshipContexts],\n }),\n\n // Phase 6 — carry the enqueuing request's correlationId onto the job so the worker that later\n // executes it adopts the same id (request → job trace join). The EC already holds the request's\n // correlationId (it adopted the ambient request frame's id at construction, R13/Model A), so this\n // is the single authoritative source — no separate ALS read needed here.\n originCorrelationId: executionContext.correlationId,\n\n initiatedBy: JobInitiator.API,\n priority: queueConfig.priority ?? JobPriority.NORMAL,\n retryCount: 0,\n maxRetries: queueConfig.maxRetries ?? QUEUE_CONFIG_DEFAULTS.maxRetries,\n // Resolve backoff from the operation's authored queueConfig.retryConfig\n // (read off `operation.queueConfig`, whose type carries the field —\n // QUEUE_CONFIG_DEFAULTS does not), applying defaults per-field so the\n // transported payload carries fully-resolved values the worker can honor.\n retryConfig: {\n baseDelayMs: operation.queueConfig?.retryConfig?.baseDelayMs ?? QUEUE_RETRY_DEFAULTS.baseDelayMs,\n maxDelayMs: operation.queueConfig?.retryConfig?.maxDelayMs ?? QUEUE_RETRY_DEFAULTS.maxDelayMs,\n retryPolicy: operation.queueConfig?.retryConfig?.retryPolicy ?? QUEUE_RETRY_DEFAULTS.retryPolicy,\n },\n timeoutMs: queueConfig.timeoutMs ?? QUEUE_CONFIG_DEFAULTS.timeoutMs,\n\n createdAt: new Date(),\n };\n\n return job;\n }\n\n /**\n * Get operations queue name based on priority.\n * Accepts string because job.priority from schema is a string union.\n */\n private getOperationsQueueName(priority: string): string {\n const base = buildQueueName(this.appId, 'operations');\n return (priority === JobPriority.HIGH || priority === JobPriority.CRITICAL)\n ? buildQueueName(this.appId, 'operations', QueueVariant.PRIORITY)\n : base;\n }\n\n /**\n * Handle RPC reply from worker.\n */\n private handleReply(correlationId: string, result: JobResult): void {\n const pending = this.pendingReplies.get(correlationId);\n if (!pending) {\n this.logger.warn('Received reply for unknown correlationId', { correlationId });\n return;\n }\n\n clearTimeout(pending.timeout);\n this.pendingReplies.delete(correlationId);\n\n if (result.status === JobStatus.COMPLETED) {\n const parsedResult = result.resultJson ? JSON.parse(result.resultJson) : null;\n pending.resolve(parsedResult);\n } else {\n // Use type and operationPathKey from WildoError as the error message\n const errorMsg = result.error\n ? `${result.error.type}${result.error.operationPathKey ? ` (${result.error.operationPathKey})` : ''}`\n : 'Job failed';\n pending.reject(new Error(errorMsg));\n }\n }\n\n /**\n * Enqueue a custom batch job.\n *\n * This method is used for fire-and-forget batch operations that don't\n * need to go through the standard resource operation flow.\n *\n * @param batchType - Identifier for the batch type (e.g., 'email.batch-send')\n * @param payload - The batch job payload (must be serializable)\n * @param options - Optional configuration for the job\n * @returns The job ID and queue name\n */\n public async enqueueCustomBatch(\n batchType: string,\n payload: unknown,\n options?: {\n priority?: JobPriority;\n maxRetries?: number;\n timeoutMs?: number;\n /** Optional backoff timing override (base delay / cap / curve). */\n retryConfig?: QueueRetryBackoffConfig;\n }\n ): Promise<EnqueueResult> {\n const priority = options?.priority ?? JobPriority.NORMAL;\n const maxRetries = options?.maxRetries ?? QUEUE_CONFIG_DEFAULTS.maxRetries;\n const timeoutMs = options?.timeoutMs ?? QUEUE_CONFIG_DEFAULTS.timeoutMs;\n\n // Serialize payload with the bigint-safe serializer (payload may carry\n // z_money/MoneyValue bigint amounts; see bigIntSafeJsonReplacer).\n let inputDataJson = ResourceSerializationUtils.stringifyWithBigInt(payload);\n let inputPayloadStorageId: string | undefined;\n\n // Store large payloads externally\n if (this.payloadStorage.shouldStore(inputDataJson)) {\n inputPayloadStorageId = await this.payloadStorage.store(payload);\n inputDataJson = undefined as any;\n }\n\n const job: JobPayload = {\n jobId: uuidv4(),\n jobType: JobType.CUSTOM_BATCH,\n applicationId: this.appId,\n\n // batchRef is REQUIRED for custom batches: `JobExecutorBackendService.executeCustomBatch`\n // throws JOB_BATCH_REF_NOT_FOUND if it's missing. Without this line every custom batch\n // job (email batches, M2M webhook deliveries, …) would fail at the executor.\n batchRef: batchType,\n\n operationPathKey: batchType, // Use batch type as the operation path key\n operationPathJson: JSON.stringify({ batchType }),\n\n inputDataJson,\n inputPayloadStorageId,\n\n executionContextJson: JSON.stringify({\n executionType: 'BATCH',\n initiatorIds: { systemBatch: true },\n }),\n\n // Phase 6 (F1) — a custom batch has no enqueuing EC, but its DISPATCHER (SIEM / M2M-webhook /\n // notification delivery) usually runs inside the TRIGGERING request's frame. Seed\n // originCorrelationId from the ambient frame (SD10 pattern) so the batch job's worker-side logs +\n // audit join that request's trace. `undefined` when dispatched outside any request (e.g. a\n // background flush), in which case the consumer mints a fresh id — still independently traceable.\n originCorrelationId: getCurrentCorrelationId(),\n\n initiatedBy: JobInitiator.INTERNAL,\n priority,\n retryCount: 0,\n maxRetries,\n retryConfig: {\n baseDelayMs: options?.retryConfig?.baseDelayMs ?? QUEUE_RETRY_DEFAULTS.baseDelayMs,\n maxDelayMs: options?.retryConfig?.maxDelayMs ?? QUEUE_RETRY_DEFAULTS.maxDelayMs,\n retryPolicy: options?.retryConfig?.retryPolicy ?? QUEUE_RETRY_DEFAULTS.retryPolicy,\n },\n timeoutMs,\n\n createdAt: new Date(),\n };\n\n // Determine queue based on priority\n const queueName = this.getOperationsQueueName(priority);\n\n // Create job tracking record\n await this.jobStatusTracking.createJobRecord(job, queueName);\n\n // Publish to queue\n await this.adapter.publish(queueName, job);\n\n this.logDebug('Custom batch job enqueued', {\n jobId: job.jobId,\n batchType,\n queueName,\n hasExternalPayload: !!inputPayloadStorageId,\n });\n\n return { jobId: job.jobId, queueName };\n }\n\n /**\n * Get RabbitMQ adapter for direct operations.\n */\n public getAdapter(): RabbitMQAdapterBackendService {\n return this.adapter;\n }\n\n /**\n * Close queue service gracefully.\n */\n public async close(): Promise<void> {\n // Clear pending replies\n for (const [correlationId, pending] of this.pendingReplies) {\n clearTimeout(pending.timeout);\n pending.reject(new Error('Queue service closing'));\n }\n this.pendingReplies.clear();\n\n // Close adapter\n await this.adapter.close();\n\n this.initialized = false;\n this.logger.info('Queue service closed');\n }\n}\n"]}
1
+ {"version":3,"file":"queue.backend.service.js","sourceRoot":"","sources":["../../../src/queue/queue.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,oFAAoF,CAAC;AAClI,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAE5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AAExF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AACxG,OAAO,EAEL,OAAO,EACP,YAAY,EACZ,WAAW,EAEX,SAAS,EACT,YAAY,EAEZ,0BAA0B,EAC1B,kCAAkC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAcxB,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAaX;IAEA;IAEA;IAEA;IAEA;IAEA;IAtBT,QAAQ,CAA+D;IACzE,MAAM,GAAkB,IAAI,CAAC;IAC7B,cAAc,GAAkB,IAAI,CAAC;IAC5B,cAAc,GAI1B,IAAI,GAAG,EAAE,CAAC;IACP,WAAW,GAAG,KAAK,CAAC;IAE5B,YAEmB,gBAAyC,EAEzC,qBAAmD,EAEnD,MAAqB,EAErB,OAAqB,EAErB,iBAAkD,EAElD,cAA+C;QAV/C,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEzC,0BAAqB,GAArB,qBAAqB,CAA8B;QAEnD,WAAM,GAAN,MAAM,CAAe;QAErB,YAAO,GAAP,OAAO,CAAc;QAErB,sBAAiB,GAAjB,iBAAiB,CAAiC;QAElD,mBAAc,GAAd,cAAc,CAAiC;QAEhE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC9D,kEAAkE;IACpE,CAAC;IAED,6EAA6E;IAC7E,IAAY,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB;QAC9B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CACtD,IAAI,CAAC,KAAK,EACV,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CACnE,CAAC;QAEF,6EAA6E;QAC7E,wEAAwE;QACxE,4EAA4E;QAC5E,8EAA8E;QAC9E,iDAAiD;QACjD,EAAE;QACF,kFAAkF;QAClF,EAAE;QACF,8FAA8F;QAC9F,iGAAiG;QACjG,4FAA4F;QAC5F,+BAA+B;QAC/B,EAAE;QACF,gGAAgG;QAChG,gGAAgG;QAChG,+FAA+F;QAC/F,6FAA6F;QAC7F,6EAA6E;QAC7E,EAAE;QACF,iGAAiG;QACjG,6DAA6D;QAC7D,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE;YAC9C,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,+EAA+E;QAC/E,wEAAwE;QACxE,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,+DAA+D;QAC/D,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,eAAe;SACtC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,8DAA8D;QAC9D,iEAAiE;QACjE,+EAA+E;QAC/E,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,eAAe;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,uCAAuC,EAAE;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,mBAAmB;QAC9B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,6CAA6C;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEjD;;;;;;;WAOG;QACH,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,OAAO,YAAY,6BAA6B,EAAE,CAAC;YAC1F,+DAA+D;YAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ;mBACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB;mBAC7B,OAAO,CAAC;YACb,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ;mBACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB;mBAC7B,OAAO,CAAC;YAEb,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACrB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBACtC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBACtC,QAAQ;gBACR,QAAQ;gBACR,gEAAgE;gBAChE,gEAAgE;gBAChE,8DAA8D;gBAC9D,iEAAiE;gBACjE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;aACzC,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;QAED,sDAAsD;QACtD,8CAA8C;QAC9C,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CACtD,IAAI,CAAC,KAAK,EACV,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CACnE,CAAC;QAEF,8EAA8E;QAC9E,6EAA6E;QAC7E,4EAA4E;QAC5E,gEAAgE;QAChE,EAAE;QACF,mEAAmE;QACnE,4EAA4E;QAC5E,4EAA4E;QAC5E,6DAA6D;QAC7D,4EAA4E;QAC5E,qEAAqE;QACrE,6EAA6E;QAC7E,4EAA4E;QAC5E,6EAA6E;QAC7E,2EAA2E;QAC3E,qDAAqD;QACrD,MAAM,yBAAyB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACpG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7E,MAAM,wBAAwB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAClG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5E,MAAM,wBAAwB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAClG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5E,2EAA2E;QAC3E,8EAA8E;QAC9E,wEAAwE;QACxE,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,yBAAyB;SAChD,CAAC,CAAC;QAEH,gFAAgF;QAChF,iEAAiE;QACjE,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,yBAAyB;SAChD,CAAC,CAAC;QAEH,4EAA4E;QAC5E,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE;YAC7C,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,wBAAwB;SAC/C,CAAC,CAAC;QAEH,mEAAmE;QACnE,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE;YAC7C,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,wBAAwB;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,sCAAsC,EAAE;YACpD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,gBAAgB,CAC3B,gBAAuC,EACvC,SAAkB,EAClB,OAAgB;QAEhB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAE7C,iDAAiD;QACjD,MAAM,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAElF,oBAAoB;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7E,oCAAoC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5D,+CAA+C;QAC/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE7D,mBAAmB;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS;YACT,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,qBAAqB;SAChD,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CACzB,gBAAuC,EACvC,SAAkB,EAClB,OAAgB,EAChB,SAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,qBAAqB,CAAC;QACnE,MAAM,OAAO,GAAG,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC;QAEnD,sBAAsB;QACtB,MAAM,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAElF,6BAA6B;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;QAC/B,GAAG,CAAC,qBAAqB,GAAG,aAAa,CAAC;QAC1C,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAElC,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC1C,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE;YACzC,aAAa;YACb,OAAO,EAAE,IAAI,CAAC,cAAc;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;YACrC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,6FAA6F;YAC7F,8FAA8F;YAC9F,+FAA+F;YAC/F,0EAA0E;YAC1E,qBAAqB,EAAE,aAAa;YACpC,SAAS;SACV,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB,CAC9B,gBAAuC,EACvC,SAAkB,EAClB,OAAgB;QAEhB,sBAAsB;QACtB,MAAM,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAElF,sDAAsD;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7E,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5D,+CAA+C;QAC/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE7D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE;YAC1C,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS;YACT,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,qBAAqB;SAChD,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAC3B,gBAAuC,EACvC,SAAkB,EAClB,OAAgB;QAEhB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,qBAAqB,CAAC;QAEnE,0EAA0E;QAC1E,6EAA6E;QAC7E,4EAA4E;QAC5E,0EAA0E;QAC1E,8DAA8D;QAC9D,IAAI,aAAa,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpH,IAAI,qBAAyC,CAAC;QAE9C,uEAAuE;QACvE,IAAI,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YACpE,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnE,aAAa,GAAG,SAAS,CAAC,CAAC,yBAAyB;YACpD,IAAI,CAAC,QAAQ,CAAC,iCAAiC,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,kCAAkC,CAAC,oBAAoB,CAAC,SAAgB,CAAC,CAAC;QAEhG,MAAM,GAAG,GAAe;YACtB,KAAK,EAAE,MAAM,EAAE;YACf,OAAO,EAAE,OAAO,CAAC,kBAAkB;YACnC,aAAa,EAAE,IAAI,CAAC,KAAK;YAEzB,gBAAgB,EAAE,kCAAkC,CAAC,sBAAsB,CAAC,aAAa,CAAC;YAC1F,iBAAiB,EAAE,0BAA0B,CAAC,sBAAsB,CAAC,aAAa,CAAC;YAEnF,aAAa;YACb,qBAAqB;YACrB,OAAO;YAEP,oBAAoB,EAAE,0BAA0B,CAAC,yBAAyB,CAAC;gBACzE,aAAa,EAAE,gBAAgB,CAAC,aAAa;gBAC7C,YAAY,EAAE,gBAAgB,CAAC,YAAY;gBAC3C,cAAc,EAAE,CAAC,GAAG,gBAAgB,CAAC,cAAc,CAAC;gBACpD,qBAAqB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,qBAAqB,EAAE;gBACrE,oBAAoB,EAAE,CAAC,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;aACjE,CAAC;YAEF,8FAA8F;YAC9F,gGAAgG;YAChG,kGAAkG;YAClG,yEAAyE;YACzE,mBAAmB,EAAE,gBAAgB,CAAC,aAAa;YAEnD,WAAW,EAAE,YAAY,CAAC,GAAG;YAC7B,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM;YACpD,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,qBAAqB,CAAC,UAAU;YACtE,wEAAwE;YACxE,oEAAoE;YACpE,sEAAsE;YACtE,0EAA0E;YAC1E,WAAW,EAAE;gBACX,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;gBAChG,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,IAAI,oBAAoB,CAAC,UAAU;gBAC7F,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;aACjG;YACD,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,qBAAqB,CAAC,SAAS;YAEnE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,QAAgB;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtD,OAAO,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,IAAI,QAAQ,KAAK,WAAW,CAAC,QAAQ,CAAC;YACzE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,aAAqB,EAAE,MAAiB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9E,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;gBAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrG,CAAC,CAAC,YAAY,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,kBAAkB,CAC7B,SAAiB,EACjB,OAAgB,EAChB,OAMC;QAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC;QACzD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,qBAAqB,CAAC,UAAU,CAAC;QAC3E,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,qBAAqB,CAAC,SAAS,CAAC;QAExE,uEAAuE;QACvE,kEAAkE;QAClE,IAAI,aAAa,GAAG,0BAA0B,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5E,IAAI,qBAAyC,CAAC;QAE9C,kCAAkC;QAClC,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjE,aAAa,GAAG,SAAgB,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,GAAe;YACtB,KAAK,EAAE,MAAM,EAAE;YACf,OAAO,EAAE,OAAO,CAAC,YAAY;YAC7B,aAAa,EAAE,IAAI,CAAC,KAAK;YAEzB,0FAA0F;YAC1F,uFAAuF;YACvF,6EAA6E;YAC7E,QAAQ,EAAE,SAAS;YAEnB,gBAAgB,EAAE,SAAS,EAAE,2CAA2C;YACxE,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;YAEhD,aAAa;YACb,qBAAqB;YAErB,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnC,aAAa,EAAE,OAAO;gBACtB,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;aACpC,CAAC;YAEF,8FAA8F;YAC9F,kFAAkF;YAClF,kGAAkG;YAClG,2FAA2F;YAC3F,kGAAkG;YAClG,mBAAmB,EAAE,uBAAuB,EAAE;YAE9C,WAAW,EAAE,YAAY,CAAC,QAAQ;YAClC,QAAQ;YACR,UAAU,EAAE,CAAC;YACb,UAAU;YACV,WAAW,EAAE;gBACX,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;gBAClF,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,IAAI,oBAAoB,CAAC,UAAU;gBAC/E,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;aACnF;YACD,SAAS;YAET,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,oCAAoC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAExD,6BAA6B;QAC7B,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE7D,mBAAmB;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,QAAQ,CAAC,2BAA2B,EAAE;YACzC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS;YACT,SAAS;YACT,kBAAkB,EAAE,CAAC,CAAC,qBAAqB;SAC5C,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,wBAAwB;QACxB,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3D,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAE5B,gBAAgB;QAChB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAE3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AA1lBY,mBAAmB;IAD/B,UAAU,EAAE;IAaR,WAAA,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;IAE3C,WAAA,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;IAEhD,WAAA,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAEjC,WAAA,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;IAEjD,WAAA,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAA;IAEnD,WAAA,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAA;qCATjB,uBAAuB;QAElB,4BAA4B;QAE3C,aAAa,UAIF,+BAA+B;QAElC,+BAA+B;GAvBvD,mBAAmB,CA0lB/B","sourcesContent":["/**\n * Queue Backend Service\n *\n * Main entry point for queue operations.\n * Handles enqueuing jobs with authorization checks.\n */\n\nimport { injectable, inject } from 'inversify';\nimport { v4 as uuidv4 } from 'uuid';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { AuthorizationsBackendService } from '~wildo-backend-lib/security/authorizations/services/authorizations.backend.service';\nimport { RabbitMQAdapterBackendService } from './adapters/rabbitmq-adapter.backend.service';\nimport type { QueueAdapter } from './adapters/queue-adapter.backend.interface';\nimport { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';\nimport { JobPayloadStorageBackendService } from './job-payload-storage.backend.service';\nimport { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { getCurrentCorrelationId } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\nimport {\n JobPayload,\n JobType,\n JobInitiator,\n JobPriority,\n JobResult,\n JobStatus,\n QueueVariant,\n QueueRetryBackoffConfig,\n ResourceSerializationUtils,\n ResourcesConfig_OperationPathUtils,\n QUEUE_CONFIG_DEFAULTS,\n QUEUE_RETRY_DEFAULTS,\n buildQueueName,\n} from '@wildo-ai/saas-models';\n\n\n/**\n * Result of an enqueue operation.\n */\nexport interface EnqueueResult {\n /** Unique job identifier */\n jobId: string;\n /** Queue the job was published to */\n queueName: string;\n}\n\n@injectable()\nexport class QueueBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private _appId: string | null = null;\n private replyQueueName: string | null = null;\n private readonly pendingReplies: Map<string, {\n resolve: (result: any) => void;\n reject: (error: Error) => void;\n timeout: NodeJS.Timeout;\n }> = new Map();\n private initialized = false;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.AuthorizationsService)\n private readonly authorizationsService: AuthorizationsBackendService,\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)\n private readonly adapter: QueueAdapter,\n @inject(SAAS_SERVICE_TYPES.JobStatusTrackingService)\n private readonly jobStatusTracking: JobStatusTrackingBackendService,\n @inject(SAAS_SERVICE_TYPES.JobPayloadStorageService)\n private readonly payloadStorage: JobPayloadStorageBackendService,\n ) {\n this.logDebug = this.logger.debugByType('QueueBackendService');\n this.logger.setDebugTypeLogging('QueueBackendService', false);\n // Lazy-load appId to avoid accessing config before initialization\n }\n\n /** Lazy getter for applicationId - avoids accessing config in constructor */\n private get appId(): string {\n if (!this._appId) {\n this._appId = this.appConfigService.applicationId;\n }\n return this._appId;\n }\n\n /**\n * Initialize queue service for API pod.\n * Sets up reply queue for RPC pattern.\n */\n public async initializeForApiPod(): Promise<void> {\n if (this.initialized) return;\n\n // Ensure adapter is connected\n if (!this.adapter.isConnected()) {\n await this.adapter.connect();\n }\n\n // Set up reply queue for RPC\n this.replyQueueName = await this.adapter.setupReplyQueue(\n this.appId,\n (correlationId, result) => this.handleReply(correlationId, result)\n );\n\n // Assert the operations dead-letter queue FIRST — the main queues below name\n // it as their dead-letter target, and asserting the target ahead of the\n // source keeps the topology self-consistent. This queue is TERMINAL: it has\n // no dead-letter args of its own (a parked message stays here until a human /\n // tool inspects it — the queue has no consumer).\n //\n // ## Dead-letter inspection is a BROKER-level concern — decided 2026-09-08 (#469)\n //\n // Having no consumer is deliberate, not unfinished. Wildo ships no listing of parked jobs, no\n // replay verb and no queue-depth health signal, and it is not going to: an operator inspects and\n // replays a parked message with the broker's own tooling (the RabbitMQ management UI or CLI\n // against this queue by name).\n //\n // Do not read the absence as an oversight and wire a surface here. A job-execution read surface\n // exposes job PAYLOADS, which may carry personal data, and would need its own authorization and\n // privacy classification — which is why the decision went the other way. The display behaviour\n // that used to be authored for `jobExecutions` / `jobPayloadStorage` was deleted in the same\n // change, because it rendered nowhere and made this absence look accidental.\n //\n // If this ever bites, the option to revisit FIRST is queue DEPTH as a health signal — it catches\n // the fleet-level problem without exposing a single payload.\n const deadLetterQueue = buildQueueName(this.appId, 'operations', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(deadLetterQueue, {\n durable: true,\n });\n\n // Assert operations queue, dead-lettering permanent failures to the DLQ above.\n // A consumer that exhausts retries (or hits a non-retryable / malformed\n // message) calls `channel.nack(msg, false, false)`; with the DLX wired the\n // broker parks that message in `operations.deadletter` instead of discarding\n // it. Default exchange ('') + routing key = the DLQ name routes by queue name\n // — the same plugin-free mechanism the retry delay queues use.\n const operationsQueue = buildQueueName(this.appId, 'operations');\n await this.adapter.assertQueue(operationsQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: deadLetterQueue,\n });\n\n // Assert priority queue. Priority is a dispatch VARIANT of operations, not a\n // distinct category, so its permanent failures share the SAME\n // `operations.deadletter` (there is intentionally no per-variant\n // `operations.priority.deadletter` — see queue-monitoring.backend.service.ts).\n const priorityQueue = buildQueueName(this.appId, 'operations', QueueVariant.PRIORITY);\n await this.adapter.assertQueue(priorityQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: deadLetterQueue,\n });\n\n this.initialized = true;\n this.logDebug('Queue service initialized for API pod', {\n appId: this.appId,\n replyQueue: this.replyQueueName,\n });\n }\n\n /**\n * Initialize queue service for worker pod.\n *\n * This method initializes all queue infrastructure needed for a pod that:\n * - Consumes and processes jobs (worker functionality)\n * - Enqueues jobs and receives RPC replies (API functionality)\n *\n * Every backend API pod serves both roles, hence this comprehensive initialization.\n */\n public async initializeForWorker(): Promise<void> {\n if (this.initialized) return;\n\n // Configure RabbitMQ adapter from app config\n const appConfig = this.appConfigService.config;\n const appSecrets = this.appConfigService.secrets;\n\n /*\n * Broker connection settings apply to the BROKER adapter, and to nothing else (#502).\n *\n * `configure()` takes a `RabbitMQConfig` and is deliberately absent from `QueueAdapter` — an\n * in-memory queue has no host, port or vhost to be told about. Narrowing here rather than\n * widening the port keeps that honest: the alternative was a `configure(config: unknown)` every\n * adapter must accept and most must ignore, which is a hole in the port wearing a signature.\n */\n if (appConfig.database?.rabbitmq && this.adapter instanceof RabbitMQAdapterBackendService) {\n // Credentials from secrets first, then env vars, then defaults\n const username = appSecrets.database?.rabbitmq?.username\n || process.env.RABBITMQ_USERNAME\n || 'guest';\n const password = appSecrets.database?.rabbitmq?.password\n || process.env.RABBITMQ_PASSWORD\n || 'guest';\n\n this.adapter.configure({\n host: appConfig.database.rabbitmq.host,\n port: appConfig.database.rabbitmq.port,\n username,\n password,\n // Slice 2.5c-3 of `infra-provider-planner.md`: optional per-app\n // virtual host. Authored at `backingServices.rabbitmq.vhost` in\n // `wildo.infra.<envName>.config.ts`, threaded by apps-manager\n // into the persisted `Wildo_Application_Config`, read here. When\n // omitted the adapter falls back to the default vhost `/` (the\n // adapter's existing `this.config.vhost || '/'` semantics).\n vhost: appConfig.database.rabbitmq.vhost,\n });\n }\n\n // Ensure adapter is connected\n if (!this.adapter.isConnected()) {\n await this.adapter.connect();\n }\n\n // Set up reply queue for RPC pattern (enqueueAndWait)\n // Each pod gets its own exclusive reply queue\n this.replyQueueName = await this.adapter.setupReplyQueue(\n this.appId,\n (correlationId, result) => this.handleReply(correlationId, result)\n );\n\n // Assert the dead-letter queues FIRST — each is the dead-letter target of the\n // matching main queue below, so it must be declared ahead of the source that\n // names it. Each DLQ is TERMINAL (no dead-letter args of its own): a parked\n // message stays until inspected; these queues have no consumer.\n //\n // TOPOLOGY-MIGRATION NOTE: the main queues below are asserted WITH\n // `x-dead-letter-*` arguments. RabbitMQ will NOT mutate the arguments of an\n // already-existing durable queue — asserting `operations` with new DLX args\n // when it already exists as plain `{ durable: true }` throws\n // 406 PRECONDITION_FAILED and closes the channel. On deployments that ran a\n // pre-DLX build, the existing `operations` / `operations.priority` /\n // `scheduled` / `callbacks` / `domain.*` queues must be DELETED ONCE so they\n // are auto-recreated here with the DLX args. This project is greenfield (no\n // production data), so a one-time manual redeclare is the chosen migration —\n // see `.claude/plans/queue-permanent-dlx.md` for the rejected alternatives\n // (versioning the queue name; broker-side policies).\n const operationsDeadLetterQueue = buildQueueName(this.appId, 'operations', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(operationsDeadLetterQueue, { durable: true });\n\n const scheduledDeadLetterQueue = buildQueueName(this.appId, 'scheduled', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(scheduledDeadLetterQueue, { durable: true });\n\n const callbacksDeadLetterQueue = buildQueueName(this.appId, 'callbacks', QueueVariant.DEADLETTER);\n await this.adapter.assertQueue(callbacksDeadLetterQueue, { durable: true });\n\n // Assert operations queue, dead-lettering permanent failures (nack without\n // requeue) to `operations.deadletter` via the default exchange ('') routed by\n // queue name. Without this a permanently-failed job would be discarded.\n const operationsQueue = buildQueueName(this.appId, 'operations');\n await this.adapter.assertQueue(operationsQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: operationsDeadLetterQueue,\n });\n\n // Priority is a dispatch variant of operations → shares `operations.deadletter`\n // (no per-variant DLQ; see queue-monitoring.backend.service.ts).\n const priorityQueue = buildQueueName(this.appId, 'operations', QueueVariant.PRIORITY);\n await this.adapter.assertQueue(priorityQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: operationsDeadLetterQueue,\n });\n\n // Assert scheduled queue → parks permanently-failed scheduled executions in\n // `scheduled.deadletter` for inspection (they still re-run on the next\n // schedule; the parked token is a stale audit copy, not a re-execution).\n const scheduledQueue = buildQueueName(this.appId, 'scheduled');\n await this.adapter.assertQueue(scheduledQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: scheduledDeadLetterQueue,\n });\n\n // Assert callbacks queue → dead-letters to `callbacks.deadletter`.\n const callbacksQueue = buildQueueName(this.appId, 'callbacks');\n await this.adapter.assertQueue(callbacksQueue, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: callbacksDeadLetterQueue,\n });\n\n this.initialized = true;\n this.logDebug('Queue service initialized for worker', {\n appId: this.appId,\n replyQueue: this.replyQueueName,\n });\n }\n\n /**\n * Enqueue operation (fire and forget).\n * Returns immediately after publishing.\n */\n public async enqueueOperation(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string\n ): Promise<EnqueueResult> {\n const operation = executionContext.operation;\n\n // Authorization check (same as controller layer)\n await this.authorizationsService.authorizeInController(inputId, executionContext);\n\n // Build job payload\n const job = await this.buildJobPayload(executionContext, inputData, inputId);\n\n // Determine queue based on priority\n const queueName = this.getOperationsQueueName(job.priority);\n\n // Create job tracking record before publishing\n await this.jobStatusTracking.createJobRecord(job, queueName);\n\n // Publish to queue\n await this.adapter.publish(queueName, job);\n\n this.logDebug('Job enqueued', {\n jobId: job.jobId,\n queueName,\n operationPathKey: job.operationPathKey,\n hasExternalPayload: !!job.inputPayloadStorageId,\n });\n\n return { jobId: job.jobId, queueName };\n }\n\n /**\n * Enqueue operation and wait for result (RPC pattern).\n * Used for QUEUED runtime mode.\n */\n public async enqueueAndWait<T>(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string,\n timeoutMs?: number\n ): Promise<T> {\n if (!this.replyQueueName) {\n throw new Error('Reply queue not initialized. Call initializeForApiPod() first.');\n }\n\n const operation = executionContext.operation;\n const queueConfig = operation.queueConfig ?? QUEUE_CONFIG_DEFAULTS;\n const timeout = timeoutMs ?? queueConfig.timeoutMs;\n\n // Authorization check\n await this.authorizationsService.authorizeInController(inputId, executionContext);\n\n // Build job with RPC headers\n const job = await this.buildJobPayload(executionContext, inputData, inputId);\n const correlationId = uuidv4();\n job.rpcReplyCorrelationId = correlationId;\n job.replyTo = this.replyQueueName;\n\n // Create promise for reply\n const resultPromise = new Promise<T>((resolve, reject) => {\n const timeoutHandle = setTimeout(() => {\n this.pendingReplies.delete(correlationId);\n reject(new Error(`Job timed out after ${timeout}ms`));\n }, timeout);\n\n this.pendingReplies.set(correlationId, { resolve, reject, timeout: timeoutHandle });\n });\n\n // Publish with RPC options\n const queueName = this.getOperationsQueueName(job.priority);\n await this.adapter.publish(queueName, job, {\n correlationId,\n replyTo: this.replyQueueName,\n });\n\n this.logDebug('Job enqueued with RPC', {\n jobId: job.jobId,\n // NOT `correlationId` — this is the RPC reply-matching id (the same value the job carries as\n // `rpcReplyCorrelationId`), distinct from the request's Wildo correlationId that the logger's\n // request-context mixin already stamps. Logging it under `correlationId` merged OVER the mixin\n // and replaced the request's trace id with an unrelated one on this line.\n rpcReplyCorrelationId: correlationId,\n queueName,\n });\n\n return resultPromise;\n }\n\n /**\n * Enqueue with callback (for BACKGROUND_JOB).\n * Returns job ID immediately, result delivered via callback mechanism.\n */\n public async enqueueWithCallback(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string\n ): Promise<EnqueueResult> {\n // Authorization check\n await this.authorizationsService.authorizeInController(inputId, executionContext);\n\n // Build job (callback is handled via callbacks queue)\n const job = await this.buildJobPayload(executionContext, inputData, inputId);\n\n // Publish to operations queue\n const queueName = this.getOperationsQueueName(job.priority);\n\n // Create job tracking record before publishing\n await this.jobStatusTracking.createJobRecord(job, queueName);\n\n await this.adapter.publish(queueName, job);\n\n this.logDebug('Job enqueued with callback', {\n jobId: job.jobId,\n queueName,\n hasExternalPayload: !!job.inputPayloadStorageId,\n });\n\n return { jobId: job.jobId, queueName };\n }\n\n /**\n * Build job payload from execution context and input data.\n * Stores large payloads (>100KB) externally and stores only the storage ID.\n */\n private async buildJobPayload(\n executionContext: ExecutionContext<any>,\n inputData: unknown,\n inputId?: string\n ): Promise<JobPayload> {\n const operation = executionContext.operation;\n const queueConfig = operation.queueConfig ?? QUEUE_CONFIG_DEFAULTS;\n\n // Serialize input data. Use the bigint-safe serializer: a resource `data`\n // payload may carry `z_money` (MoneyValue) amounts stored as `bigint`, which\n // a bare `JSON.stringify` cannot serialize (\"Do not know how to serialize a\n // BigInt\"). See ResourceSerializationUtils.bigIntSafeJsonReplacer for the\n // string-encoding rationale and the worker round-trip caveat.\n let inputDataJson = inputData !== undefined ? ResourceSerializationUtils.stringifyWithBigInt(inputData) : undefined;\n let inputPayloadStorageId: string | undefined;\n\n // Store large payloads externally to avoid RabbitMQ performance issues\n if (inputDataJson && this.payloadStorage.shouldStore(inputDataJson)) {\n inputPayloadStorageId = await this.payloadStorage.store(inputData);\n inputDataJson = undefined; // Don't embed in message\n this.logDebug('Large payload stored externally', { inputPayloadStorageId });\n }\n\n // Extract operation path for serialization\n const operationPath = ResourcesConfig_OperationPathUtils.extractOperationPath(operation as any);\n\n const job: JobPayload = {\n jobId: uuidv4(),\n jobType: JobType.RESOURCE_OPERATION,\n applicationId: this.appId,\n\n operationPathKey: ResourcesConfig_OperationPathUtils.createOperationPathKey(operationPath),\n operationPathJson: ResourceSerializationUtils.serializeOperationPath(operationPath),\n\n inputDataJson,\n inputPayloadStorageId,\n inputId,\n\n executionContextJson: ResourceSerializationUtils.serializeExecutionContext({\n executionType: executionContext.executionType,\n initiatorIds: executionContext.initiatorIds,\n initiatorRoles: [...executionContext.initiatorRoles],\n getContextResourceIds: () => executionContext.getContextResourceIds(),\n relationshipContexts: [...executionContext.relationshipContexts],\n }),\n\n // Phase 6 — carry the enqueuing request's correlationId onto the job so the worker that later\n // executes it adopts the same id (request → job trace join). The EC already holds the request's\n // correlationId (it adopted the ambient request frame's id at construction, R13/Model A), so this\n // is the single authoritative source — no separate ALS read needed here.\n originCorrelationId: executionContext.correlationId,\n\n initiatedBy: JobInitiator.API,\n priority: queueConfig.priority ?? JobPriority.NORMAL,\n retryCount: 0,\n maxRetries: queueConfig.maxRetries ?? QUEUE_CONFIG_DEFAULTS.maxRetries,\n // Resolve backoff from the operation's authored queueConfig.retryConfig\n // (read off `operation.queueConfig`, whose type carries the field —\n // QUEUE_CONFIG_DEFAULTS does not), applying defaults per-field so the\n // transported payload carries fully-resolved values the worker can honor.\n retryConfig: {\n baseDelayMs: operation.queueConfig?.retryConfig?.baseDelayMs ?? QUEUE_RETRY_DEFAULTS.baseDelayMs,\n maxDelayMs: operation.queueConfig?.retryConfig?.maxDelayMs ?? QUEUE_RETRY_DEFAULTS.maxDelayMs,\n retryPolicy: operation.queueConfig?.retryConfig?.retryPolicy ?? QUEUE_RETRY_DEFAULTS.retryPolicy,\n },\n timeoutMs: queueConfig.timeoutMs ?? QUEUE_CONFIG_DEFAULTS.timeoutMs,\n\n createdAt: new Date(),\n };\n\n return job;\n }\n\n /**\n * Get operations queue name based on priority.\n * Accepts string because job.priority from schema is a string union.\n */\n private getOperationsQueueName(priority: string): string {\n const base = buildQueueName(this.appId, 'operations');\n return (priority === JobPriority.HIGH || priority === JobPriority.CRITICAL)\n ? buildQueueName(this.appId, 'operations', QueueVariant.PRIORITY)\n : base;\n }\n\n /**\n * Handle RPC reply from worker.\n */\n private handleReply(correlationId: string, result: JobResult): void {\n const pending = this.pendingReplies.get(correlationId);\n if (!pending) {\n this.logger.warn('Received reply for unknown correlationId', { correlationId });\n return;\n }\n\n clearTimeout(pending.timeout);\n this.pendingReplies.delete(correlationId);\n\n if (result.status === JobStatus.COMPLETED) {\n const parsedResult = result.resultJson ? JSON.parse(result.resultJson) : null;\n pending.resolve(parsedResult);\n } else {\n // Use type and operationPathKey from WildoError as the error message\n const errorMsg = result.error\n ? `${result.error.type}${result.error.operationPathKey ? ` (${result.error.operationPathKey})` : ''}`\n : 'Job failed';\n pending.reject(new Error(errorMsg));\n }\n }\n\n /**\n * Enqueue a custom batch job.\n *\n * This method is used for fire-and-forget batch operations that don't\n * need to go through the standard resource operation flow.\n *\n * @param batchType - Identifier for the batch type (e.g., 'email.batch-send')\n * @param payload - The batch job payload (must be serializable)\n * @param options - Optional configuration for the job\n * @returns The job ID and queue name\n */\n public async enqueueCustomBatch(\n batchType: string,\n payload: unknown,\n options?: {\n priority?: JobPriority;\n maxRetries?: number;\n timeoutMs?: number;\n /** Optional backoff timing override (base delay / cap / curve). */\n retryConfig?: QueueRetryBackoffConfig;\n }\n ): Promise<EnqueueResult> {\n const priority = options?.priority ?? JobPriority.NORMAL;\n const maxRetries = options?.maxRetries ?? QUEUE_CONFIG_DEFAULTS.maxRetries;\n const timeoutMs = options?.timeoutMs ?? QUEUE_CONFIG_DEFAULTS.timeoutMs;\n\n // Serialize payload with the bigint-safe serializer (payload may carry\n // z_money/MoneyValue bigint amounts; see bigIntSafeJsonReplacer).\n let inputDataJson = ResourceSerializationUtils.stringifyWithBigInt(payload);\n let inputPayloadStorageId: string | undefined;\n\n // Store large payloads externally\n if (this.payloadStorage.shouldStore(inputDataJson)) {\n inputPayloadStorageId = await this.payloadStorage.store(payload);\n inputDataJson = undefined as any;\n }\n\n const job: JobPayload = {\n jobId: uuidv4(),\n jobType: JobType.CUSTOM_BATCH,\n applicationId: this.appId,\n\n // batchRef is REQUIRED for custom batches: `JobExecutorBackendService.executeCustomBatch`\n // throws JOB_BATCH_REF_NOT_FOUND if it's missing. Without this line every custom batch\n // job (email batches, M2M webhook deliveries, …) would fail at the executor.\n batchRef: batchType,\n\n operationPathKey: batchType, // Use batch type as the operation path key\n operationPathJson: JSON.stringify({ batchType }),\n\n inputDataJson,\n inputPayloadStorageId,\n\n executionContextJson: JSON.stringify({\n executionType: 'BATCH',\n initiatorIds: { systemBatch: true },\n }),\n\n // Phase 6 (F1) — a custom batch has no enqueuing EC, but its DISPATCHER (SIEM / M2M-webhook /\n // notification delivery) usually runs inside the TRIGGERING request's frame. Seed\n // originCorrelationId from the ambient frame (SD10 pattern) so the batch job's worker-side logs +\n // audit join that request's trace. `undefined` when dispatched outside any request (e.g. a\n // background flush), in which case the consumer mints a fresh id — still independently traceable.\n originCorrelationId: getCurrentCorrelationId(),\n\n initiatedBy: JobInitiator.INTERNAL,\n priority,\n retryCount: 0,\n maxRetries,\n retryConfig: {\n baseDelayMs: options?.retryConfig?.baseDelayMs ?? QUEUE_RETRY_DEFAULTS.baseDelayMs,\n maxDelayMs: options?.retryConfig?.maxDelayMs ?? QUEUE_RETRY_DEFAULTS.maxDelayMs,\n retryPolicy: options?.retryConfig?.retryPolicy ?? QUEUE_RETRY_DEFAULTS.retryPolicy,\n },\n timeoutMs,\n\n createdAt: new Date(),\n };\n\n // Determine queue based on priority\n const queueName = this.getOperationsQueueName(priority);\n\n // Create job tracking record\n await this.jobStatusTracking.createJobRecord(job, queueName);\n\n // Publish to queue\n await this.adapter.publish(queueName, job);\n\n this.logDebug('Custom batch job enqueued', {\n jobId: job.jobId,\n batchType,\n queueName,\n hasExternalPayload: !!inputPayloadStorageId,\n });\n\n return { jobId: job.jobId, queueName };\n }\n\n /**\n * Get RabbitMQ adapter for direct operations.\n */\n public getAdapter(): QueueAdapter {\n return this.adapter;\n }\n\n /**\n * Close queue service gracefully.\n */\n public async close(): Promise<void> {\n // Clear pending replies\n for (const [correlationId, pending] of this.pendingReplies) {\n clearTimeout(pending.timeout);\n pending.reject(new Error('Queue service closing'));\n }\n this.pendingReplies.clear();\n\n // Close adapter\n await this.adapter.close();\n\n this.initialized = false;\n this.logger.info('Queue service closed');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-message-verifier.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/queue/scheduled-message-verifier.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AAEjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EACL,UAAU,EACV,OAAO,EAKR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB;;;GAGG;AACH,QAAA,MAAM,2BAA2B;;;;;;;;;;;iBAQ/B,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,wBAAwB;;;;;;;;;;iBAM5B,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;8BAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IAEjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBACa,sCAAsC;IAK/C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAI9D,UAAU,EAAE,iBAAiB,EAE7B,MAAM,EAAE,aAAa,EAErB,YAAY,EAAE,0BAA0B;IAM3D;;;;;OAKG;IACG,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAwFxF;;;;;;;;OAQG;IACH,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU;IAiC7D;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqC1D;;;;;;;;;;;;;;;;;;;OAmBG;IACG,0BAA0B,CAC9B,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAoCtC"}
1
+ {"version":3,"file":"scheduled-message-verifier.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/scheduled-message-verifier.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AAEjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EACL,UAAU,EACV,OAAO,EAKR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB;;;GAGG;AACH,QAAA,MAAM,2BAA2B;;;;;;;;;;;iBAQ/B,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,wBAAwB;;;;;;;;;;iBAM5B,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;8BAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IAEjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBACa,sCAAsC;IAK/C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAI9D,UAAU,EAAE,iBAAiB,EAE7B,MAAM,EAAE,aAAa,EAErB,YAAY,EAAE,0BAA0B;IAM3D;;;;;OAKG;IACG,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAwFxF;;;;;;;;OAQG;IACH,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU;IAiC7D;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqC1D;;;;;;;;;;;;;;;;;;;OAmBG;IACG,0BAA0B,CAC9B,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAoCtC"}
@@ -20,7 +20,7 @@
20
20
  * Components register themselves as "stoppable" via registerStopHandler().
21
21
  */
22
22
  import { LoggerService } from '../monitoring/logger/services/logger.service';
23
- import { RabbitMQAdapterBackendService } from './adapters/rabbitmq-adapter.backend.service';
23
+ import type { QueueAdapter } from './adapters/queue-adapter.backend.interface';
24
24
  /**
25
25
  * Shutdown configuration.
26
26
  */
@@ -69,7 +69,7 @@ export declare class WorkerShutdownManagerBackendService {
69
69
  /** Audit A-7: ensures the shutdown handlers (incl. the OTel flush) run at most once across the
70
70
  * graceful path and the force/crash path. */
71
71
  private shutdownHandlersRun;
72
- constructor(adapter: RabbitMQAdapterBackendService, logger: LoggerService);
72
+ constructor(adapter: QueueAdapter, logger: LoggerService);
73
73
  /**
74
74
  * Register shutdown signal handlers.
75
75
  * Should be called once during worker startup.
@@ -1 +1 @@
1
- {"version":3,"file":"worker-shutdown-manager.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/queue/worker-shutdown-manager.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAG7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;GAGG;AACH,KAAK,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvC;;;GAGG;AACH,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3C,qBACa,mCAAmC;IAyB5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IA1BzB,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAqB;IAEzC;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,iBAAiB,CAAS;IAElC;kDAC8C;IAC9C,OAAO,CAAC,mBAAmB,CAAS;gBAIjB,OAAO,EAAE,6BAA6B,EAEtC,MAAM,EAAE,aAAa;IAMxC;;;OAGG;IACH,sBAAsB,CAAC,MAAM,GAAE,cAAmB,GAAG,IAAI;IA6EzD;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAK/C;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DvE;;;OAGG;YACW,mBAAmB;IAejC;;;OAGG;YACW,mBAAmB;IAgBjC;;OAEG;YACW,aAAa;CA4B5B"}
1
+ {"version":3,"file":"worker-shutdown-manager.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/worker-shutdown-manager.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAG7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;GAGG;AACH,KAAK,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvC;;;GAGG;AACH,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3C,qBACa,mCAAmC;IAyB5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IA1BzB,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAqB;IAEzC;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,iBAAiB,CAAS;IAElC;kDAC8C;IAC9C,OAAO,CAAC,mBAAmB,CAAS;gBAIjB,OAAO,EAAE,YAAY,EAErB,MAAM,EAAE,aAAa;IAMxC;;;OAGG;IACH,sBAAsB,CAAC,MAAM,GAAE,cAAmB,GAAG,IAAI;IA6EzD;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAK/C;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4EvE;;;OAGG;YACW,mBAAmB;IAejC;;;OAGG;YACW,mBAAmB;IAgBjC;;OAEG;YACW,aAAa;CA4B5B"}