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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (853) hide show
  1. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
  2. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
  3. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  4. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  5. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
  6. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  7. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
  8. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
  9. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
  10. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
  11. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
  12. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
  13. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
  14. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
  15. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
  16. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
  18. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  19. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  20. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
  21. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  22. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
  23. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  24. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
  25. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  26. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
  27. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  28. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
  29. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  30. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
  31. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  32. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
  33. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  34. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
  35. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
  36. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
  37. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
  38. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
  39. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  40. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
  41. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  42. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
  44. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  45. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +49 -0
  46. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  47. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +171 -18
  48. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  49. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  50. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
  51. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  52. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  53. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +20 -0
  54. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  55. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
  56. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  57. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  58. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  59. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
  60. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  61. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
  62. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  63. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
  64. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  65. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
  66. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +529 -41
  68. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  69. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
  70. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  71. package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
  72. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  73. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
  74. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
  75. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
  76. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
  77. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
  78. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
  79. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
  80. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
  81. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
  82. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
  83. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
  84. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
  85. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
  86. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
  87. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
  88. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
  89. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
  90. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  91. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
  92. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  93. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
  94. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  95. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
  96. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  97. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
  98. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
  99. package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
  100. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
  101. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
  102. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  103. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
  104. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  105. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  106. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
  107. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  108. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
  109. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  110. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
  111. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  112. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
  113. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  114. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
  115. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  116. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
  117. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  118. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
  119. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  120. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  121. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
  122. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  123. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
  124. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  125. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
  126. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  127. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
  128. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
  129. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
  130. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
  131. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
  132. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  133. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
  134. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  135. package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
  136. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  137. package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
  138. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  139. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
  140. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  141. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
  142. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  143. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
  144. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  145. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +244 -7
  146. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  147. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +386 -5
  148. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  149. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  150. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
  151. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  152. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
  153. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  154. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
  155. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
  156. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
  157. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  158. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
  159. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  160. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
  161. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
  162. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
  163. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
  164. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  165. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +31 -0
  166. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  167. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
  168. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  169. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
  170. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  171. package/dist/esm/config/models/app-config.backend.schemas.d.ts +142 -46
  172. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  173. package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
  174. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  175. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
  176. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  177. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
  178. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  179. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
  180. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  181. package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
  182. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  183. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  184. package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
  185. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  186. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
  187. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  188. package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
  189. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  190. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
  191. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  192. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
  193. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  194. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  195. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
  196. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  197. package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
  198. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  199. package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
  200. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  201. package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
  202. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  203. package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
  204. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  205. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
  206. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  207. package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
  208. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  209. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
  210. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  211. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
  212. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  213. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
  214. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  215. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
  216. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  217. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
  218. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  219. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
  220. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  221. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
  222. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  223. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  224. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
  225. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
  226. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
  227. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
  228. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
  229. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
  230. package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
  231. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
  232. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
  233. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
  234. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
  235. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
  236. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
  237. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
  238. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
  239. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
  240. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
  241. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  242. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
  243. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  244. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
  245. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
  246. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
  247. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
  248. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
  249. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  250. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
  251. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  252. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  253. package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
  254. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  255. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  256. package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
  257. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  258. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +292 -7
  259. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  260. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +533 -45
  261. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  262. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  263. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
  264. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  265. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  266. package/dist/esm/files/controllers/file.controller.js +21 -13
  267. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  268. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  269. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +39 -15
  270. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  271. package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
  272. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  273. package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
  274. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  275. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
  276. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  277. package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
  278. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  279. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
  280. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
  281. package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
  282. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
  283. package/dist/esm/files/services/files.backend.service.d.ts +68 -0
  284. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  285. package/dist/esm/files/services/files.backend.service.js +175 -5
  286. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  287. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
  288. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
  289. package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
  290. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
  291. package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
  292. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  293. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  294. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
  295. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  296. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
  297. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  298. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  299. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
  300. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  301. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  302. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
  303. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  304. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
  305. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
  306. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
  307. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
  308. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
  309. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  310. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
  311. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  312. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  313. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
  314. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  315. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
  316. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  317. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
  318. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  319. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
  320. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  321. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
  322. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  323. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
  324. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  325. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
  326. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  327. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
  328. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  329. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
  330. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  331. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
  332. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  333. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  334. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
  335. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  336. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
  337. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  338. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
  339. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  340. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
  341. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  342. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
  343. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  344. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  345. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
  346. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  347. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
  348. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  349. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  350. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
  351. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  352. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
  353. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
  354. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
  355. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
  356. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  357. package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
  358. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  359. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +28 -1
  360. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  361. package/dist/esm/flows-actors/services/agents.backend.service.js +204 -18
  362. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  363. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
  364. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  365. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
  366. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  367. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
  368. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  369. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
  370. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  371. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  372. package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
  373. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  374. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  375. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
  376. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  377. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
  378. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
  379. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
  380. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
  381. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
  382. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  383. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
  384. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  385. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  386. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +8 -4
  387. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  388. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
  389. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  390. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
  391. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  392. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  393. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  394. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
  395. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  396. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
  397. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  398. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
  399. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
  400. package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
  401. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
  402. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
  403. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  404. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
  405. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  406. package/dist/esm/index.d.ts +11 -4
  407. package/dist/esm/index.d.ts.map +1 -1
  408. package/dist/esm/index.js +31 -4
  409. package/dist/esm/index.js.map +1 -1
  410. package/dist/esm/inject/models/container.d.ts.map +1 -1
  411. package/dist/esm/inject/models/container.js +78 -10
  412. package/dist/esm/inject/models/container.js.map +1 -1
  413. package/dist/esm/inject/models/service-types.d.ts +17 -3
  414. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  415. package/dist/esm/inject/models/service-types.js +19 -3
  416. package/dist/esm/inject/models/service-types.js.map +1 -1
  417. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  418. package/dist/esm/mcp/controllers/mcp.controller.js +20 -0
  419. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  420. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
  421. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  422. package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
  423. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  424. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  425. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
  426. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  427. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  428. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
  429. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  430. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
  431. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
  432. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
  433. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
  434. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
  435. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  436. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
  437. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  438. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
  439. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  440. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  441. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
  442. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  443. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
  444. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  445. package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
  446. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  447. package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
  448. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  449. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
  450. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
  451. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
  452. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
  453. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
  454. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
  455. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
  456. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
  457. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
  458. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  459. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  460. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
  461. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  462. package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
  463. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  464. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
  465. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
  466. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
  467. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
  468. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
  469. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
  470. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
  471. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
  472. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
  473. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
  474. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
  475. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
  476. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
  477. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  478. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
  479. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  480. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
  481. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
  482. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
  483. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
  484. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  485. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
  486. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  487. package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
  488. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  489. package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
  490. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  491. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
  492. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  493. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  494. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
  495. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  496. package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
  497. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  498. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
  499. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  500. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
  501. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  502. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
  503. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  504. package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
  505. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  506. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
  507. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  508. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
  509. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  510. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
  511. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  512. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
  513. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  514. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  515. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
  516. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  517. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  518. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
  519. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  520. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
  521. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  522. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
  523. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  524. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
  525. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
  526. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  527. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  528. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
  529. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  530. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
  531. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
  532. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
  533. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
  534. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
  535. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
  536. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
  537. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
  538. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
  539. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
  540. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
  541. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
  542. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
  543. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
  544. package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
  545. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
  546. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
  547. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  548. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
  549. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  550. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
  551. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  552. package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
  553. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  554. package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
  555. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  556. package/dist/esm/queue/job-consumer.backend.service.js +1 -4
  557. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  558. package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
  559. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  560. package/dist/esm/queue/job-executor.backend.service.js +1 -4
  561. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  562. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
  563. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  564. package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
  565. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  566. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
  567. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  568. package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
  569. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  570. package/dist/esm/queue/queue.backend.service.d.ts +3 -3
  571. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  572. package/dist/esm/queue/queue.backend.service.js +26 -4
  573. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  574. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
  575. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  576. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
  577. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  578. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
  579. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  580. package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
  581. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  582. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
  583. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  584. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
  585. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  586. package/dist/esm/requests/service/websocket.service.d.ts +9 -0
  587. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  588. package/dist/esm/requests/service/websocket.service.js +32 -8
  589. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  590. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  591. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +14 -2
  592. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  593. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  594. package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
  595. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  596. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  597. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
  598. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  599. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
  600. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  601. package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
  602. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  603. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
  604. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  605. package/dist/esm/resources/services/resources-registry.backend.service.js +90 -6
  606. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  607. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
  608. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  609. package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
  610. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  611. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
  612. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  613. package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
  614. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  615. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
  616. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  617. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  618. package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
  619. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  620. package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
  621. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  622. package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
  623. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  624. package/dist/esm/runtime/services/start-application.backend.service.js +261 -77
  625. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  626. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
  627. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  628. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
  629. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  630. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
  631. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  632. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
  633. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  634. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  635. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
  636. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  637. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
  638. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  639. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
  640. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  641. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
  642. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  643. package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
  644. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  645. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
  646. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  647. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  648. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
  649. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  650. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
  651. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  652. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
  653. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  654. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
  655. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  656. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
  657. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  658. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
  659. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  660. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
  661. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  662. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
  663. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  664. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
  665. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  666. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
  667. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  668. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  669. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
  670. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  671. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
  672. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  673. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
  674. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  675. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  676. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
  677. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  678. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  679. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
  680. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  681. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
  682. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  683. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
  684. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  685. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
  686. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  687. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
  688. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  689. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
  690. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  691. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
  692. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  693. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
  694. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  695. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
  696. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  697. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  698. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
  699. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  700. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
  701. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
  702. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
  703. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
  704. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
  705. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  706. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
  707. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  708. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
  709. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  710. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
  711. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  712. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
  713. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  714. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
  715. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  716. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  717. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
  718. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  719. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  720. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
  721. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  722. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
  723. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  724. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
  725. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  726. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
  727. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  728. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
  729. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  730. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
  731. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
  732. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
  733. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
  734. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
  735. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  736. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
  737. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  738. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  739. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
  740. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  741. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
  742. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  743. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
  744. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  745. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
  746. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
  747. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
  748. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
  749. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
  750. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  751. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
  752. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  753. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +74 -8
  754. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  755. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +175 -19
  756. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  757. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
  758. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  759. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
  760. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  761. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
  762. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
  763. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
  764. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
  765. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
  766. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
  767. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
  768. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
  769. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
  770. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
  771. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
  772. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
  773. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
  774. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
  775. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
  776. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
  777. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
  778. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
  779. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
  780. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
  781. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
  782. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  783. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
  784. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
  785. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
  786. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
  787. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
  788. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
  789. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
  790. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
  791. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
  792. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
  793. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
  794. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
  795. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
  796. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
  797. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
  798. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
  799. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
  800. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
  801. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
  802. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  803. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
  804. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
  805. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
  806. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
  807. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
  808. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
  809. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
  810. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
  811. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
  812. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
  813. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
  814. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
  815. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
  816. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
  817. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
  818. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  819. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
  820. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  821. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
  822. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  823. package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
  824. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  825. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
  826. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  827. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
  828. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  829. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
  830. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  831. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
  832. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  833. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  834. package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
  835. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  836. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
  837. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  838. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
  839. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  840. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
  841. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  842. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
  843. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  844. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
  845. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
  846. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
  847. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
  848. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
  849. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
  850. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
  851. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
  852. package/dist/tsconfig.build.tsbuildinfo +1 -1
  853. package/package.json +11 -9
@@ -1 +1 @@
1
- {"version":3,"file":"worker-remote-client-factory.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/applications/services/worker-remote-client-factory.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AACtG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAEnH,OAAO,EACL,8BAA8B,EAC9B,KAAK,+BAA+B,EACrC,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAG/G;;;;;;;;;GASG;AACH,qBAAa,gCAAiC,SAAQ,8BAA8B;IAOhF,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,aAAa;IAVhC,OAAO,CAAC,mBAAmB,CAAS;gBAGlC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,0BAA0B,EACxC,iBAAiB,EAAE,iBAAiB,EACnB,gBAAgB,EAAE,uBAAuB;IAC1D,4EAA4E;IAC3D,UAAU,EAAE,MAAM;IACnC,8FAA8F;IAC7E,aAAa,EAAE,MAAM;IAYxC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;;;;;;;;OASG;IACY,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAWzF;;;;;;;;OAQG;cACsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvD;AAED;;;;;;;;GAQG;AACH,qBACa,uCAAuC;IAIb,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IANhF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;gBAGzB,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EAC1C,iBAAiB,EAAE,iBAAiB,EACrC,gBAAgB,EAAE,uBAAuB;IAGzG;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,+BAA+B;CAiC5D"}
1
+ {"version":3,"file":"worker-remote-client-factory.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/applications/services/worker-remote-client-factory.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AACtG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAEnH,OAAO,EACL,8BAA8B,EAC9B,KAAK,+BAA+B,EACrC,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAG/G;;;;;;;;;GASG;AACH,qBAAa,gCAAiC,SAAQ,8BAA8B;IAOhF,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,aAAa;IAVhC,OAAO,CAAC,mBAAmB,CAAS;gBAGlC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,0BAA0B,EACxC,iBAAiB,EAAE,iBAAiB,EACnB,gBAAgB,EAAE,uBAAuB;IAC1D,4EAA4E;IAC3D,UAAU,EAAE,MAAM;IACnC,8FAA8F;IAC7E,aAAa,EAAE,MAAM;IA6BxC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;;;;;;;;OASG;IACY,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAWzF;;;;;;;;OAQG;cACsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvD;AAED;;;;;;;;GAQG;AACH,qBACa,uCAAuC;IAIb,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IANhF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;gBAGzB,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EAC1C,iBAAiB,EAAE,iBAAiB,EACrC,gBAAgB,EAAE,uBAAuB;IAGzG;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,+BAA+B;CAiC5D"}
@@ -68,6 +68,23 @@ export class WorkerRemoteClientBackendService extends RemoteClientBaseBackendSer
68
68
  this.appConfigService = appConfigService;
69
69
  this.workerName = workerName;
70
70
  this.workerBaseUrl = workerBaseUrl;
71
+ /*
72
+ * The base URL is set EAGERLY, and that is load-bearing rather than tidy.
73
+ *
74
+ * `RemoteClientBaseBackendService.post()` composes `${this.remoteServiceBaseUrl}${path}` at the
75
+ * moment it is called — BEFORE `request()` reaches `waitForReady()`. So a base URL assigned
76
+ * inside the lazy `ensureInitialized()` arrives strictly too late: the first dispatch built
77
+ * `undefined/tasks/…` and failed `ERR_INVALID_URL`, reported to the caller as a NETWORK 503
78
+ * naming no cause.
79
+ *
80
+ * Nothing about the URL needed deferring in the first place — the factory has it at
81
+ * construction. What genuinely must stay lazy is the axios wiring, because it reads the JWT
82
+ * signing key out of the app config, which may not be initialized when a client is first cached.
83
+ *
84
+ * This shipped broken and could not have been noticed: the factory had no caller anywhere, so
85
+ * the very first real dispatch was the first execution of this line (#426).
86
+ */
87
+ this.remoteServiceBaseUrl = workerBaseUrl;
71
88
  this.logDebug = this.logger.debugByType('WorkerRemoteClientBackendService');
72
89
  this.logger.setDebugTypeLogging('WorkerRemoteClientBackendService', false);
73
90
  // The calling process is the app backend (the only origin that mints
@@ -94,7 +111,8 @@ export class WorkerRemoteClientBackendService extends RemoteClientBaseBackendSer
94
111
  },
95
112
  });
96
113
  }
97
- this.remoteServiceBaseUrl = this.workerBaseUrl;
114
+ // `remoteServiceBaseUrl` is already set in the constructor — see the note there for why it
115
+ // cannot wait until here.
98
116
  this.initiateAxiosInstance({
99
117
  [WildoHeaderKeys.CONTENT_TYPE]: 'application/json',
100
118
  [WildoHeaderKeys.SERVICE_ID]: this.localServiceId,
@@ -1 +1 @@
1
- {"version":3,"file":"worker-remote-client-factory.backend.service.js","sourceRoot":"","sources":["../../../../../src/applications/services/worker-remote-client-factory.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Backend → worker dispatch (gap G-8 / MW4 of\n * `.claude/plans/minions-and-workers-implementation.md`).\n *\n * A declared worker deploys as its own per-app k8s Deployment + ClusterIP\n * Service, but until now the backend had NO way to CALL it — the worker-request\n * JWT key family (G-7), the apps-manager keypair provisioning, and the\n * worker-side verifier all shipped, yet the call-side that mints + sends the\n * token never existed, so workers were uncallable end-to-end.\n *\n * This file closes that gap:\n * - `WorkerRemoteClientBackendService` — a per-worker HTTP client (a thin\n * `RemoteClientBaseBackendService` subclass) that signs an\n * `APPLICATION_WORKER_REQUEST` JWT and reaches the worker at the URL injected\n * as `WILDO_WORKER_<NAME>_URL` at deploy time.\n * - `WorkerRemoteClientFactoryBackendService` — the DI-injectable factory app\n * code uses: `inject(WorkerRemoteClientFactory).client('myNodeWorker').post('/echo', body)`.\n *\n * The worker verifies the token against the trusted `APPLICATION_WORKER_REQUEST`\n * public key it fetches from apps-manager (`WildoWorkerBootstrapClientService` +\n * `createWorkerJwtVerifierMiddleware`), pinning `iss='wildo-application'` /\n * `aud='APPLICATION_WORKER'` / ES256 — exactly what `sign(payload,\n * APPLICATION_WORKER_REQUEST)` produces from a BARE payload.\n */\n\nimport 'reflect-metadata';\n\nimport { inject, injectable } from 'inversify';\nimport type { InternalAxiosRequestConfig } from 'axios';\n\nimport { BackendApiType, ErrorCustomMessageReference, ErrorType, WildoHeaderKeys } from '@wildo-ai/saas-models';\nimport { wildoWorkerUrlEnvKey } from '@wildo-ai/platform-core-shared';\n\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { JwtBackendService } from '~wildo-backend-lib/security/jwt/services/jwt.backend.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport {\n RemoteClientBaseBackendService,\n type IRemoteClientBaseBackendService,\n} from '~wildo-backend-lib/requests/service/remote-client-base.backend.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { JwtPrivateKeys } from '~wildo-backend-lib/security/authentications/models/jwt.backend.schemas';\n\n/**\n * A single per-worker HTTP client. Constructed by\n * {@link WorkerRemoteClientFactoryBackendService} (NOT DI — it needs the\n * worker's runtime name + base URL), so it is a plain class, not `@injectable`.\n *\n * Mirrors the platform-service client pattern (`AppsCrontabManagerBackendService`)\n * with two deliberate divergences documented on the overrides below: the auth\n * token is a worker-request JWT (not a platform-request JWT), and the readiness\n * gate is skipped (the worker's ready path differs from the platform convention).\n */\nexport class WorkerRemoteClientBackendService extends RemoteClientBaseBackendService {\n private isClientInitialized = false;\n\n constructor(\n logger: LoggerService,\n errorBuilder: ErrorBuilderBackendService,\n jwtBackendService: JwtBackendService,\n private readonly appConfigService: AppConfigurationService,\n /** The worker's `wildo.saas.config.ts` bucket key (e.g. `myNodeWorker`). */\n private readonly workerName: string,\n /** Base URL from `WILDO_WORKER_<NAME>_URL` (e.g. `http://{appSlug}-worker-{name}:{port}`). */\n private readonly workerBaseUrl: string,\n ) {\n // The worker name IS the remote service id — `AllApplicationTypes` admits a\n // bare `string`, so no cast is needed and logs/errors carry the worker name.\n super(logger, errorBuilder, jwtBackendService, workerName);\n this.logDebug = this.logger.debugByType('WorkerRemoteClientBackendService');\n this.logger.setDebugTypeLogging('WorkerRemoteClientBackendService', false);\n // The calling process is the app backend (the only origin that mints\n // worker-request tokens).\n this.localServiceId = BackendApiType.MAIN_BACKEND_API;\n }\n\n /**\n * Lazily wire the axios instance + interceptors on first use. Deferred (not\n * done in the constructor) so a client can be cached before the app config is\n * ready; the first request materializes it. Fails closed if the app config is\n * not initialized (the JWT signing key lives there).\n */\n private ensureInitialized(): void {\n if (this.isClientInitialized) {\n return;\n }\n if (!this.appConfigService.isInitialized()) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'Application configuration must be initialized before dispatching to a worker '\n + '(the APPLICATION_WORKER_REQUEST signing key is loaded from app config).',\n workerName: this.workerName,\n },\n });\n }\n\n this.remoteServiceBaseUrl = this.workerBaseUrl;\n this.initiateAxiosInstance({\n [WildoHeaderKeys.CONTENT_TYPE]: 'application/json',\n [WildoHeaderKeys.SERVICE_ID]: this.localServiceId,\n [WildoHeaderKeys.APPLICATION_ID]: this.appConfigService.applicationId,\n [WildoHeaderKeys.USER_AGENT]: 'wildo-worker-dispatch/1.0.0',\n });\n this.setupInterceptors();\n this.isClientInitialized = true;\n }\n\n /**\n * Mint the per-request `APPLICATION_WORKER_REQUEST` bearer.\n *\n * CRITICAL: pass a BARE payload (no `iss`/`aud`) so\n * `JwtPrivateKeySignOptions[APPLICATION_WORKER_REQUEST]` supplies\n * `issuer='wildo-application'` + `audience='APPLICATION_WORKER'` — the exact\n * values the worker's `createWorkerJwtVerifierMiddleware` pins. Unlike the\n * platform-request client, this MUST NOT override `issuer` to the local\n * service id (that would make the worker's verifier reject the token).\n */\n override async generateServiceToken(_config: InternalAxiosRequestConfig): Promise<string> {\n this.ensureInitialized();\n return this.jwtBackendService.sign(\n {\n applicationId: this.appConfigService.applicationId,\n workerName: this.workerName,\n },\n JwtPrivateKeys.APPLICATION_WORKER_REQUEST,\n );\n }\n\n /**\n * Override the base readiness gate to a no-op (after ensuring the axios\n * instance exists). The base polls `${baseUrl}/health/ready` — the\n * platform-service convention — but a worker serves its authored\n * `http.readyPath` (default `/readyz`), NOT `/health/ready`, and the backend\n * does not carry the worker's ready path. Left un-overridden, the base gate\n * would poll a 404 forever and hang the first dispatch. Worker dispatch\n * instead fails fast on a down worker via the base request retry/backoff.\n */\n protected override async waitForReady(): Promise<void> {\n this.ensureInitialized();\n }\n}\n\n/**\n * DI-injectable factory that hands app code a ready-to-use HTTP client per\n * declared worker, caching one client per worker name. Registered singleton so\n * the cache is process-wide.\n *\n * @example\n * const worker = container.get(SAAS_SERVICE_TYPES.WorkerRemoteClientFactoryService);\n * const res = await worker.client('myNodeWorker').post('/echo', { hello: 'world' });\n */\n@injectable()\nexport class WorkerRemoteClientFactoryBackendService {\n private readonly clients = new Map<string, WorkerRemoteClientBackendService>();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.JwtBackendService) private readonly jwtBackendService: JwtBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly appConfigService: AppConfigurationService,\n ) {}\n\n /**\n * Return a cached HTTP client for the named declared worker. `workerName` is\n * the `wildo.saas.config.ts` `workers` bucket key (e.g. `myNodeWorker`).\n *\n * The base URL is read from `WILDO_WORKER_<NAME>_URL`, injected into the\n * app-backend env at deploy time. A missing var fails CLOSED — the worker was\n * not declared, or the deploy did not inject its URL — rather than silently\n * dispatching to a bad address. No `localhost`/default fallback (per the MW4\n * env discipline).\n */\n client(workerName: string): IRemoteClientBaseBackendService {\n const cached = this.clients.get(workerName);\n if (cached) {\n return cached;\n }\n\n const envKey = wildoWorkerUrlEnvKey(workerName);\n const baseUrl = process.env[envKey];\n if (!baseUrl) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `No dispatch URL for worker '${workerName}': expected env '${envKey}'. `\n + 'Declare the worker in wildo.saas.config.ts `workers` and re-run deploy so the '\n + 'CLI injects WILDO_WORKER_<NAME>_URL into the app-backend env.',\n workerName,\n envKey,\n },\n });\n }\n\n const client = new WorkerRemoteClientBackendService(\n this.logger,\n this.errorBuilder,\n this.jwtBackendService,\n this.appConfigService,\n workerName,\n baseUrl,\n );\n this.clients.set(workerName, client);\n return client;\n }\n}\n"]}
1
+ {"version":3,"file":"worker-remote-client-factory.backend.service.js","sourceRoot":"","sources":["../../../../../src/applications/services/worker-remote-client-factory.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;;;;;;;;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAKtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EACL,8BAA8B,GAE/B,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,wEAAwE,CAAC;AAExG;;;;;;;;;GASG;AACH,MAAM,OAAO,gCAAiC,SAAQ,8BAA8B;IAO/D;IAEA;IAEA;IAVX,mBAAmB,GAAG,KAAK,CAAC;IAEpC,YACE,MAAqB,EACrB,YAAwC,EACxC,iBAAoC,EACnB,gBAAyC;IAC1D,4EAA4E;IAC3D,UAAkB;IACnC,8FAA8F;IAC7E,aAAqB;QAEtC,4EAA4E;QAC5E,6EAA6E;QAC7E,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAR1C,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEzC,eAAU,GAAV,UAAU,CAAQ;QAElB,kBAAa,GAAb,aAAa,CAAQ;QAKtC;;;;;;;;;;;;;;;WAeG;QACH,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QAC3E,qEAAqE;QACrE,0BAA0B;QAC1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,gBAAgB,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,OAAO,EACL,+EAA+E;0BAC7E,yEAAyE;oBAC7E,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B;aACF,CAAC,CAAC;QACL,CAAC;QAED,2FAA2F;QAC3F,0BAA0B;QAC1B,IAAI,CAAC,qBAAqB,CAAC;YACzB,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,kBAAkB;YAClD,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc;YACjD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa;YACrE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,6BAA6B;SAC5D,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;;;;;;;;;OASG;IACM,KAAK,CAAC,oBAAoB,CAAC,OAAmC;QACrE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAChC;YACE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa;YAClD,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,EACD,cAAc,CAAC,0BAA0B,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACgB,KAAK,CAAC,YAAY;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;CACF;AAED;;;;;;;;GAQG;AAEI,IAAM,uCAAuC,GAA7C,MAAM,uCAAuC;IAII;IACa;IACF;IACD;IAN/C,OAAO,GAAG,IAAI,GAAG,EAA4C,CAAC;IAE/E,YACsD,MAAqB,EACR,YAAwC,EAC1C,iBAAoC,EACrC,gBAAyC;QAHnD,WAAM,GAAN,MAAM,CAAe;QACR,iBAAY,GAAZ,YAAY,CAA4B;QAC1C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACrC,qBAAgB,GAAhB,gBAAgB,CAAyB;IACtG,CAAC;IAEJ;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAkB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,OAAO,EACL,+BAA+B,UAAU,oBAAoB,MAAM,KAAK;0BACtE,gFAAgF;0BAChF,+DAA+D;oBACnE,UAAU;oBACV,MAAM;iBACP;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,gCAAgC,CACjD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,gBAAgB,EACrB,UAAU,EACV,OAAO,CACR,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AArDY,uCAAuC;IADnD,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACjC,WAAA,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;IAC9C,WAAA,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;IAC5C,WAAA,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;mEAAoC,uBAAuB;GAP9F,uCAAuC,CAqDnD","sourcesContent":["/**\n * Backend → worker dispatch (gap G-8 / MW4 of\n * `.claude/plans/minions-and-workers-implementation.md`).\n *\n * A declared worker deploys as its own per-app k8s Deployment + ClusterIP\n * Service, but until now the backend had NO way to CALL it — the worker-request\n * JWT key family (G-7), the apps-manager keypair provisioning, and the\n * worker-side verifier all shipped, yet the call-side that mints + sends the\n * token never existed, so workers were uncallable end-to-end.\n *\n * This file closes that gap:\n * - `WorkerRemoteClientBackendService` — a per-worker HTTP client (a thin\n * `RemoteClientBaseBackendService` subclass) that signs an\n * `APPLICATION_WORKER_REQUEST` JWT and reaches the worker at the URL injected\n * as `WILDO_WORKER_<NAME>_URL` at deploy time.\n * - `WorkerRemoteClientFactoryBackendService` — the DI-injectable factory app\n * code uses: `inject(WorkerRemoteClientFactory).client('myNodeWorker').post('/echo', body)`.\n *\n * The worker verifies the token against the trusted `APPLICATION_WORKER_REQUEST`\n * public key it fetches from apps-manager (`WildoWorkerBootstrapClientService` +\n * `createWorkerJwtVerifierMiddleware`), pinning `iss='wildo-application'` /\n * `aud='APPLICATION_WORKER'` / ES256 — exactly what `sign(payload,\n * APPLICATION_WORKER_REQUEST)` produces from a BARE payload.\n */\n\nimport 'reflect-metadata';\n\nimport { inject, injectable } from 'inversify';\nimport type { InternalAxiosRequestConfig } from 'axios';\n\nimport { BackendApiType, ErrorCustomMessageReference, ErrorType, WildoHeaderKeys } from '@wildo-ai/saas-models';\nimport { wildoWorkerUrlEnvKey } from '@wildo-ai/platform-core-shared';\n\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { JwtBackendService } from '~wildo-backend-lib/security/jwt/services/jwt.backend.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport {\n RemoteClientBaseBackendService,\n type IRemoteClientBaseBackendService,\n} from '~wildo-backend-lib/requests/service/remote-client-base.backend.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { JwtPrivateKeys } from '~wildo-backend-lib/security/authentications/models/jwt.backend.schemas';\n\n/**\n * A single per-worker HTTP client. Constructed by\n * {@link WorkerRemoteClientFactoryBackendService} (NOT DI — it needs the\n * worker's runtime name + base URL), so it is a plain class, not `@injectable`.\n *\n * Mirrors the platform-service client pattern (`AppsCrontabManagerBackendService`)\n * with two deliberate divergences documented on the overrides below: the auth\n * token is a worker-request JWT (not a platform-request JWT), and the readiness\n * gate is skipped (the worker's ready path differs from the platform convention).\n */\nexport class WorkerRemoteClientBackendService extends RemoteClientBaseBackendService {\n private isClientInitialized = false;\n\n constructor(\n logger: LoggerService,\n errorBuilder: ErrorBuilderBackendService,\n jwtBackendService: JwtBackendService,\n private readonly appConfigService: AppConfigurationService,\n /** The worker's `wildo.saas.config.ts` bucket key (e.g. `myNodeWorker`). */\n private readonly workerName: string,\n /** Base URL from `WILDO_WORKER_<NAME>_URL` (e.g. `http://{appSlug}-worker-{name}:{port}`). */\n private readonly workerBaseUrl: string,\n ) {\n // The worker name IS the remote service id — `AllApplicationTypes` admits a\n // bare `string`, so no cast is needed and logs/errors carry the worker name.\n super(logger, errorBuilder, jwtBackendService, workerName);\n /*\n * The base URL is set EAGERLY, and that is load-bearing rather than tidy.\n *\n * `RemoteClientBaseBackendService.post()` composes `${this.remoteServiceBaseUrl}${path}` at the\n * moment it is called — BEFORE `request()` reaches `waitForReady()`. So a base URL assigned\n * inside the lazy `ensureInitialized()` arrives strictly too late: the first dispatch built\n * `undefined/tasks/…` and failed `ERR_INVALID_URL`, reported to the caller as a NETWORK 503\n * naming no cause.\n *\n * Nothing about the URL needed deferring in the first place — the factory has it at\n * construction. What genuinely must stay lazy is the axios wiring, because it reads the JWT\n * signing key out of the app config, which may not be initialized when a client is first cached.\n *\n * This shipped broken and could not have been noticed: the factory had no caller anywhere, so\n * the very first real dispatch was the first execution of this line (#426).\n */\n this.remoteServiceBaseUrl = workerBaseUrl;\n this.logDebug = this.logger.debugByType('WorkerRemoteClientBackendService');\n this.logger.setDebugTypeLogging('WorkerRemoteClientBackendService', false);\n // The calling process is the app backend (the only origin that mints\n // worker-request tokens).\n this.localServiceId = BackendApiType.MAIN_BACKEND_API;\n }\n\n /**\n * Lazily wire the axios instance + interceptors on first use. Deferred (not\n * done in the constructor) so a client can be cached before the app config is\n * ready; the first request materializes it. Fails closed if the app config is\n * not initialized (the JWT signing key lives there).\n */\n private ensureInitialized(): void {\n if (this.isClientInitialized) {\n return;\n }\n if (!this.appConfigService.isInitialized()) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'Application configuration must be initialized before dispatching to a worker '\n + '(the APPLICATION_WORKER_REQUEST signing key is loaded from app config).',\n workerName: this.workerName,\n },\n });\n }\n\n // `remoteServiceBaseUrl` is already set in the constructor — see the note there for why it\n // cannot wait until here.\n this.initiateAxiosInstance({\n [WildoHeaderKeys.CONTENT_TYPE]: 'application/json',\n [WildoHeaderKeys.SERVICE_ID]: this.localServiceId,\n [WildoHeaderKeys.APPLICATION_ID]: this.appConfigService.applicationId,\n [WildoHeaderKeys.USER_AGENT]: 'wildo-worker-dispatch/1.0.0',\n });\n this.setupInterceptors();\n this.isClientInitialized = true;\n }\n\n /**\n * Mint the per-request `APPLICATION_WORKER_REQUEST` bearer.\n *\n * CRITICAL: pass a BARE payload (no `iss`/`aud`) so\n * `JwtPrivateKeySignOptions[APPLICATION_WORKER_REQUEST]` supplies\n * `issuer='wildo-application'` + `audience='APPLICATION_WORKER'` — the exact\n * values the worker's `createWorkerJwtVerifierMiddleware` pins. Unlike the\n * platform-request client, this MUST NOT override `issuer` to the local\n * service id (that would make the worker's verifier reject the token).\n */\n override async generateServiceToken(_config: InternalAxiosRequestConfig): Promise<string> {\n this.ensureInitialized();\n return this.jwtBackendService.sign(\n {\n applicationId: this.appConfigService.applicationId,\n workerName: this.workerName,\n },\n JwtPrivateKeys.APPLICATION_WORKER_REQUEST,\n );\n }\n\n /**\n * Override the base readiness gate to a no-op (after ensuring the axios\n * instance exists). The base polls `${baseUrl}/health/ready` — the\n * platform-service convention — but a worker serves its authored\n * `http.readyPath` (default `/readyz`), NOT `/health/ready`, and the backend\n * does not carry the worker's ready path. Left un-overridden, the base gate\n * would poll a 404 forever and hang the first dispatch. Worker dispatch\n * instead fails fast on a down worker via the base request retry/backoff.\n */\n protected override async waitForReady(): Promise<void> {\n this.ensureInitialized();\n }\n}\n\n/**\n * DI-injectable factory that hands app code a ready-to-use HTTP client per\n * declared worker, caching one client per worker name. Registered singleton so\n * the cache is process-wide.\n *\n * @example\n * const worker = container.get(SAAS_SERVICE_TYPES.WorkerRemoteClientFactoryService);\n * const res = await worker.client('myNodeWorker').post('/echo', { hello: 'world' });\n */\n@injectable()\nexport class WorkerRemoteClientFactoryBackendService {\n private readonly clients = new Map<string, WorkerRemoteClientBackendService>();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.JwtBackendService) private readonly jwtBackendService: JwtBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly appConfigService: AppConfigurationService,\n ) {}\n\n /**\n * Return a cached HTTP client for the named declared worker. `workerName` is\n * the `wildo.saas.config.ts` `workers` bucket key (e.g. `myNodeWorker`).\n *\n * The base URL is read from `WILDO_WORKER_<NAME>_URL`, injected into the\n * app-backend env at deploy time. A missing var fails CLOSED — the worker was\n * not declared, or the deploy did not inject its URL — rather than silently\n * dispatching to a bad address. No `localhost`/default fallback (per the MW4\n * env discipline).\n */\n client(workerName: string): IRemoteClientBaseBackendService {\n const cached = this.clients.get(workerName);\n if (cached) {\n return cached;\n }\n\n const envKey = wildoWorkerUrlEnvKey(workerName);\n const baseUrl = process.env[envKey];\n if (!baseUrl) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `No dispatch URL for worker '${workerName}': expected env '${envKey}'. `\n + 'Declare the worker in wildo.saas.config.ts `workers` and re-run deploy so the '\n + 'CLI injects WILDO_WORKER_<NAME>_URL into the app-backend env.',\n workerName,\n envKey,\n },\n });\n }\n\n const client = new WorkerRemoteClientBackendService(\n this.logger,\n this.errorBuilder,\n this.jwtBackendService,\n this.appConfigService,\n workerName,\n baseUrl,\n );\n this.clients.set(workerName, client);\n return client;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"manual-controllers.backend.definition.d.ts","sourceRoot":"","sources":["../../../../../src/base-classes/models/manual-controllers.backend.definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAmB5I,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4BAA4B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,gCAAgC,EAAE,CAkCxI"}
1
+ {"version":3,"file":"manual-controllers.backend.definition.d.ts","sourceRoot":"","sources":["../../../../../src/base-classes/models/manual-controllers.backend.definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAoB5I,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4BAA4B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,gCAAgC,EAAE,CAsCxI"}
@@ -10,6 +10,10 @@ export function getManualControllersBackend(container, options) {
10
10
  container.get(SAAS_SERVICE_TYPES.AuthenticationController),
11
11
  container.get(SAAS_SERVICE_TYPES.OAuthProviderController),
12
12
  container.get(SAAS_SERVICE_TYPES.AuthMethodManagementController),
13
+ // Connecting a third-party account. Unconditional: an application that declares no OAuth2
14
+ // provider simply has nothing to connect, and the routes answer PROVIDER_NOT_CONNECTABLE —
15
+ // which is a better answer than a route that does not exist, because it names why.
16
+ container.get(SAAS_SERVICE_TYPES.ProviderConnectionController),
13
17
  container.get(SAAS_SERVICE_TYPES.I18nController),
14
18
  container.get(SAAS_SERVICE_TYPES.FlowsActorsController),
15
19
  // === A2A (external actor exposure) ===
@@ -1 +1 @@
1
- {"version":3,"file":"manual-controllers.backend.definition.js","sourceRoot":"","sources":["../../../../../src/base-classes/models/manual-controllers.backend.definition.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAOpF;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAoB,EAAE,OAAkC;IAChG,uGAAuG;IACvG,MAAM,WAAW,GAAuC;QACpD,SAAS,CAAC,GAAG,CAA4C,kBAAkB,CAAC,2BAA2B,CAAC;QACxG,SAAS,CAAC,GAAG,CAAyC,kBAAkB,CAAC,wBAAwB,CAAC;QAClG,SAAS,CAAC,GAAG,CAAwC,kBAAkB,CAAC,uBAAuB,CAAC;QAChG,SAAS,CAAC,GAAG,CAA+C,kBAAkB,CAAC,8BAA8B,CAAC;QAC9G,SAAS,CAAC,GAAG,CAA+B,kBAAkB,CAAC,cAAc,CAAC;QAC9E,SAAS,CAAC,GAAG,CAAsC,kBAAkB,CAAC,qBAAqB,CAAC;QAC5F,wCAAwC;QACxC,SAAS,CAAC,GAAG,CAA8B,kBAAkB,CAAC,aAAa,CAAC;QAC5E,SAAS,CAAC,GAAG,CAA8B,kBAAkB,CAAC,aAAa,CAAC;QAC5E,SAAS,CAAC,GAAG,CAAiB,kBAAkB,CAAC,cAAc,CAAC;QAChE,SAAS,CAAC,GAAG,CAAmC,kBAAkB,CAAC,kBAAkB,CAAC;QACtF,SAAS,CAAC,GAAG,CAAgC,kBAAkB,CAAC,eAAe,CAAC;QAChF,sFAAsF;QACtF,SAAS,CAAC,GAAG,CAAsC,kBAAkB,CAAC,qBAAqB,CAAC;KAC/F,CAAC;IAEF,iEAAiE;IACjE,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CACZ,SAAS,CAAC,GAAG,CAA6B,kBAAkB,CAAC,mBAAmB,CAAC,CACpF,CAAC;IACN,CAAC;IAED,4FAA4F;IAC5F,IAAI,OAAO,EAAE,4BAA4B,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CACZ,SAAS,CAAC,GAAG,CAA+B,kBAAkB,CAAC,cAAc,CAAC,CACjF,CAAC;IACN,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC","sourcesContent":["import { Container } from 'inversify';\nimport { AbstractControllerBackendService } from \"~wildo-backend-lib/base-classes/services/controllers/abstract-controller.backend.service\";\nimport { ApplicationConfigControllerBackendService } from \"~wildo-backend-lib/config/custom/application-config-controller.backend.service\";\nimport { AuthenticationControllerBackendService } from \"~wildo-backend-lib/security/authentications/controllers/authentication-controller.backend.service\";\nimport { OAuthProviderControllerBackendService } from \"~wildo-backend-lib/security/authentications/controllers/oauth-provider-controller.backend.service\";\nimport { I18nControllerBackendService } from \"~wildo-backend-lib/i18n/controllers/i18n-controller.backend.service\";\nimport { FlowsActorsControllerBackendService } from \"~wildo-backend-lib/flows-actors/controllers/flows-actors.controller\";\n// === A2A (external actor exposure) ===\nimport { A2AControllerBackendService } from \"~wildo-backend-lib/flows-actors/a2a/controllers/a2a.controller\";\nimport { MCPControllerBackendService } from \"~wildo-backend-lib/mcp/controllers/mcp.controller\";\nimport { FileController } from \"~wildo-backend-lib/files/controllers/file.controller\";\nimport { FeaturesControllerBackendService } from \"~wildo-backend-lib/features/controllers/features.backend.controller\";\nimport { ChartControllerBackendService } from \"~wildo-backend-lib/charts/controllers/chart.backend.controller\";\nimport { AnalyticsBackendController } from \"~wildo-backend-lib/monitoring/analytics/controllers/analytics.backend.controller\";\nimport { WebhookAutoControllerBackendService } from \"~wildo-backend-lib/notifications/webhooks/controllers/webhook-auto-controller.backend.service\";\nimport { SCIMControllerBackendService } from \"~wildo-backend-lib/security/scim/controllers/scim.backend.controller\";\nimport { AuthMethodManagementControllerBackendService } from \"~wildo-backend-lib/security/authentications/controllers/auth-method-management-controller.backend.service\";\n\nimport { SAAS_SERVICE_TYPES } from \"~wildo-backend-lib/inject/models/service-types\";\n\nexport interface ManualControllersOptions {\n analyticsEnabled?: boolean;\n directoryProvisioningEnabled?: boolean;\n}\n\n/**\n * Get manual controllers from initialized container\n * Must be called after container is fully initialized\n */\nexport function getManualControllersBackend(container: Container, options?: ManualControllersOptions): AbstractControllerBackendService[] {\n // Note: HealthController is NOT included here - it's mounted at root level by HttpServerBackendService\n const controllers: AbstractControllerBackendService[] = [\n container.get<ApplicationConfigControllerBackendService>(SAAS_SERVICE_TYPES.ApplicationConfigController),\n container.get<AuthenticationControllerBackendService>(SAAS_SERVICE_TYPES.AuthenticationController),\n container.get<OAuthProviderControllerBackendService>(SAAS_SERVICE_TYPES.OAuthProviderController),\n container.get<AuthMethodManagementControllerBackendService>(SAAS_SERVICE_TYPES.AuthMethodManagementController),\n container.get<I18nControllerBackendService>(SAAS_SERVICE_TYPES.I18nController),\n container.get<FlowsActorsControllerBackendService>(SAAS_SERVICE_TYPES.FlowsActorsController),\n // === A2A (external actor exposure) ===\n container.get<A2AControllerBackendService>(SAAS_SERVICE_TYPES.A2AController),\n container.get<MCPControllerBackendService>(SAAS_SERVICE_TYPES.MCPController),\n container.get<FileController>(SAAS_SERVICE_TYPES.FileController),\n container.get<FeaturesControllerBackendService>(SAAS_SERVICE_TYPES.FeaturesController),\n container.get<ChartControllerBackendService>(SAAS_SERVICE_TYPES.ChartController),\n // Webhook auto-controller — auto-discovers providers with WEBHOOK_ORIGINATOR protocol\n container.get<WebhookAutoControllerBackendService>(SAAS_SERVICE_TYPES.WebhookAutoController),\n ];\n\n // Analytics controller — only included when analytics is enabled\n if (options?.analyticsEnabled) {\n controllers.push(\n container.get<AnalyticsBackendController>(SAAS_SERVICE_TYPES.AnalyticsController),\n );\n }\n\n // SCIM controller — only included when directory provisioning is enabled (Critical Note #9)\n if (options?.directoryProvisioningEnabled) {\n controllers.push(\n container.get<SCIMControllerBackendService>(SAAS_SERVICE_TYPES.SCIMController),\n );\n }\n\n return controllers;\n}\n"]}
1
+ {"version":3,"file":"manual-controllers.backend.definition.js","sourceRoot":"","sources":["../../../../../src/base-classes/models/manual-controllers.backend.definition.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAOpF;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAoB,EAAE,OAAkC;IAChG,uGAAuG;IACvG,MAAM,WAAW,GAAuC;QACpD,SAAS,CAAC,GAAG,CAA4C,kBAAkB,CAAC,2BAA2B,CAAC;QACxG,SAAS,CAAC,GAAG,CAAyC,kBAAkB,CAAC,wBAAwB,CAAC;QAClG,SAAS,CAAC,GAAG,CAAwC,kBAAkB,CAAC,uBAAuB,CAAC;QAChG,SAAS,CAAC,GAAG,CAA+C,kBAAkB,CAAC,8BAA8B,CAAC;QAC9G,0FAA0F;QAC1F,2FAA2F;QAC3F,mFAAmF;QACnF,SAAS,CAAC,GAAG,CAA6C,kBAAkB,CAAC,4BAA4B,CAAC;QAC1G,SAAS,CAAC,GAAG,CAA+B,kBAAkB,CAAC,cAAc,CAAC;QAC9E,SAAS,CAAC,GAAG,CAAsC,kBAAkB,CAAC,qBAAqB,CAAC;QAC5F,wCAAwC;QACxC,SAAS,CAAC,GAAG,CAA8B,kBAAkB,CAAC,aAAa,CAAC;QAC5E,SAAS,CAAC,GAAG,CAA8B,kBAAkB,CAAC,aAAa,CAAC;QAC5E,SAAS,CAAC,GAAG,CAAiB,kBAAkB,CAAC,cAAc,CAAC;QAChE,SAAS,CAAC,GAAG,CAAmC,kBAAkB,CAAC,kBAAkB,CAAC;QACtF,SAAS,CAAC,GAAG,CAAgC,kBAAkB,CAAC,eAAe,CAAC;QAChF,sFAAsF;QACtF,SAAS,CAAC,GAAG,CAAsC,kBAAkB,CAAC,qBAAqB,CAAC;KAC/F,CAAC;IAEF,iEAAiE;IACjE,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CACZ,SAAS,CAAC,GAAG,CAA6B,kBAAkB,CAAC,mBAAmB,CAAC,CACpF,CAAC;IACN,CAAC;IAED,4FAA4F;IAC5F,IAAI,OAAO,EAAE,4BAA4B,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CACZ,SAAS,CAAC,GAAG,CAA+B,kBAAkB,CAAC,cAAc,CAAC,CACjF,CAAC;IACN,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC","sourcesContent":["import { Container } from 'inversify';\nimport { AbstractControllerBackendService } from \"~wildo-backend-lib/base-classes/services/controllers/abstract-controller.backend.service\";\nimport { ApplicationConfigControllerBackendService } from \"~wildo-backend-lib/config/custom/application-config-controller.backend.service\";\nimport { AuthenticationControllerBackendService } from \"~wildo-backend-lib/security/authentications/controllers/authentication-controller.backend.service\";\nimport { OAuthProviderControllerBackendService } from \"~wildo-backend-lib/security/authentications/controllers/oauth-provider-controller.backend.service\";\nimport { I18nControllerBackendService } from \"~wildo-backend-lib/i18n/controllers/i18n-controller.backend.service\";\nimport { FlowsActorsControllerBackendService } from \"~wildo-backend-lib/flows-actors/controllers/flows-actors.controller\";\n// === A2A (external actor exposure) ===\nimport { A2AControllerBackendService } from \"~wildo-backend-lib/flows-actors/a2a/controllers/a2a.controller\";\nimport { MCPControllerBackendService } from \"~wildo-backend-lib/mcp/controllers/mcp.controller\";\nimport { FileController } from \"~wildo-backend-lib/files/controllers/file.controller\";\nimport { FeaturesControllerBackendService } from \"~wildo-backend-lib/features/controllers/features.backend.controller\";\nimport { ChartControllerBackendService } from \"~wildo-backend-lib/charts/controllers/chart.backend.controller\";\nimport { AnalyticsBackendController } from \"~wildo-backend-lib/monitoring/analytics/controllers/analytics.backend.controller\";\nimport { WebhookAutoControllerBackendService } from \"~wildo-backend-lib/notifications/webhooks/controllers/webhook-auto-controller.backend.service\";\nimport { SCIMControllerBackendService } from \"~wildo-backend-lib/security/scim/controllers/scim.backend.controller\";\nimport { AuthMethodManagementControllerBackendService } from \"~wildo-backend-lib/security/authentications/controllers/auth-method-management-controller.backend.service\";\nimport { ProviderConnectionControllerBackendService } from \"~wildo-backend-lib/security/connected-accounts/controllers/provider-connection.controller.backend.service\";\n\nimport { SAAS_SERVICE_TYPES } from \"~wildo-backend-lib/inject/models/service-types\";\n\nexport interface ManualControllersOptions {\n analyticsEnabled?: boolean;\n directoryProvisioningEnabled?: boolean;\n}\n\n/**\n * Get manual controllers from initialized container\n * Must be called after container is fully initialized\n */\nexport function getManualControllersBackend(container: Container, options?: ManualControllersOptions): AbstractControllerBackendService[] {\n // Note: HealthController is NOT included here - it's mounted at root level by HttpServerBackendService\n const controllers: AbstractControllerBackendService[] = [\n container.get<ApplicationConfigControllerBackendService>(SAAS_SERVICE_TYPES.ApplicationConfigController),\n container.get<AuthenticationControllerBackendService>(SAAS_SERVICE_TYPES.AuthenticationController),\n container.get<OAuthProviderControllerBackendService>(SAAS_SERVICE_TYPES.OAuthProviderController),\n container.get<AuthMethodManagementControllerBackendService>(SAAS_SERVICE_TYPES.AuthMethodManagementController),\n // Connecting a third-party account. Unconditional: an application that declares no OAuth2\n // provider simply has nothing to connect, and the routes answer PROVIDER_NOT_CONNECTABLE —\n // which is a better answer than a route that does not exist, because it names why.\n container.get<ProviderConnectionControllerBackendService>(SAAS_SERVICE_TYPES.ProviderConnectionController),\n container.get<I18nControllerBackendService>(SAAS_SERVICE_TYPES.I18nController),\n container.get<FlowsActorsControllerBackendService>(SAAS_SERVICE_TYPES.FlowsActorsController),\n // === A2A (external actor exposure) ===\n container.get<A2AControllerBackendService>(SAAS_SERVICE_TYPES.A2AController),\n container.get<MCPControllerBackendService>(SAAS_SERVICE_TYPES.MCPController),\n container.get<FileController>(SAAS_SERVICE_TYPES.FileController),\n container.get<FeaturesControllerBackendService>(SAAS_SERVICE_TYPES.FeaturesController),\n container.get<ChartControllerBackendService>(SAAS_SERVICE_TYPES.ChartController),\n // Webhook auto-controller — auto-discovers providers with WEBHOOK_ORIGINATOR protocol\n container.get<WebhookAutoControllerBackendService>(SAAS_SERVICE_TYPES.WebhookAutoController),\n ];\n\n // Analytics controller — only included when analytics is enabled\n if (options?.analyticsEnabled) {\n controllers.push(\n container.get<AnalyticsBackendController>(SAAS_SERVICE_TYPES.AnalyticsController),\n );\n }\n\n // SCIM controller — only included when directory provisioning is enabled (Critical Note #9)\n if (options?.directoryProvisioningEnabled) {\n controllers.push(\n container.get<SCIMControllerBackendService>(SAAS_SERVICE_TYPES.SCIMController),\n );\n }\n\n return controllers;\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Deferred child-lifecycle teardown — the consumer behind `ChildLifecycleMode.LAZY` (#427).
3
+ *
4
+ * ## What this is, and what it deliberately is NOT
5
+ *
6
+ * It is not a delete implementation. `ServiceResourceBackendService.queueChildDeletion` publishes
7
+ * one job per relationship edge whose parent was just deleted, and this batch does exactly one
8
+ * thing with it: resolve the PARENT's service and call
9
+ * `runDeferredChildLifecycleTeardown`, which re-enters `deleteChildrenImmediate` — the same method
10
+ * `ChildLifecycleMode.IMMEDIATE` calls.
11
+ *
12
+ * That indirection is the whole design. Everything the immediate cascade does comes along without
13
+ * being restated: child discovery (against the rows that exist NOW, which is what LAZY means), the
14
+ * grandchild recursion, the file orchestration, the repository delete, and — the obligation this
15
+ * issue names explicitly — `runRagChunkRemovalForDeletedRows`. A second implementation here could
16
+ * drift from the first; there is no second implementation.
17
+ *
18
+ * ## Idempotency
19
+ *
20
+ * The queue is at-least-once, so this job can be redelivered. Re-running is safe because the
21
+ * teardown re-DISCOVERS its children each time: a redelivery after a successful run finds no
22
+ * children on the edge and returns having done nothing. It cannot delete a row twice, and it cannot
23
+ * delete a row created under a new parent, because discovery is scoped by the parent ids the job
24
+ * carries and those parents are gone.
25
+ *
26
+ * ## Failure
27
+ *
28
+ * A throw propagates to the custom-batch executor, which retries with backoff and finally
29
+ * dead-letters. That is the correct end state for an owed teardown: parked and visible, never
30
+ * silently dropped. The one thing this must not do is swallow — children that were not torn down
31
+ * with no record is the failure the fail-closed refusal used to prevent.
32
+ */
33
+ import { createCustomBatchExecutionService } from '../../../base-classes/services/batches/batches-cronjobs-custom-execution.service';
34
+ export declare function createChildLifecycleTeardownBatch(): ReturnType<typeof createCustomBatchExecutionService>;
35
+ //# sourceMappingURL=child-lifecycle-teardown.batch.backend.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-lifecycle-teardown.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AA0B/I,wBAAgB,iCAAiC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CA0DxG"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Deferred child-lifecycle teardown — the consumer behind `ChildLifecycleMode.LAZY` (#427).
3
+ *
4
+ * ## What this is, and what it deliberately is NOT
5
+ *
6
+ * It is not a delete implementation. `ServiceResourceBackendService.queueChildDeletion` publishes
7
+ * one job per relationship edge whose parent was just deleted, and this batch does exactly one
8
+ * thing with it: resolve the PARENT's service and call
9
+ * `runDeferredChildLifecycleTeardown`, which re-enters `deleteChildrenImmediate` — the same method
10
+ * `ChildLifecycleMode.IMMEDIATE` calls.
11
+ *
12
+ * That indirection is the whole design. Everything the immediate cascade does comes along without
13
+ * being restated: child discovery (against the rows that exist NOW, which is what LAZY means), the
14
+ * grandchild recursion, the file orchestration, the repository delete, and — the obligation this
15
+ * issue names explicitly — `runRagChunkRemovalForDeletedRows`. A second implementation here could
16
+ * drift from the first; there is no second implementation.
17
+ *
18
+ * ## Idempotency
19
+ *
20
+ * The queue is at-least-once, so this job can be redelivered. Re-running is safe because the
21
+ * teardown re-DISCOVERS its children each time: a redelivery after a successful run finds no
22
+ * children on the edge and returns having done nothing. It cannot delete a row twice, and it cannot
23
+ * delete a row created under a new parent, because discovery is scoped by the parent ids the job
24
+ * carries and those parents are gone.
25
+ *
26
+ * ## Failure
27
+ *
28
+ * A throw propagates to the custom-batch executor, which retries with backoff and finally
29
+ * dead-letters. That is the correct end state for an owed teardown: parked and visible, never
30
+ * silently dropped. The one thing this must not do is swallow — children that were not torn down
31
+ * with no record is the failure the fail-closed refusal used to prevent.
32
+ */
33
+ import { z } from 'zod';
34
+ import { createCustomBatchExecutionService } from '../../../base-classes/services/batches/batches-cronjobs-custom-execution.service.js';
35
+ import { ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST } from '../../../base-classes/services/batches/engine-custom-batch-manifests.js';
36
+ import { projectCaughtErrorLogFields } from '../../../errors/utils/error-log-level-classification.backend.utils.js';
37
+ /**
38
+ * The job payload. Two resource types and the parent ids — no relationship object, no child ids.
39
+ *
40
+ * Carrying the edge by NAME rather than by value is what lets the consumer re-derive it from the
41
+ * parent's CURRENT configuration and refuse if that configuration changed. Carrying child ids would
42
+ * additionally have frozen discovery at enqueue time, which is precisely the thing LAZY defers.
43
+ */
44
+ const ChildLifecycleTeardownInputSchema = z.object({
45
+ parentResourceType: z.string().min(1),
46
+ childResourceType: z.string().min(1),
47
+ parentIds: z.array(z.string().min(1)).min(1),
48
+ });
49
+ const ChildLifecycleTeardownOutputSchema = z.object({
50
+ parentResourceType: z.string(),
51
+ childResourceType: z.string(),
52
+ parentIdsCount: z.number().int().min(0),
53
+ /** Whether the edge reported that it processed the teardown — the cascade's own `@returns`. */
54
+ processed: z.boolean(),
55
+ durationMs: z.number().int().min(0),
56
+ });
57
+ export function createChildLifecycleTeardownBatch() {
58
+ return createCustomBatchExecutionService({
59
+ input: ChildLifecycleTeardownInputSchema,
60
+ output: ChildLifecycleTeardownOutputSchema,
61
+ batchCronjob_Context: {
62
+ kind: ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST.kind,
63
+ primaryScope: ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST.primaryScope,
64
+ operationIdentifier: ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST.operationIdentifier,
65
+ },
66
+ doHandle: async (input, { logger, servicesRegistry, executionContext }) => {
67
+ const startTime = Date.now();
68
+ const { parentResourceType, childResourceType, parentIds } = input;
69
+ const parentService = servicesRegistry.getService(parentResourceType);
70
+ if (!parentService) {
71
+ // Not swallowed: an unresolvable parent means the job cannot be honoured at all, and the
72
+ // teardown is still owed. Throwing parks it in the dead-letter queue where it is visible,
73
+ // rather than reporting success for work that did not happen.
74
+ throw new Error(`[child-lifecycle-teardown] No registered service for parent resource '${parentResourceType}' — `
75
+ + `cannot run the deferred teardown of '${childResourceType}' for ${parentIds.length} parent(s).`);
76
+ }
77
+ try {
78
+ const processed = await parentService.runDeferredChildLifecycleTeardown({
79
+ childResourceType,
80
+ parentIds,
81
+ executionContext,
82
+ });
83
+ logger.info('[child-lifecycle-teardown] Deferred child teardown completed', {
84
+ parentResourceType,
85
+ childResourceType,
86
+ parentIdsCount: parentIds.length,
87
+ processed,
88
+ });
89
+ return {
90
+ parentResourceType,
91
+ childResourceType,
92
+ parentIdsCount: parentIds.length,
93
+ processed,
94
+ durationMs: Date.now() - startTime,
95
+ };
96
+ }
97
+ catch (error) {
98
+ logger.error('[child-lifecycle-teardown] Deferred child teardown FAILED', {
99
+ parentResourceType,
100
+ childResourceType,
101
+ parentIdsCount: parentIds.length,
102
+ ...projectCaughtErrorLogFields(error),
103
+ });
104
+ // Rethrown so the executor retries and finally dead-letters. A teardown that is owed and
105
+ // failed must stay visible; reporting a partial success would lose it.
106
+ throw error;
107
+ }
108
+ },
109
+ });
110
+ }
111
+ //# sourceMappingURL=child-lifecycle-teardown.batch.backend.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-lifecycle-teardown.batch.backend.service.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Deferred child-lifecycle teardown — the consumer behind `ChildLifecycleMode.LAZY` (#427).\n *\n * ## What this is, and what it deliberately is NOT\n *\n * It is not a delete implementation. `ServiceResourceBackendService.queueChildDeletion` publishes\n * one job per relationship edge whose parent was just deleted, and this batch does exactly one\n * thing with it: resolve the PARENT's service and call\n * `runDeferredChildLifecycleTeardown`, which re-enters `deleteChildrenImmediate` — the same method\n * `ChildLifecycleMode.IMMEDIATE` calls.\n *\n * That indirection is the whole design. Everything the immediate cascade does comes along without\n * being restated: child discovery (against the rows that exist NOW, which is what LAZY means), the\n * grandchild recursion, the file orchestration, the repository delete, and — the obligation this\n * issue names explicitly — `runRagChunkRemovalForDeletedRows`. A second implementation here could\n * drift from the first; there is no second implementation.\n *\n * ## Idempotency\n *\n * The queue is at-least-once, so this job can be redelivered. Re-running is safe because the\n * teardown re-DISCOVERS its children each time: a redelivery after a successful run finds no\n * children on the edge and returns having done nothing. It cannot delete a row twice, and it cannot\n * delete a row created under a new parent, because discovery is scoped by the parent ids the job\n * carries and those parents are gone.\n *\n * ## Failure\n *\n * A throw propagates to the custom-batch executor, which retries with backoff and finally\n * dead-letters. That is the correct end state for an owed teardown: parked and visible, never\n * silently dropped. The one thing this must not do is swallow — children that were not torn down\n * with no record is the failure the fail-closed refusal used to prevent.\n */\n\nimport { z } from 'zod';\n\nimport { createCustomBatchExecutionService } from '~wildo-backend-lib/base-classes/services/batches/batches-cronjobs-custom-execution.service';\nimport { ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST } from '~wildo-backend-lib/base-classes/services/batches/engine-custom-batch-manifests';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\n\n/**\n * The job payload. Two resource types and the parent ids — no relationship object, no child ids.\n *\n * Carrying the edge by NAME rather than by value is what lets the consumer re-derive it from the\n * parent's CURRENT configuration and refuse if that configuration changed. Carrying child ids would\n * additionally have frozen discovery at enqueue time, which is precisely the thing LAZY defers.\n */\nconst ChildLifecycleTeardownInputSchema = z.object({\n parentResourceType: z.string().min(1),\n childResourceType: z.string().min(1),\n parentIds: z.array(z.string().min(1)).min(1),\n});\n\nconst ChildLifecycleTeardownOutputSchema = z.object({\n parentResourceType: z.string(),\n childResourceType: z.string(),\n parentIdsCount: z.number().int().min(0),\n /** Whether the edge reported that it processed the teardown — the cascade's own `@returns`. */\n processed: z.boolean(),\n durationMs: z.number().int().min(0),\n});\n\nexport function createChildLifecycleTeardownBatch(): ReturnType<typeof createCustomBatchExecutionService> {\n return createCustomBatchExecutionService({\n input: ChildLifecycleTeardownInputSchema,\n output: ChildLifecycleTeardownOutputSchema,\n batchCronjob_Context: {\n kind: ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST.kind,\n primaryScope: ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST.primaryScope,\n operationIdentifier: ENGINE_CHILD_LIFECYCLE_TEARDOWN_BATCH_MANIFEST.operationIdentifier,\n },\n doHandle: async (input, { logger, servicesRegistry, executionContext }) => {\n const startTime = Date.now();\n const { parentResourceType, childResourceType, parentIds } = input;\n\n const parentService = servicesRegistry.getService(parentResourceType as never);\n if (!parentService) {\n // Not swallowed: an unresolvable parent means the job cannot be honoured at all, and the\n // teardown is still owed. Throwing parks it in the dead-letter queue where it is visible,\n // rather than reporting success for work that did not happen.\n throw new Error(\n `[child-lifecycle-teardown] No registered service for parent resource '${parentResourceType}' — `\n + `cannot run the deferred teardown of '${childResourceType}' for ${parentIds.length} parent(s).`,\n );\n }\n\n try {\n const processed = await parentService.runDeferredChildLifecycleTeardown({\n childResourceType,\n parentIds,\n executionContext,\n });\n\n logger.info('[child-lifecycle-teardown] Deferred child teardown completed', {\n parentResourceType,\n childResourceType,\n parentIdsCount: parentIds.length,\n processed,\n });\n\n return {\n parentResourceType,\n childResourceType,\n parentIdsCount: parentIds.length,\n processed,\n durationMs: Date.now() - startTime,\n };\n } catch (error) {\n logger.error('[child-lifecycle-teardown] Deferred child teardown FAILED', {\n parentResourceType,\n childResourceType,\n parentIdsCount: parentIds.length,\n ...projectCaughtErrorLogFields(error),\n });\n // Rethrown so the executor retries and finally dead-letters. A teardown that is owed and\n // failed must stay visible; reporting a partial success would lose it.\n throw error;\n }\n },\n });\n}\n"]}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Credential Expiry Sweep — relabels machine credentials and platform access grants whose window
3
+ * has elapsed.
4
+ *
5
+ * ## What this batch is for, and what it is NOT
6
+ *
7
+ * It is NOT a control, and reading it as one is the mistake to avoid. Access is already refused
8
+ * correctly without it: `isCredentialExpired` gates every machine front at auth time, and a grant's
9
+ * admission predicate compares `expiresAt` against now. An elapsed credential stops working whether
10
+ * or not this batch has ever run.
11
+ *
12
+ * What it fixes is the RECORD. Until 2026-09-08 nothing anywhere wrote `EXPIRED` on any of these
13
+ * three populations — no producer, no store TTL, no sweep — so a listing of API keys, OAuth clients
14
+ * or access grants showed elapsed ones as ACTIVE forever, and an operator reading it could not tell
15
+ * which credentials still worked (#413). Two places in the tree said so independently:
16
+ * `credential-rotation-grace.backend.utils.ts` in its own docstring, and a comment beside the OIDC
17
+ * authorization-code guard.
18
+ *
19
+ * **`expiresAt` remains the control, and the label must never become one.** If a guard ever starts
20
+ * reading `status` instead, a sweep that lags — and it always lags, see below — turns a stale
21
+ * display into an authorization hole. The pin for that lives beside the auth-time guard, not here.
22
+ *
23
+ * ## Why a sweep rather than a store-level TTL
24
+ *
25
+ * A Mongo TTL index DELETES a row; it cannot transition a status, and PostgreSQL has no native TTL
26
+ * at all. Deletion is the wrong outcome for a record a customer inspects — the history of an
27
+ * operator's access to their tenant is exactly the thing worth keeping — so a TTL is only the right
28
+ * mechanism where disappearance is the intent, which this is not.
29
+ *
30
+ * ## The lag is inherent, and is the accepted cost of the option chosen
31
+ *
32
+ * Between the instant a credential elapses and the next run, the row still reads ACTIVE. Daily at
33
+ * 02:30. Hourly was rejected: unlike the suspension sweep beside it — where a caller expresses DAYS
34
+ * and a daily run overshoots a one-day suspension by 100% — nothing here waits on the label, because
35
+ * the access already stopped. The extra 23 passes would buy a shorter display lag and nothing else.
36
+ *
37
+ * ## Every transition goes through the resource's own verb
38
+ *
39
+ * Never a direct `status` write. Each `expire` verb carries an ACTIVE-only precondition, and that
40
+ * guard is the reason the verbs exist: an INACTIVE api-key was retired by an administrator and a
41
+ * DENIED grant was refused by a tenant, so relabelling either EXPIRED would erase who ended it. A
42
+ * direct write would be a second authority over the field and would skip the check — the same
43
+ * reasoning the suspension sweep and the invitation sweep both apply.
44
+ *
45
+ * assurance-control: WILDO.IDENTITY.CREDENTIAL_LIFECYCLE — a credential whose validity window has
46
+ * elapsed is recorded as expired, so an access review reads the same state the runtime enforces.
47
+ */
48
+ import { createCustomBatchExecutionService } from '../../../base-classes/services/batches/batches-cronjobs-custom-execution.service';
49
+ export declare function createCredentialExpirySweepBatch(): ReturnType<typeof createCustomBatchExecutionService>;
50
+ //# sourceMappingURL=credential-expiry-sweep.batch.backend.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-expiry-sweep.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAiBH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AAsE/I,wBAAgB,gCAAgC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAuHvG"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Credential Expiry Sweep — relabels machine credentials and platform access grants whose window
3
+ * has elapsed.
4
+ *
5
+ * ## What this batch is for, and what it is NOT
6
+ *
7
+ * It is NOT a control, and reading it as one is the mistake to avoid. Access is already refused
8
+ * correctly without it: `isCredentialExpired` gates every machine front at auth time, and a grant's
9
+ * admission predicate compares `expiresAt` against now. An elapsed credential stops working whether
10
+ * or not this batch has ever run.
11
+ *
12
+ * What it fixes is the RECORD. Until 2026-09-08 nothing anywhere wrote `EXPIRED` on any of these
13
+ * three populations — no producer, no store TTL, no sweep — so a listing of API keys, OAuth clients
14
+ * or access grants showed elapsed ones as ACTIVE forever, and an operator reading it could not tell
15
+ * which credentials still worked (#413). Two places in the tree said so independently:
16
+ * `credential-rotation-grace.backend.utils.ts` in its own docstring, and a comment beside the OIDC
17
+ * authorization-code guard.
18
+ *
19
+ * **`expiresAt` remains the control, and the label must never become one.** If a guard ever starts
20
+ * reading `status` instead, a sweep that lags — and it always lags, see below — turns a stale
21
+ * display into an authorization hole. The pin for that lives beside the auth-time guard, not here.
22
+ *
23
+ * ## Why a sweep rather than a store-level TTL
24
+ *
25
+ * A Mongo TTL index DELETES a row; it cannot transition a status, and PostgreSQL has no native TTL
26
+ * at all. Deletion is the wrong outcome for a record a customer inspects — the history of an
27
+ * operator's access to their tenant is exactly the thing worth keeping — so a TTL is only the right
28
+ * mechanism where disappearance is the intent, which this is not.
29
+ *
30
+ * ## The lag is inherent, and is the accepted cost of the option chosen
31
+ *
32
+ * Between the instant a credential elapses and the next run, the row still reads ACTIVE. Daily at
33
+ * 02:30. Hourly was rejected: unlike the suspension sweep beside it — where a caller expresses DAYS
34
+ * and a daily run overshoots a one-day suspension by 100% — nothing here waits on the label, because
35
+ * the access already stopped. The extra 23 passes would buy a shorter display lag and nothing else.
36
+ *
37
+ * ## Every transition goes through the resource's own verb
38
+ *
39
+ * Never a direct `status` write. Each `expire` verb carries an ACTIVE-only precondition, and that
40
+ * guard is the reason the verbs exist: an INACTIVE api-key was retired by an administrator and a
41
+ * DENIED grant was refused by a tenant, so relabelling either EXPIRED would erase who ended it. A
42
+ * direct write would be a second authority over the field and would skip the check — the same
43
+ * reasoning the suspension sweep and the invitation sweep both apply.
44
+ *
45
+ * assurance-control: WILDO.IDENTITY.CREDENTIAL_LIFECYCLE — a credential whose validity window has
46
+ * elapsed is recorded as expired, so an access review reads the same state the runtime enforces.
47
+ */
48
+ import { z } from 'zod';
49
+ import { ApiKeyStatus, AppApiKeys_Operations, AppOAuthClients_Operations, CORE_APP_ROLES, CoreResourceOperation, CoreResourceType, OAuthClientStatus, OrgApiKeys_Operations, OrgOAuthClients_Operations, PlatformAccessGrantStatus, PlatformAccessGrants_Operations, ResourcePrimaryScope, } from '@wildo-ai/saas-models';
50
+ import { createCustomBatchExecutionService } from '../../../base-classes/services/batches/batches-cronjobs-custom-execution.service.js';
51
+ import { ENGINE_CREDENTIAL_EXPIRY_SWEEP_BATCH_MANIFEST } from '../../../base-classes/services/batches/engine-custom-batch-manifests.js';
52
+ import { describeCaughtError } from '../../../errors/utils/error-log-level-classification.backend.utils.js';
53
+ /** Backstop against an unbounded loop if expiries silently fail to shrink the match set. */
54
+ const MAX_ITERATIONS = 1000;
55
+ const CredentialExpirySweepInputSchema = z.object({
56
+ /** Override: page size for the scan loops. Default: 100 */
57
+ batchSize: z.number().int().min(1).optional(),
58
+ });
59
+ const CredentialExpirySweepOutputSchema = z.object({
60
+ credentialsExpired: z.number().int().min(0),
61
+ grantsExpired: z.number().int().min(0),
62
+ errors: z.number().int().min(0),
63
+ durationMs: z.number().int().min(0),
64
+ });
65
+ const CREDENTIAL_EXPIRY_SWEEP_TARGETS = Object.freeze([
66
+ {
67
+ resourceType: CoreResourceType.APPLICATION_API_KEYS,
68
+ activeStatus: ApiKeyStatus.ACTIVE,
69
+ expireOperation: AppApiKeys_Operations.EXPIRE,
70
+ counter: 'credentialsExpired',
71
+ },
72
+ {
73
+ resourceType: CoreResourceType.ORG_API_KEYS,
74
+ activeStatus: ApiKeyStatus.ACTIVE,
75
+ expireOperation: OrgApiKeys_Operations.EXPIRE,
76
+ counter: 'credentialsExpired',
77
+ },
78
+ {
79
+ resourceType: CoreResourceType.OAUTH_CLIENTS_APPLICATION,
80
+ activeStatus: OAuthClientStatus.ACTIVE,
81
+ expireOperation: AppOAuthClients_Operations.EXPIRE,
82
+ counter: 'credentialsExpired',
83
+ },
84
+ {
85
+ resourceType: CoreResourceType.OAUTH_CLIENTS_ORGANIZATION,
86
+ activeStatus: OAuthClientStatus.ACTIVE,
87
+ expireOperation: OrgOAuthClients_Operations.EXPIRE,
88
+ counter: 'credentialsExpired',
89
+ },
90
+ {
91
+ resourceType: CoreResourceType.PLATFORM_ACCESS_GRANTS,
92
+ activeStatus: PlatformAccessGrantStatus.ACTIVE,
93
+ expireOperation: PlatformAccessGrants_Operations.EXPIRE,
94
+ counter: 'grantsExpired',
95
+ },
96
+ ]);
97
+ export function createCredentialExpirySweepBatch() {
98
+ return createCustomBatchExecutionService({
99
+ input: CredentialExpirySweepInputSchema,
100
+ output: CredentialExpirySweepOutputSchema,
101
+ batchCronjob_Context: {
102
+ kind: ENGINE_CREDENTIAL_EXPIRY_SWEEP_BATCH_MANIFEST.kind,
103
+ resourceIdentifier: ENGINE_CREDENTIAL_EXPIRY_SWEEP_BATCH_MANIFEST.resourceIdentifier,
104
+ operationIdentifier: ENGINE_CREDENTIAL_EXPIRY_SWEEP_BATCH_MANIFEST.operationIdentifier,
105
+ cronJobExpression: ENGINE_CREDENTIAL_EXPIRY_SWEEP_BATCH_MANIFEST.cronExpression,
106
+ },
107
+ doHandle: async (input, { logger, servicesRegistry, resourcesRegistry, executionContextCreator }) => {
108
+ const startTime = Date.now();
109
+ const batchSize = input.batchSize ?? 100;
110
+ // Resolved ONCE for the whole run, like the suspension sweep: re-reading the clock per page
111
+ // would let a credential that elapses mid-run be picked up by a later page of the same sweep,
112
+ // making the run's own counters unreproducible for no benefit. Tomorrow's pass catches it.
113
+ const dueBefore = new Date();
114
+ const superAdminRoles = [{
115
+ roles: [CORE_APP_ROLES.APP_ADMIN_SUPER_ADMIN],
116
+ relatedPrimaryScope: ResourcePrimaryScope.APPLICATION,
117
+ }];
118
+ const mkEc = async (resourceType, operation) => executionContextCreator.createForInternalOperation({
119
+ operation: resourcesRegistry.getServiceOperationPathDefault(resourceType, operation),
120
+ contextResourcesFieldIdentifier: new Map(),
121
+ initiatorIds: null,
122
+ initiatorRoles: superAdminRoles,
123
+ });
124
+ const counters = { credentialsExpired: 0, grantsExpired: 0 };
125
+ let errors = 0;
126
+ for (const target of CREDENTIAL_EXPIRY_SWEEP_TARGETS) {
127
+ // Every listed row is relabelled OUT of the matched status, so re-querying page 1 walks the
128
+ // shrinking match set down to zero — the same loop shape as the sibling sweeps. A row that
129
+ // errors stays in the set, which is what makes MAX_ITERATIONS a real backstop.
130
+ let iteration = 0;
131
+ let hasMore = true;
132
+ let consecutiveFailures = 0;
133
+ while (hasMore && iteration < MAX_ITERATIONS) {
134
+ iteration++;
135
+ const listEc = await mkEc(target.resourceType, CoreResourceOperation.LIST);
136
+ const listResult = await servicesRegistry.list(target.resourceType, listEc, {
137
+ status: target.activeStatus,
138
+ // `$ne: null` matters: a credential with NO expiry never expires, and on the api-key
139
+ // resources that is the common case. Without it every perpetual key would match.
140
+ expiresAt: { $ne: null, $lt: dueBefore },
141
+ }, { page: 1, limit: batchSize });
142
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
+ const rows = Array.isArray(listResult) ? listResult : listResult.data;
144
+ if (rows.length === 0) {
145
+ hasMore = false;
146
+ break;
147
+ }
148
+ let expiredThisPage = 0;
149
+ for (const row of rows) {
150
+ try {
151
+ const expireEc = await mkEc(target.resourceType, target.expireOperation);
152
+ await servicesRegistry.executeCustomOperation(target.resourceType, target.expireOperation, expireEc, row._id, {});
153
+ counters[target.counter]++;
154
+ expiredThisPage++;
155
+ }
156
+ catch (error) {
157
+ errors++;
158
+ logger.warn('Credential expiry sweep: failed to relabel an elapsed credential', {
159
+ resourceType: String(target.resourceType),
160
+ rowId: row?._id,
161
+ operation: String(target.expireOperation),
162
+ error: describeCaughtError(error),
163
+ });
164
+ }
165
+ }
166
+ // A full page that relabelled NOTHING cannot shrink, so page 1 would return the same rows
167
+ // forever. Stop this target rather than burn the iteration budget re-failing the identical
168
+ // set — the errors are logged and tomorrow's pass retries.
169
+ if (expiredThisPage === 0) {
170
+ consecutiveFailures++;
171
+ if (consecutiveFailures >= 2) {
172
+ logger.error('Credential expiry sweep: a full page failed twice, abandoning this target', {
173
+ resourceType: String(target.resourceType),
174
+ pendingRows: rows.length,
175
+ });
176
+ hasMore = false;
177
+ }
178
+ }
179
+ else {
180
+ consecutiveFailures = 0;
181
+ }
182
+ }
183
+ if (iteration >= MAX_ITERATIONS) {
184
+ logger.error('Credential expiry sweep: iteration cap reached, some rows still read as active past their expiry', {
185
+ resourceType: String(target.resourceType),
186
+ maxIterations: MAX_ITERATIONS,
187
+ });
188
+ }
189
+ }
190
+ return {
191
+ credentialsExpired: counters.credentialsExpired,
192
+ grantsExpired: counters.grantsExpired,
193
+ errors,
194
+ durationMs: Date.now() - startTime,
195
+ };
196
+ },
197
+ });
198
+ }
199
+ //# sourceMappingURL=credential-expiry-sweep.batch.backend.service.js.map