@wildo-ai/saas-backend-lib 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/__tests__/fixture-deep-partial.d.ts.map +1 -1
- package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
- package/dist/esm/__tests__/setup.d.ts.map +1 -1
- package/dist/esm/__tests__/test-container.d.ts.map +1 -1
- package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +210 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +220 -25
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +191 -26
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +106 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +266 -20
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +34 -3
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +571 -45
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
- package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +475 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
- package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +70 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +98 -2
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +21 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +109 -2
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +310 -29
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
- package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +350 -10
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +562 -10
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +52 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/index.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +145 -49
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +71 -76
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +37 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +69 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
- package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
- package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
- package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +306 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +379 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +235 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +181 -100
- package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +413 -7
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +684 -45
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +84 -5
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
- package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
- package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +21 -13
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +260 -36
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
- package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +202 -17
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +175 -13
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
- package/dist/esm/files/services/files.backend.service.d.ts +68 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +177 -5
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +52 -11
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
- package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
- package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +179 -8
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +436 -34
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +132 -6
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +467 -49
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +50 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +270 -20
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +371 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +17 -4
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
- package/dist/esm/index.d.ts +11 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +31 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts +10 -0
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +126 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +20 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +22 -3
- package/dist/esm/inject/models/service-types.js.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.js +70 -3
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
- package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +24 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +313 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +389 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +102 -5
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +222 -70
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
- package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js +1 -4
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js +1 -4
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts +3 -3
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js +26 -4
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
- package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts +9 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +81 -9
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/models/index.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
- package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
- package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +83 -5
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +121 -6
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
- package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +191 -1
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +287 -89
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
- package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +113 -4
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
- package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +30 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +197 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +384 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +260 -27
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +70 -4
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +339 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
- package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +37 -124
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +133 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +137 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +134 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +152 -5
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +146 -8
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +328 -29
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +299 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +953 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +99 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +210 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +423 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +282 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +125 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +123 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +214 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +430 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +98 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
- package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
- package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
- package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +11 -9
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
|
@@ -10,6 +10,8 @@ import { AppConfigurationService } from '../../config/services/app-configuration
|
|
|
10
10
|
import { ErrorBuilderBackendService } from '../../errors/services/error-builder.backend.service';
|
|
11
11
|
import { JobPayload, JobResult } from '@wildo-ai/saas-models';
|
|
12
12
|
import type { Channel, ConsumeMessage } from 'amqplib';
|
|
13
|
+
import type { MessageHandler, QueueAdapter } from '../../queue/adapters/queue-adapter.backend.interface';
|
|
14
|
+
import type { PublishOptions, QueueAssertOptions } from '../../queue/adapters/queue-adapter.backend.options';
|
|
13
15
|
/**
|
|
14
16
|
* RabbitMQ configuration for connection.
|
|
15
17
|
*/
|
|
@@ -24,32 +26,15 @@ export interface RabbitMQConfig {
|
|
|
24
26
|
channelMax?: number;
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
deadLetterRoutingKey?: string;
|
|
35
|
-
messageTtl?: number;
|
|
36
|
-
maxLength?: number;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Publish options for messages.
|
|
40
|
-
*/
|
|
41
|
-
export interface PublishOptions {
|
|
42
|
-
correlationId?: string;
|
|
43
|
-
replyTo?: string;
|
|
44
|
-
persistent?: boolean;
|
|
45
|
-
expiration?: string;
|
|
46
|
-
priority?: number;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Message handler type for consumers.
|
|
29
|
+
* The RabbitMQ realisation of {@link QueueAdapter} (#502).
|
|
30
|
+
*
|
|
31
|
+
* Everything a background-work consumer needs is declared on the port; what remains here and NOT on
|
|
32
|
+
* it is genuinely broker-specific — `configure()` takes a `RabbitMQConfig`, and `getChannel()` /
|
|
33
|
+
* `getTopologyChannel()` hand out an amqplib `Channel` that only a broker can produce. A caller that
|
|
34
|
+
* needs one of those names this class, which is an honest dependency rather than a port with a hole
|
|
35
|
+
* in it.
|
|
50
36
|
*/
|
|
51
|
-
export
|
|
52
|
-
export declare class RabbitMQAdapterBackendService {
|
|
37
|
+
export declare class RabbitMQAdapterBackendService implements QueueAdapter {
|
|
53
38
|
private readonly logger;
|
|
54
39
|
private readonly appConfigService;
|
|
55
40
|
private readonly errorBuilder;
|
|
@@ -268,6 +253,15 @@ export declare class RabbitMQAdapterBackendService {
|
|
|
268
253
|
/**
|
|
269
254
|
* Get pod ID for this instance.
|
|
270
255
|
*/
|
|
256
|
+
/**
|
|
257
|
+
* Queue depth from the broker, or `null` when no channel is open (#502).
|
|
258
|
+
*
|
|
259
|
+
* This replaces monitoring reaching for `getChannel()` and calling `checkQueue` itself. The
|
|
260
|
+
* behaviour is unchanged — `null` here produces the same empty metrics that a null channel already
|
|
261
|
+
* produced — but the question is now one every adapter can answer about itself, instead of a
|
|
262
|
+
* connection handle only this one can hand out.
|
|
263
|
+
*/
|
|
264
|
+
getQueueDepth(queueName: string): Promise<number | null>;
|
|
271
265
|
getPodId(): string;
|
|
272
266
|
}
|
|
273
267
|
//# sourceMappingURL=rabbitmq-adapter.backend.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-adapter.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"rabbitmq-adapter.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/queue/adapters/rabbitmq-adapter.backend.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,15 @@ import { ErrorBuilderBackendService } from '../../errors/services/error-builder.
|
|
|
25
25
|
import { describeCaughtError, projectCaughtErrorLogFields } from '../../errors/utils/error-log-level-classification.backend.utils.js';
|
|
26
26
|
import { runInFreshRequestContextIfAbsent } from '../../runtime/models/request-context.als.backend.js';
|
|
27
27
|
import { ErrorType, ErrorCustomMessageReference, RabbitMQQueueArgKeys, buildReplyQueueName, buildDelayQueueName, buildRabbitMQConnectionUrl, } from '@wildo-ai/saas-models';
|
|
28
|
+
/**
|
|
29
|
+
* The RabbitMQ realisation of {@link QueueAdapter} (#502).
|
|
30
|
+
*
|
|
31
|
+
* Everything a background-work consumer needs is declared on the port; what remains here and NOT on
|
|
32
|
+
* it is genuinely broker-specific — `configure()` takes a `RabbitMQConfig`, and `getChannel()` /
|
|
33
|
+
* `getTopologyChannel()` hand out an amqplib `Channel` that only a broker can produce. A caller that
|
|
34
|
+
* needs one of those names this class, which is an honest dependency rather than a port with a hole
|
|
35
|
+
* in it.
|
|
36
|
+
*/
|
|
28
37
|
let RabbitMQAdapterBackendService = class RabbitMQAdapterBackendService {
|
|
29
38
|
logger;
|
|
30
39
|
appConfigService;
|
|
@@ -662,6 +671,30 @@ let RabbitMQAdapterBackendService = class RabbitMQAdapterBackendService {
|
|
|
662
671
|
/**
|
|
663
672
|
* Get pod ID for this instance.
|
|
664
673
|
*/
|
|
674
|
+
/**
|
|
675
|
+
* Queue depth from the broker, or `null` when no channel is open (#502).
|
|
676
|
+
*
|
|
677
|
+
* This replaces monitoring reaching for `getChannel()` and calling `checkQueue` itself. The
|
|
678
|
+
* behaviour is unchanged — `null` here produces the same empty metrics that a null channel already
|
|
679
|
+
* produced — but the question is now one every adapter can answer about itself, instead of a
|
|
680
|
+
* connection handle only this one can hand out.
|
|
681
|
+
*/
|
|
682
|
+
async getQueueDepth(queueName) {
|
|
683
|
+
const channel = this.getChannel();
|
|
684
|
+
if (!channel) {
|
|
685
|
+
return null;
|
|
686
|
+
}
|
|
687
|
+
// `checkQueue` CLOSES the channel when the queue does not exist — the reason monitoring stopped
|
|
688
|
+
// probing dead-letter queues (see `getQueueMetrics`). Reported as "not observable" rather than
|
|
689
|
+
// thrown: a queue that has not been asserted yet is not a fault in the runtime being monitored.
|
|
690
|
+
try {
|
|
691
|
+
const queueInfo = await channel.checkQueue(queueName);
|
|
692
|
+
return queueInfo.messageCount;
|
|
693
|
+
}
|
|
694
|
+
catch {
|
|
695
|
+
return null;
|
|
696
|
+
}
|
|
697
|
+
}
|
|
665
698
|
getPodId() {
|
|
666
699
|
return this.podId;
|
|
667
700
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-adapter.backend.service.js","sourceRoot":"","sources":["../../../../../src/queue/adapters/rabbitmq-adapter.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * RabbitMQ Adapter for Queue System\n *\n * Provides connection management, publishing, and consuming capabilities.\n * Uses amqplib for RabbitMQ communication.\n */\n\nimport { buildRuntimePrincipalQueueSegment, runtimePrincipalKindFromRuntimeProfile } from '@wildo-ai/platform-config-lib';\nimport { injectable, inject, Container } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { runInFreshRequestContextIfAbsent } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\nimport {\n ErrorType,\n ErrorCustomMessageReference,\n JobPayload,\n JobResult,\n RabbitMQQueueArgKeys,\n buildQueueName,\n buildReplyQueueName,\n buildDelayQueueName,\n buildRabbitMQConnectionUrl,\n} from '@wildo-ai/saas-models';\n\n// Import amqplib types\n// Note: We use 'any' for Connection because amqplib types are complex and vary between versions\nimport type { Channel, ConsumeMessage, Options } from 'amqplib';\n\n// Connection type from amqplib - using any for compatibility with different type versions\ntype AmqpConnection = any;\n\n/**\n * RabbitMQ configuration for connection.\n */\nexport interface RabbitMQConfig {\n host: string;\n port: number;\n username: string;\n password: string;\n vhost?: string;\n heartbeat?: number;\n connectionTimeout?: number;\n channelMax?: number;\n}\n\n/**\n * Queue assertion options.\n */\nexport interface QueueAssertOptions {\n durable?: boolean;\n exclusive?: boolean;\n autoDelete?: boolean;\n deadLetterExchange?: string;\n deadLetterRoutingKey?: string;\n messageTtl?: number;\n maxLength?: number;\n}\n\n/**\n * Publish options for messages.\n */\nexport interface PublishOptions {\n correlationId?: string;\n replyTo?: string;\n persistent?: boolean;\n expiration?: string;\n priority?: number;\n}\n\n/**\n * Message handler type for consumers.\n */\nexport type MessageHandler = (msg: ConsumeMessage, channel: Channel) => Promise<void>;\n\n@injectable()\nexport class RabbitMQAdapterBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private connection: AmqpConnection | null = null;\n private channel: Channel | null = null;\n /**\n * Dedicated channel used ONLY for topology declarations (`assertQueue`).\n *\n * Queue declarations can fail with `406 PRECONDITION_FAILED` when an\n * already-existing durable queue is redeclared with different immutable\n * arguments (e.g. a pre-DLX `operations` queue redeclared with an\n * `x-dead-letter-exchange`). RabbitMQ responds to a 406 by **closing the\n * channel it arrived on**. If declarations ran on the primary\n * publish/consume channel, one incompatible legacy queue would tear down the\n * whole channel — the adapter would report itself disconnected, every\n * subsequent (compatible) declaration would be skipped, and the app would\n * crash-loop during bring-up.\n *\n * Isolating declarations on their own channel means a 406 kills only THIS\n * channel; the primary channel stays alive, and the topology channel is\n * lazily recreated on the next declaration. See {@link getTopologyChannel}.\n */\n private topologyChannel: Channel | null = null;\n private readonly config: RabbitMQConfig | null = null;\n private isConfigured = false;\n private consumerTags: Map<string, string> = new Map();\n /**\n * Names of retry/delay queues already asserted on the current channel.\n * `scheduleDelayedRetry` declares a delay queue per distinct delay value; this\n * cache skips the redundant round-trip on subsequent retries. Cleared when the\n * channel closes so a fresh channel re-asserts (queues are durable, but a reset\n * vhost / broker would otherwise be assumed present).\n */\n private assertedDelayQueues: Set<string> = new Set();\n private replyQueueName: string | null = null;\n private readonly podId: string;\n /**\n * Opt-in gate for automatic topology remediation of a `406\n * PRECONDITION_FAILED` on `assertQueue`. When enabled AND the mismatched\n * queue is **empty**, the adapter deletes the legacy queue and re-declares it\n * with the desired arguments instead of throwing. Read once from\n * `WILDO_QUEUE_TOPOLOGY_AUTO_REMEDIATE=true`.\n *\n * Fail-closed by default (`false`): auto-deleting a queue is a data-loss\n * footgun outside greenfield/dev, so the framework refuses to do it unless an\n * operator explicitly opts in. Even when enabled, a queue that still holds\n * messages is NEVER auto-deleted — the assertion re-throws so a human\n * decides. See {@link remediateMismatchedQueue}.\n */\n private readonly topologyAutoRemediateEnabled: boolean;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService)\n private readonly errorBuilder: ErrorBuilderBackendService,\n // Appended LAST — this constructor is resolved positionally by several\n // containers, and inserting mid-list silently shifts every later dependency.\n @inject(SAAS_SERVICE_TYPES.Container) private readonly container: Container,\n ) {\n this.logDebug = this.logger.debugByType('RabbitMQAdapterBackendService');\n this.logger.setDebugTypeLogging('RabbitMQAdapterBackendService', false);\n // Get pod ID from environment or generate one\n this.podId = process.env.K8S_POD_NAME ||\n process.env.HOSTNAME ||\n `local-${Math.random().toString(36).substring(2, 10)}`;\n this.topologyAutoRemediateEnabled =\n process.env.WILDO_QUEUE_TOPOLOGY_AUTO_REMEDIATE === 'true';\n }\n\n /**\n * Configure the RabbitMQ adapter with connection settings.\n * Must be called before connect().\n */\n public configure(config: RabbitMQConfig): void {\n (this as any).config = config;\n this.isConfigured = true;\n this.logger.info('RabbitMQ adapter configured', { host: config.host, port: config.port });\n }\n\n /**\n * Connect to RabbitMQ server.\n */\n public async connect(): Promise<void> {\n if (!this.isConfigured || !this.config) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_INITIALIZATION_FAILED,\n context: { message: 'RabbitMQ adapter not configured. Call configure() first.' },\n }\n );\n }\n\n try {\n // Dynamic import amqplib\n const amqp = await import('amqplib');\n\n const connectionUrl = buildRabbitMQConnectionUrl({\n host: this.config.host,\n port: this.config.port,\n username: this.config.username,\n password: this.config.password,\n vhost: this.config.vhost,\n });\n\n this.connection = await amqp.connect(connectionUrl, {\n heartbeat: this.config.heartbeat ?? 60,\n timeout: this.config.connectionTimeout ?? 30000,\n });\n\n // Handle connection events\n this.connection.on('error', (err) => {\n this.logger.error('RabbitMQ connection error', { error: err.message });\n });\n\n this.connection.on('close', () => {\n this.logger.warn('RabbitMQ connection closed');\n this.connection = null;\n this.channel = null;\n // The topology channel dies with the connection too.\n this.topologyChannel = null;\n });\n\n // Create the primary publish/consume channel.\n this.channel = await this.connection.createChannel();\n\n // Handle channel events (prevent unhandled errors during RabbitMQ restarts)\n this.channel.on('error', (err) => {\n this.logger.error('RabbitMQ channel error', { error: err.message });\n });\n\n this.channel.on('close', () => {\n this.logger.warn('RabbitMQ channel closed');\n this.channel = null;\n // Force re-assertion of delay queues on the next channel.\n this.assertedDelayQueues.clear();\n });\n\n // Set prefetch for fair dispatch\n await this.channel.prefetch(1);\n\n // Eagerly create the dedicated topology-declaration channel so the first\n // `assertQueue` does not pay a channel round-trip. Its lifecycle is\n // independent of the primary channel: a `406 PRECONDITION_FAILED` closes\n // only this channel, never the primary publish/consume path.\n this.topologyChannel = await this.createTopologyChannel(this.connection);\n\n this.logger.info('Connected to RabbitMQ', { host: this.config.host });\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CONNECTION_FAILED,\n context: {\n host: this.config.host,\n error: describeCaughtError(error),\n },\n }\n );\n }\n }\n\n /**\n * Check if connected to RabbitMQ.\n */\n public isConnected(): boolean {\n return this.connection !== null && this.channel !== null;\n }\n\n /**\n * Get the channel for direct operations.\n */\n public getChannel(): Channel {\n if (!this.channel) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CHANNEL_CLOSED,\n context: { message: 'RabbitMQ channel not available' },\n }\n );\n }\n return this.channel;\n }\n\n /**\n * Create a dedicated topology-declaration channel with isolated error\n * handling. A `406 PRECONDITION_FAILED` on a declaration closes only this\n * channel; the close handler nulls the reference so it is lazily recreated on\n * the next declaration. Never carries consumers or publishes.\n */\n private async createTopologyChannel(connection: AmqpConnection): Promise<Channel> {\n const channel: Channel = await connection.createChannel();\n\n channel.on('error', (err: Error) => {\n // Expected on a 406 arg-mismatch declaration. Log, but do NOT treat as a\n // connection failure — the primary channel is unaffected.\n this.logger.error('RabbitMQ topology channel error', { error: err.message });\n });\n\n channel.on('close', () => {\n this.topologyChannel = null;\n // A delay queue asserted on a now-closed channel must be re-asserted.\n this.assertedDelayQueues.clear();\n });\n\n return channel;\n }\n\n /**\n * Get the dedicated topology-declaration channel, recreating it if a prior\n * `406` (or a broker restart) closed it. Public so callers that must declare\n * with raw arguments not modelled by {@link QueueAssertOptions} (e.g. a\n * quorum-queue `x-queue-type`) still benefit from primary-channel isolation.\n */\n public async getTopologyChannel(): Promise<Channel> {\n if (this.topologyChannel) {\n return this.topologyChannel;\n }\n if (!this.connection) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CHANNEL_CLOSED,\n context: { message: 'RabbitMQ connection not available for topology channel' },\n }\n );\n }\n this.topologyChannel = await this.createTopologyChannel(this.connection);\n return this.topologyChannel;\n }\n\n /**\n * Translate {@link QueueAssertOptions} into amqplib's `Options.AssertQueue`.\n *\n * `deadLetterExchange === ''` is meaningful: it selects the DEFAULT exchange,\n * which routes a dead-lettered message by `x-dead-letter-routing-key` (a queue\n * name) — this is exactly how the durable retry/delay queues loop a held\n * message back to its source queue. Only skip when the caller passed nothing\n * (`undefined`), i.e. does not want dead-lettering at all.\n */\n private buildAssertQueueOptions(options: QueueAssertOptions): Options.AssertQueue {\n const queueOptions: Options.AssertQueue = {\n durable: options.durable ?? true,\n exclusive: options.exclusive ?? false,\n autoDelete: options.autoDelete ?? false,\n arguments: {} as Record<string, unknown>,\n };\n\n if (options.deadLetterExchange !== undefined) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.DEAD_LETTER_EXCHANGE] =\n options.deadLetterExchange;\n if (options.deadLetterRoutingKey) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.DEAD_LETTER_ROUTING_KEY] =\n options.deadLetterRoutingKey;\n }\n }\n if (options.messageTtl) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.MESSAGE_TTL] = options.messageTtl;\n }\n if (options.maxLength) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.MAX_LENGTH] = options.maxLength;\n }\n\n return queueOptions;\n }\n\n /**\n * Assert a queue exists (create if not).\n *\n * Declared on the dedicated {@link topologyChannel} so an arg-mismatch `406`\n * cannot tear down the primary publish/consume channel. When the mismatch is\n * unrecoverable in place (a pre-existing queue with different immutable args)\n * and {@link topologyAutoRemediateEnabled} is set, an EMPTY legacy queue is\n * deleted and re-declared with the desired args; otherwise the `406`\n * propagates with a descriptive, operator-actionable error.\n */\n public async assertQueue(\n queueName: string,\n options: QueueAssertOptions = {}\n ): Promise<void> {\n const queueOptions = this.buildAssertQueueOptions(options);\n\n try {\n const channel = await this.getTopologyChannel();\n await channel.assertQueue(queueName, queueOptions);\n } catch (error) {\n if (!this.isPreconditionFailed(error)) {\n throw error;\n }\n if (!this.topologyAutoRemediateEnabled) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_INITIALIZATION_FAILED,\n context: {\n queueName,\n message:\n `Queue '${queueName}' already exists with incompatible arguments ` +\n `(406 PRECONDITION_FAILED). RabbitMQ cannot mutate a live queue's args. ` +\n `Delete the stale queue once so it re-declares with the new args, or set ` +\n `WILDO_QUEUE_TOPOLOGY_AUTO_REMEDIATE=true to auto-delete it when empty.`,\n error: describeCaughtError(error),\n },\n }\n );\n }\n await this.remediateMismatchedQueue(queueName, queueOptions);\n }\n\n this.logger.debug('Queue asserted', { queueName, options });\n }\n\n /**\n * Whether an amqplib channel error is a `406 PRECONDITION_FAILED` (immutable\n * queue-argument mismatch on a redeclaration).\n */\n private isPreconditionFailed(error: unknown): boolean {\n const e = error as { code?: number; message?: unknown } | null;\n return (\n e?.code === 406 ||\n (typeof e?.message === 'string' && e.message.includes('PRECONDITION_FAILED'))\n );\n }\n\n /**\n * Remediate a `406` arg-mismatch by deleting the legacy queue and\n * re-declaring it with the desired arguments — but ONLY when the queue is\n * empty. A non-empty queue is never auto-deleted; the assertion re-throws so a\n * human decides (data loss must be an explicit human action, never a\n * bring-up side effect). Runs on a fresh topology channel (the prior one was\n * closed by the 406).\n */\n private async remediateMismatchedQueue(\n queueName: string,\n queueOptions: Options.AssertQueue\n ): Promise<void> {\n // The 406 already killed the topology channel broker-side; its `close`\n // event nulls the cached reference, but that arrives on a later microtask,\n // so the cache may still point at the dead channel here. Discard it\n // explicitly and force a fresh one — `checkQueue`/`deleteQueue` on a closed\n // channel would otherwise reject.\n this.topologyChannel = null;\n const channel = await this.getTopologyChannel();\n\n const { messageCount } = await channel.checkQueue(queueName);\n if (messageCount > 0) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_INITIALIZATION_FAILED,\n context: {\n queueName,\n messageCount,\n message:\n `Refusing to auto-remediate queue '${queueName}': it holds ${messageCount} ` +\n `message(s). Drain or manually delete it before it can re-declare with the ` +\n `new arguments.`,\n },\n }\n );\n }\n\n await channel.deleteQueue(queueName);\n await channel.assertQueue(queueName, queueOptions);\n this.logger.warn('Topology auto-remediation: deleted empty mismatched queue and re-declared', {\n queueName,\n });\n }\n\n /**\n * Publish a job payload to a queue.\n */\n public async publish(\n queueName: string,\n payload: JobPayload,\n options: PublishOptions = {}\n ): Promise<void> {\n const channel = this.getChannel();\n\n try {\n const content = Buffer.from(JSON.stringify(payload));\n\n const publishOptions: Options.Publish = {\n persistent: options.persistent ?? true,\n correlationId: options.correlationId,\n replyTo: options.replyTo,\n priority: options.priority,\n };\n\n if (options.expiration) {\n publishOptions.expiration = options.expiration;\n }\n\n channel.sendToQueue(queueName, content, publishOptions);\n\n this.logger.debug('Message published', {\n queueName,\n jobId: payload.jobId,\n // NOT `correlationId`. This is the AMQP RPC REPLY-MATCHING id (`Options.Publish.correlationId`),\n // a different id from the request's Wildo `correlationId` that the logger's request-context\n // mixin already stamps on every line. Logging it under the name `correlationId` merged OVER the\n // mixin and SHADOWED the request's trace id — and on the fire-and-forget path, where this is\n // `undefined`, it replaced a real id with `\"[undefined]\"`, making the publish line unattributable.\n // Same distinction the job schema draws by naming its field `rpcReplyCorrelationId`.\n ...(options.correlationId ? { rpcReplyCorrelationId: options.correlationId } : {}),\n });\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_PUBLISH_FAILED,\n context: {\n queueName,\n jobId: payload.jobId,\n error: describeCaughtError(error),\n },\n }\n );\n }\n }\n\n /**\n * Schedule a durable, broker-timed retry of a failed job.\n *\n * Replaces the old in-process `setTimeout` backoff (which lost the retry if the\n * worker crashed during the wait, since the original message was already ACKed).\n * The job is published to a dedicated **delay queue** that holds it for\n * `delayMs` via RabbitMQ's per-queue `x-message-ttl`, then dead-letters it back\n * to `sourceQueueName` (through the default exchange, routed by queue name) for\n * re-delivery. The delay queue has NO consumer — the broker owns the wait, so a\n * held retry survives a worker (or broker) restart because both the queue and\n * the message are durable/persistent.\n *\n * One delay queue is declared per distinct `delayMs`, so every message in a\n * given delay queue shares the same TTL — avoiding RabbitMQ's per-message-TTL\n * head-of-line blocking (a short-delay message never waits behind a longer one).\n *\n * Contract: the caller MUST have incremented `retryCount` on `job` before\n * calling, and MUST ACK the original message afterward — the retry is now\n * durably owned by the broker.\n *\n * @param sourceQueueName - Queue the message returns to when the delay elapses\n * @param job - The (retry-incremented) job payload to redeliver\n * @param delayMs - How long the broker holds the message before redelivery\n * @param options - Publish options to preserve across the hop (RPC replyTo/correlationId)\n */\n public async scheduleDelayedRetry(\n sourceQueueName: string,\n job: JobPayload,\n delayMs: number,\n options: PublishOptions = {}\n ): Promise<void> {\n const delayQueueName = buildDelayQueueName(sourceQueueName, delayMs);\n\n // Lazily declare the delay queue (idempotent; cached to skip the round-trip).\n if (!this.assertedDelayQueues.has(delayQueueName)) {\n await this.assertQueue(delayQueueName, {\n durable: true,\n messageTtl: delayMs,\n deadLetterExchange: '', // default exchange → routes by routing key (queue name)\n deadLetterRoutingKey: sourceQueueName,\n });\n this.assertedDelayQueues.add(delayQueueName);\n }\n\n // Publish persistent so the held retry survives a broker restart.\n await this.publish(delayQueueName, job, options);\n\n this.logDebug('Retry scheduled via delay queue', {\n jobId: job.jobId,\n delayQueueName,\n delayMs,\n retryCount: job.retryCount,\n });\n }\n\n /**\n * Publish a job result to a reply queue.\n */\n public async publishResult(\n replyTo: string,\n correlationId: string,\n result: JobResult\n ): Promise<void> {\n const channel = this.getChannel();\n\n try {\n const content = Buffer.from(JSON.stringify(result));\n\n channel.sendToQueue(replyTo, content, {\n correlationId,\n persistent: false, // Reply messages don't need persistence\n });\n\n this.logger.debug('Result published', {\n replyTo,\n // See the note in `publish` — this is the RPC reply-matching id, not the request's trace id.\n rpcReplyCorrelationId: correlationId,\n jobId: result.jobId,\n status: result.status,\n });\n } catch (error) {\n this.logger.error('Failed to publish result', {\n replyTo,\n // See the note in `publish`. This one is at ERROR level, where shadowing the request's trace id\n // is worst: the line an operator reaches for first would name an unrelated RPC id instead.\n rpcReplyCorrelationId: correlationId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n }\n\n /**\n * Set up a consumer for a queue.\n *\n * **Every consumed message runs inside a request-context frame, established HERE.** A consumed\n * message is an independent unit of work with no ambient context of its own, so without a frame its\n * log lines carry no `correlationId`, `buildError` has no id to fall back on, and any audit row it\n * writes lands unattributed. Framing at the ADAPTER rather than in each consumer is deliberate: this\n * method is the single door every AMQP consumer passes through — the job consumer, the domain-queue\n * consumer, the scheduled/cron lane, and the minion tick lane (which injects this same service from\n * `saas-minions-lib`) — so a future consumer cannot forget it. Hand-applying the wrapper per consumer\n * is precisely the \"invariant applied at N-1 of N call sites\" shape that has already produced repeat\n * findings in this codebase (`.claude/rules/invariant-call-site-enumeration.md`).\n *\n * `runInFreshRequestContextIfAbsent` (not `runWithRequestContext`) so it is idempotent: a consumer\n * that already established its own frame keeps it, and a message consumed from inside an existing\n * request (rare, but possible for an in-process drain) stays part of that request's trace.\n *\n * The frame wraps the error branch too — a message that fails still gets an attributable log line.\n * What this canNOT do is adopt the enqueuing request's `originCorrelationId`: that lives INSIDE the\n * payload, which only the consumer knows how to parse, so adoption stays each consumer's job\n * (`adoptCorrelationIdIntoCurrentFrame`) and this frame is the fresh id it starts from.\n */\n public async consume(\n queueName: string,\n handler: MessageHandler\n ): Promise<string> {\n const channel = this.getChannel();\n\n try {\n const { consumerTag } = await channel.consume(\n queueName,\n async (msg) => {\n if (!msg) return;\n\n await runInFreshRequestContextIfAbsent(async () => {\n try {\n await handler(msg, channel);\n } catch (error) {\n this.logger.error('Consumer handler error', {\n queueName,\n ...projectCaughtErrorLogFields(error),\n });\n // Nack without requeue on handler error. When the consumed queue has\n // a dead-letter-exchange wired (operations / scheduled / domain all\n // do now), the broker parks the message in that queue's `.deadletter`\n // for inspection; on a queue without a DLX it is discarded.\n channel.nack(msg, false, false);\n }\n });\n },\n { noAck: false }\n );\n\n this.consumerTags.set(queueName, consumerTag);\n this.logDebug('Consumer started', { queueName, consumerTag });\n\n return consumerTag;\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CONSUME_FAILED,\n context: {\n queueName,\n error: describeCaughtError(error),\n },\n }\n );\n }\n }\n\n /**\n * Cancel a consumer.\n */\n public async cancelConsumer(queueName: string): Promise<void> {\n const channel = this.getChannel();\n const consumerTag = this.consumerTags.get(queueName);\n\n if (consumerTag) {\n await channel.cancel(consumerTag);\n this.consumerTags.delete(queueName);\n this.logDebug('Consumer cancelled', { queueName, consumerTag });\n }\n }\n\n /**\n * Set up reply queue for RPC pattern (per pod).\n */\n\n /**\n * The runtime segment embedded in this process's reply-queue name.\n *\n * `undefined` for the application backend, deliberately: it keeps the\n * historical `wildo.reply.<appId>.<podId>` layout, so an existing deployment's\n * queue names do not move and its broker permission keeps matching. A named\n * runtime contributes `<kind>-<name>`, which is what a per-principal read\n * regex anchors on.\n *\n * Resolved fail-SAFE. An unresolvable principal cannot be a minion (minion\n * startup binds and initializes it), so falling back to the backend layout\n * preserves today's behaviour for minimal and test containers rather than\n * inventing a segment nobody granted.\n */\n private resolveReplyPrincipalSegment(): string | undefined {\n try {\n const descriptor = this.container\n .get<{ describe(): { runtimeProfile: string; runtimeKey?: string } }>(SAAS_SERVICE_TYPES.RuntimePrincipalService)\n .describe();\n // Derived through the SHARED builder, never locally. The broker permission\n // this queue name must satisfy is built from the same function, so the two\n // cannot drift; they previously agreed only because every minion name so\n // far happened to survive sanitisation unchanged.\n return buildRuntimePrincipalQueueSegment(\n runtimePrincipalKindFromRuntimeProfile(descriptor.runtimeProfile),\n descriptor.runtimeKey,\n );\n } catch {\n return undefined;\n }\n }\n\n public async setupReplyQueue(\n appId: string,\n onReply: (correlationId: string, result: JobResult) => void\n ): Promise<string> {\n const channel = this.getChannel();\n\n // The reply queue carries the OWNING RUNTIME in its name (see\n // `buildReplyQueueName`). Without it a minion's reply queue and the\n // application backend's differ only by an opaque per-process token, so a\n // broker permission cannot admit one and refuse the other — which is why\n // narrowing a minion's `read` refused its own replies and crash-looped it.\n this.replyQueueName = buildReplyQueueName(appId, this.podId, this.resolveReplyPrincipalSegment());\n\n // Create exclusive, auto-delete reply queue\n await channel.assertQueue(this.replyQueueName, {\n exclusive: true,\n autoDelete: true,\n durable: false,\n });\n\n // Start consuming replies\n await channel.consume(\n this.replyQueueName,\n (msg) => {\n if (!msg) return;\n\n const correlationId = msg.properties.correlationId;\n try {\n const result: JobResult = JSON.parse(msg.content.toString());\n onReply(correlationId, result);\n } catch (error) {\n this.logger.error('Failed to parse reply', {\n correlationId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n\n channel.ack(msg);\n },\n { noAck: false }\n );\n\n this.logger.info('Reply queue set up', { replyQueueName: this.replyQueueName });\n\n return this.replyQueueName;\n }\n\n /**\n * Get the reply queue name for this pod.\n */\n public getReplyQueueName(): string | null {\n return this.replyQueueName;\n }\n\n /**\n * Acknowledge a message.\n */\n public ack(msg: ConsumeMessage): void {\n const channel = this.getChannel();\n channel.ack(msg);\n }\n\n /**\n * Reject a message.\n */\n public nack(msg: ConsumeMessage, requeue: boolean = false): void {\n const channel = this.getChannel();\n channel.nack(msg, false, requeue);\n }\n\n /**\n * Close the connection gracefully.\n */\n public async close(): Promise<void> {\n // Cancel all consumers\n for (const [queueName, consumerTag] of this.consumerTags) {\n try {\n await this.channel?.cancel(consumerTag);\n this.logger.debug('Consumer cancelled', { queueName, consumerTag });\n } catch (error) {\n this.logger.warn('Failed to cancel consumer', { queueName, error });\n }\n }\n this.consumerTags.clear();\n\n // Close the topology-declaration channel (best-effort; independent of the\n // primary channel).\n if (this.topologyChannel) {\n try {\n await this.topologyChannel.close();\n this.logger.debug('Topology channel closed');\n } catch (error) {\n this.logger.warn('Failed to close topology channel', { error });\n }\n this.topologyChannel = null;\n }\n\n // Close channel\n if (this.channel) {\n try {\n await this.channel.close();\n this.logger.debug('Channel closed');\n } catch (error) {\n this.logger.warn('Failed to close channel', { error });\n }\n this.channel = null;\n }\n\n // Close connection\n if (this.connection) {\n try {\n await this.connection.close();\n this.logger.info('RabbitMQ connection closed');\n } catch (error) {\n this.logger.warn('Failed to close connection', { error });\n }\n this.connection = null;\n }\n }\n\n /**\n * Get pod ID for this instance.\n */\n public getPodId(): string {\n return this.podId;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rabbitmq-adapter.backend.service.js","sourceRoot":"","sources":["../../../../src/queue/adapters/rabbitmq-adapter.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * RabbitMQ Adapter for Queue System\n *\n * Provides connection management, publishing, and consuming capabilities.\n * Uses amqplib for RabbitMQ communication.\n */\n\nimport { buildRuntimePrincipalQueueSegment, runtimePrincipalKindFromRuntimeProfile } from '@wildo-ai/platform-config-lib';\nimport { injectable, inject, Container } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { runInFreshRequestContextIfAbsent } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\nimport {\n ErrorType,\n ErrorCustomMessageReference,\n JobPayload,\n JobResult,\n RabbitMQQueueArgKeys,\n buildQueueName,\n buildReplyQueueName,\n buildDelayQueueName,\n buildRabbitMQConnectionUrl,\n} from '@wildo-ai/saas-models';\n\n// Import amqplib types\n// Note: We use 'any' for Connection because amqplib types are complex and vary between versions\nimport type { Channel, ConsumeMessage, Options } from 'amqplib';\nimport type {\n MessageHandler,\n QueueAdapter,\n QueueConsumeMessage,\n} from '~wildo-backend-lib/queue/adapters/queue-adapter.backend.interface';\nimport type {\n PublishOptions,\n QueueAssertOptions,\n} from '~wildo-backend-lib/queue/adapters/queue-adapter.backend.options';\n\n// Connection type from amqplib - using any for compatibility with different type versions\ntype AmqpConnection = any;\n\n/**\n * RabbitMQ configuration for connection.\n */\nexport interface RabbitMQConfig {\n host: string;\n port: number;\n username: string;\n password: string;\n vhost?: string;\n heartbeat?: number;\n connectionTimeout?: number;\n channelMax?: number;\n}\n\n/**\n * The RabbitMQ realisation of {@link QueueAdapter} (#502).\n *\n * Everything a background-work consumer needs is declared on the port; what remains here and NOT on\n * it is genuinely broker-specific — `configure()` takes a `RabbitMQConfig`, and `getChannel()` /\n * `getTopologyChannel()` hand out an amqplib `Channel` that only a broker can produce. A caller that\n * needs one of those names this class, which is an honest dependency rather than a port with a hole\n * in it.\n */\n@injectable()\nexport class RabbitMQAdapterBackendService implements QueueAdapter {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private connection: AmqpConnection | null = null;\n private channel: Channel | null = null;\n /**\n * Dedicated channel used ONLY for topology declarations (`assertQueue`).\n *\n * Queue declarations can fail with `406 PRECONDITION_FAILED` when an\n * already-existing durable queue is redeclared with different immutable\n * arguments (e.g. a pre-DLX `operations` queue redeclared with an\n * `x-dead-letter-exchange`). RabbitMQ responds to a 406 by **closing the\n * channel it arrived on**. If declarations ran on the primary\n * publish/consume channel, one incompatible legacy queue would tear down the\n * whole channel — the adapter would report itself disconnected, every\n * subsequent (compatible) declaration would be skipped, and the app would\n * crash-loop during bring-up.\n *\n * Isolating declarations on their own channel means a 406 kills only THIS\n * channel; the primary channel stays alive, and the topology channel is\n * lazily recreated on the next declaration. See {@link getTopologyChannel}.\n */\n private topologyChannel: Channel | null = null;\n private readonly config: RabbitMQConfig | null = null;\n private isConfigured = false;\n private consumerTags: Map<string, string> = new Map();\n /**\n * Names of retry/delay queues already asserted on the current channel.\n * `scheduleDelayedRetry` declares a delay queue per distinct delay value; this\n * cache skips the redundant round-trip on subsequent retries. Cleared when the\n * channel closes so a fresh channel re-asserts (queues are durable, but a reset\n * vhost / broker would otherwise be assumed present).\n */\n private assertedDelayQueues: Set<string> = new Set();\n private replyQueueName: string | null = null;\n private readonly podId: string;\n /**\n * Opt-in gate for automatic topology remediation of a `406\n * PRECONDITION_FAILED` on `assertQueue`. When enabled AND the mismatched\n * queue is **empty**, the adapter deletes the legacy queue and re-declares it\n * with the desired arguments instead of throwing. Read once from\n * `WILDO_QUEUE_TOPOLOGY_AUTO_REMEDIATE=true`.\n *\n * Fail-closed by default (`false`): auto-deleting a queue is a data-loss\n * footgun outside greenfield/dev, so the framework refuses to do it unless an\n * operator explicitly opts in. Even when enabled, a queue that still holds\n * messages is NEVER auto-deleted — the assertion re-throws so a human\n * decides. See {@link remediateMismatchedQueue}.\n */\n private readonly topologyAutoRemediateEnabled: boolean;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService)\n private readonly errorBuilder: ErrorBuilderBackendService,\n // Appended LAST — this constructor is resolved positionally by several\n // containers, and inserting mid-list silently shifts every later dependency.\n @inject(SAAS_SERVICE_TYPES.Container) private readonly container: Container,\n ) {\n this.logDebug = this.logger.debugByType('RabbitMQAdapterBackendService');\n this.logger.setDebugTypeLogging('RabbitMQAdapterBackendService', false);\n // Get pod ID from environment or generate one\n this.podId = process.env.K8S_POD_NAME ||\n process.env.HOSTNAME ||\n `local-${Math.random().toString(36).substring(2, 10)}`;\n this.topologyAutoRemediateEnabled =\n process.env.WILDO_QUEUE_TOPOLOGY_AUTO_REMEDIATE === 'true';\n }\n\n /**\n * Configure the RabbitMQ adapter with connection settings.\n * Must be called before connect().\n */\n public configure(config: RabbitMQConfig): void {\n (this as any).config = config;\n this.isConfigured = true;\n this.logger.info('RabbitMQ adapter configured', { host: config.host, port: config.port });\n }\n\n /**\n * Connect to RabbitMQ server.\n */\n public async connect(): Promise<void> {\n if (!this.isConfigured || !this.config) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_INITIALIZATION_FAILED,\n context: { message: 'RabbitMQ adapter not configured. Call configure() first.' },\n }\n );\n }\n\n try {\n // Dynamic import amqplib\n const amqp = await import('amqplib');\n\n const connectionUrl = buildRabbitMQConnectionUrl({\n host: this.config.host,\n port: this.config.port,\n username: this.config.username,\n password: this.config.password,\n vhost: this.config.vhost,\n });\n\n this.connection = await amqp.connect(connectionUrl, {\n heartbeat: this.config.heartbeat ?? 60,\n timeout: this.config.connectionTimeout ?? 30000,\n });\n\n // Handle connection events\n this.connection.on('error', (err) => {\n this.logger.error('RabbitMQ connection error', { error: err.message });\n });\n\n this.connection.on('close', () => {\n this.logger.warn('RabbitMQ connection closed');\n this.connection = null;\n this.channel = null;\n // The topology channel dies with the connection too.\n this.topologyChannel = null;\n });\n\n // Create the primary publish/consume channel.\n this.channel = await this.connection.createChannel();\n\n // Handle channel events (prevent unhandled errors during RabbitMQ restarts)\n this.channel.on('error', (err) => {\n this.logger.error('RabbitMQ channel error', { error: err.message });\n });\n\n this.channel.on('close', () => {\n this.logger.warn('RabbitMQ channel closed');\n this.channel = null;\n // Force re-assertion of delay queues on the next channel.\n this.assertedDelayQueues.clear();\n });\n\n // Set prefetch for fair dispatch\n await this.channel.prefetch(1);\n\n // Eagerly create the dedicated topology-declaration channel so the first\n // `assertQueue` does not pay a channel round-trip. Its lifecycle is\n // independent of the primary channel: a `406 PRECONDITION_FAILED` closes\n // only this channel, never the primary publish/consume path.\n this.topologyChannel = await this.createTopologyChannel(this.connection);\n\n this.logger.info('Connected to RabbitMQ', { host: this.config.host });\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CONNECTION_FAILED,\n context: {\n host: this.config.host,\n error: describeCaughtError(error),\n },\n }\n );\n }\n }\n\n /**\n * Check if connected to RabbitMQ.\n */\n public isConnected(): boolean {\n return this.connection !== null && this.channel !== null;\n }\n\n /**\n * Get the channel for direct operations.\n */\n public getChannel(): Channel {\n if (!this.channel) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CHANNEL_CLOSED,\n context: { message: 'RabbitMQ channel not available' },\n }\n );\n }\n return this.channel;\n }\n\n /**\n * Create a dedicated topology-declaration channel with isolated error\n * handling. A `406 PRECONDITION_FAILED` on a declaration closes only this\n * channel; the close handler nulls the reference so it is lazily recreated on\n * the next declaration. Never carries consumers or publishes.\n */\n private async createTopologyChannel(connection: AmqpConnection): Promise<Channel> {\n const channel: Channel = await connection.createChannel();\n\n channel.on('error', (err: Error) => {\n // Expected on a 406 arg-mismatch declaration. Log, but do NOT treat as a\n // connection failure — the primary channel is unaffected.\n this.logger.error('RabbitMQ topology channel error', { error: err.message });\n });\n\n channel.on('close', () => {\n this.topologyChannel = null;\n // A delay queue asserted on a now-closed channel must be re-asserted.\n this.assertedDelayQueues.clear();\n });\n\n return channel;\n }\n\n /**\n * Get the dedicated topology-declaration channel, recreating it if a prior\n * `406` (or a broker restart) closed it. Public so callers that must declare\n * with raw arguments not modelled by {@link QueueAssertOptions} (e.g. a\n * quorum-queue `x-queue-type`) still benefit from primary-channel isolation.\n */\n public async getTopologyChannel(): Promise<Channel> {\n if (this.topologyChannel) {\n return this.topologyChannel;\n }\n if (!this.connection) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CHANNEL_CLOSED,\n context: { message: 'RabbitMQ connection not available for topology channel' },\n }\n );\n }\n this.topologyChannel = await this.createTopologyChannel(this.connection);\n return this.topologyChannel;\n }\n\n /**\n * Translate {@link QueueAssertOptions} into amqplib's `Options.AssertQueue`.\n *\n * `deadLetterExchange === ''` is meaningful: it selects the DEFAULT exchange,\n * which routes a dead-lettered message by `x-dead-letter-routing-key` (a queue\n * name) — this is exactly how the durable retry/delay queues loop a held\n * message back to its source queue. Only skip when the caller passed nothing\n * (`undefined`), i.e. does not want dead-lettering at all.\n */\n private buildAssertQueueOptions(options: QueueAssertOptions): Options.AssertQueue {\n const queueOptions: Options.AssertQueue = {\n durable: options.durable ?? true,\n exclusive: options.exclusive ?? false,\n autoDelete: options.autoDelete ?? false,\n arguments: {} as Record<string, unknown>,\n };\n\n if (options.deadLetterExchange !== undefined) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.DEAD_LETTER_EXCHANGE] =\n options.deadLetterExchange;\n if (options.deadLetterRoutingKey) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.DEAD_LETTER_ROUTING_KEY] =\n options.deadLetterRoutingKey;\n }\n }\n if (options.messageTtl) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.MESSAGE_TTL] = options.messageTtl;\n }\n if (options.maxLength) {\n (queueOptions.arguments as Record<string, unknown>)[RabbitMQQueueArgKeys.MAX_LENGTH] = options.maxLength;\n }\n\n return queueOptions;\n }\n\n /**\n * Assert a queue exists (create if not).\n *\n * Declared on the dedicated {@link topologyChannel} so an arg-mismatch `406`\n * cannot tear down the primary publish/consume channel. When the mismatch is\n * unrecoverable in place (a pre-existing queue with different immutable args)\n * and {@link topologyAutoRemediateEnabled} is set, an EMPTY legacy queue is\n * deleted and re-declared with the desired args; otherwise the `406`\n * propagates with a descriptive, operator-actionable error.\n */\n public async assertQueue(\n queueName: string,\n options: QueueAssertOptions = {}\n ): Promise<void> {\n const queueOptions = this.buildAssertQueueOptions(options);\n\n try {\n const channel = await this.getTopologyChannel();\n await channel.assertQueue(queueName, queueOptions);\n } catch (error) {\n if (!this.isPreconditionFailed(error)) {\n throw error;\n }\n if (!this.topologyAutoRemediateEnabled) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_INITIALIZATION_FAILED,\n context: {\n queueName,\n message:\n `Queue '${queueName}' already exists with incompatible arguments ` +\n `(406 PRECONDITION_FAILED). RabbitMQ cannot mutate a live queue's args. ` +\n `Delete the stale queue once so it re-declares with the new args, or set ` +\n `WILDO_QUEUE_TOPOLOGY_AUTO_REMEDIATE=true to auto-delete it when empty.`,\n error: describeCaughtError(error),\n },\n }\n );\n }\n await this.remediateMismatchedQueue(queueName, queueOptions);\n }\n\n this.logger.debug('Queue asserted', { queueName, options });\n }\n\n /**\n * Whether an amqplib channel error is a `406 PRECONDITION_FAILED` (immutable\n * queue-argument mismatch on a redeclaration).\n */\n private isPreconditionFailed(error: unknown): boolean {\n const e = error as { code?: number; message?: unknown } | null;\n return (\n e?.code === 406 ||\n (typeof e?.message === 'string' && e.message.includes('PRECONDITION_FAILED'))\n );\n }\n\n /**\n * Remediate a `406` arg-mismatch by deleting the legacy queue and\n * re-declaring it with the desired arguments — but ONLY when the queue is\n * empty. A non-empty queue is never auto-deleted; the assertion re-throws so a\n * human decides (data loss must be an explicit human action, never a\n * bring-up side effect). Runs on a fresh topology channel (the prior one was\n * closed by the 406).\n */\n private async remediateMismatchedQueue(\n queueName: string,\n queueOptions: Options.AssertQueue\n ): Promise<void> {\n // The 406 already killed the topology channel broker-side; its `close`\n // event nulls the cached reference, but that arrives on a later microtask,\n // so the cache may still point at the dead channel here. Discard it\n // explicitly and force a fresh one — `checkQueue`/`deleteQueue` on a closed\n // channel would otherwise reject.\n this.topologyChannel = null;\n const channel = await this.getTopologyChannel();\n\n const { messageCount } = await channel.checkQueue(queueName);\n if (messageCount > 0) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_INITIALIZATION_FAILED,\n context: {\n queueName,\n messageCount,\n message:\n `Refusing to auto-remediate queue '${queueName}': it holds ${messageCount} ` +\n `message(s). Drain or manually delete it before it can re-declare with the ` +\n `new arguments.`,\n },\n }\n );\n }\n\n await channel.deleteQueue(queueName);\n await channel.assertQueue(queueName, queueOptions);\n this.logger.warn('Topology auto-remediation: deleted empty mismatched queue and re-declared', {\n queueName,\n });\n }\n\n /**\n * Publish a job payload to a queue.\n */\n public async publish(\n queueName: string,\n payload: JobPayload,\n options: PublishOptions = {}\n ): Promise<void> {\n const channel = this.getChannel();\n\n try {\n const content = Buffer.from(JSON.stringify(payload));\n\n const publishOptions: Options.Publish = {\n persistent: options.persistent ?? true,\n correlationId: options.correlationId,\n replyTo: options.replyTo,\n priority: options.priority,\n };\n\n if (options.expiration) {\n publishOptions.expiration = options.expiration;\n }\n\n channel.sendToQueue(queueName, content, publishOptions);\n\n this.logger.debug('Message published', {\n queueName,\n jobId: payload.jobId,\n // NOT `correlationId`. This is the AMQP RPC REPLY-MATCHING id (`Options.Publish.correlationId`),\n // a different id from the request's Wildo `correlationId` that the logger's request-context\n // mixin already stamps on every line. Logging it under the name `correlationId` merged OVER the\n // mixin and SHADOWED the request's trace id — and on the fire-and-forget path, where this is\n // `undefined`, it replaced a real id with `\"[undefined]\"`, making the publish line unattributable.\n // Same distinction the job schema draws by naming its field `rpcReplyCorrelationId`.\n ...(options.correlationId ? { rpcReplyCorrelationId: options.correlationId } : {}),\n });\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_PUBLISH_FAILED,\n context: {\n queueName,\n jobId: payload.jobId,\n error: describeCaughtError(error),\n },\n }\n );\n }\n }\n\n /**\n * Schedule a durable, broker-timed retry of a failed job.\n *\n * Replaces the old in-process `setTimeout` backoff (which lost the retry if the\n * worker crashed during the wait, since the original message was already ACKed).\n * The job is published to a dedicated **delay queue** that holds it for\n * `delayMs` via RabbitMQ's per-queue `x-message-ttl`, then dead-letters it back\n * to `sourceQueueName` (through the default exchange, routed by queue name) for\n * re-delivery. The delay queue has NO consumer — the broker owns the wait, so a\n * held retry survives a worker (or broker) restart because both the queue and\n * the message are durable/persistent.\n *\n * One delay queue is declared per distinct `delayMs`, so every message in a\n * given delay queue shares the same TTL — avoiding RabbitMQ's per-message-TTL\n * head-of-line blocking (a short-delay message never waits behind a longer one).\n *\n * Contract: the caller MUST have incremented `retryCount` on `job` before\n * calling, and MUST ACK the original message afterward — the retry is now\n * durably owned by the broker.\n *\n * @param sourceQueueName - Queue the message returns to when the delay elapses\n * @param job - The (retry-incremented) job payload to redeliver\n * @param delayMs - How long the broker holds the message before redelivery\n * @param options - Publish options to preserve across the hop (RPC replyTo/correlationId)\n */\n public async scheduleDelayedRetry(\n sourceQueueName: string,\n job: JobPayload,\n delayMs: number,\n options: PublishOptions = {}\n ): Promise<void> {\n const delayQueueName = buildDelayQueueName(sourceQueueName, delayMs);\n\n // Lazily declare the delay queue (idempotent; cached to skip the round-trip).\n if (!this.assertedDelayQueues.has(delayQueueName)) {\n await this.assertQueue(delayQueueName, {\n durable: true,\n messageTtl: delayMs,\n deadLetterExchange: '', // default exchange → routes by routing key (queue name)\n deadLetterRoutingKey: sourceQueueName,\n });\n this.assertedDelayQueues.add(delayQueueName);\n }\n\n // Publish persistent so the held retry survives a broker restart.\n await this.publish(delayQueueName, job, options);\n\n this.logDebug('Retry scheduled via delay queue', {\n jobId: job.jobId,\n delayQueueName,\n delayMs,\n retryCount: job.retryCount,\n });\n }\n\n /**\n * Publish a job result to a reply queue.\n */\n public async publishResult(\n replyTo: string,\n correlationId: string,\n result: JobResult\n ): Promise<void> {\n const channel = this.getChannel();\n\n try {\n const content = Buffer.from(JSON.stringify(result));\n\n channel.sendToQueue(replyTo, content, {\n correlationId,\n persistent: false, // Reply messages don't need persistence\n });\n\n this.logger.debug('Result published', {\n replyTo,\n // See the note in `publish` — this is the RPC reply-matching id, not the request's trace id.\n rpcReplyCorrelationId: correlationId,\n jobId: result.jobId,\n status: result.status,\n });\n } catch (error) {\n this.logger.error('Failed to publish result', {\n replyTo,\n // See the note in `publish`. This one is at ERROR level, where shadowing the request's trace id\n // is worst: the line an operator reaches for first would name an unrelated RPC id instead.\n rpcReplyCorrelationId: correlationId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n }\n\n /**\n * Set up a consumer for a queue.\n *\n * **Every consumed message runs inside a request-context frame, established HERE.** A consumed\n * message is an independent unit of work with no ambient context of its own, so without a frame its\n * log lines carry no `correlationId`, `buildError` has no id to fall back on, and any audit row it\n * writes lands unattributed. Framing at the ADAPTER rather than in each consumer is deliberate: this\n * method is the single door every AMQP consumer passes through — the job consumer, the domain-queue\n * consumer, the scheduled/cron lane, and the minion tick lane (which injects this same service from\n * `saas-minions-lib`) — so a future consumer cannot forget it. Hand-applying the wrapper per consumer\n * is precisely the \"invariant applied at N-1 of N call sites\" shape that has already produced repeat\n * findings in this codebase (`.claude/rules/invariant-call-site-enumeration.md`).\n *\n * `runInFreshRequestContextIfAbsent` (not `runWithRequestContext`) so it is idempotent: a consumer\n * that already established its own frame keeps it, and a message consumed from inside an existing\n * request (rare, but possible for an in-process drain) stays part of that request's trace.\n *\n * The frame wraps the error branch too — a message that fails still gets an attributable log line.\n * What this canNOT do is adopt the enqueuing request's `originCorrelationId`: that lives INSIDE the\n * payload, which only the consumer knows how to parse, so adoption stays each consumer's job\n * (`adoptCorrelationIdIntoCurrentFrame`) and this frame is the fresh id it starts from.\n */\n public async consume(\n queueName: string,\n handler: MessageHandler\n ): Promise<string> {\n const channel = this.getChannel();\n\n try {\n const { consumerTag } = await channel.consume(\n queueName,\n async (msg) => {\n if (!msg) return;\n\n await runInFreshRequestContextIfAbsent(async () => {\n try {\n await handler(msg, channel);\n } catch (error) {\n this.logger.error('Consumer handler error', {\n queueName,\n ...projectCaughtErrorLogFields(error),\n });\n // Nack without requeue on handler error. When the consumed queue has\n // a dead-letter-exchange wired (operations / scheduled / domain all\n // do now), the broker parks the message in that queue's `.deadletter`\n // for inspection; on a queue without a DLX it is discarded.\n channel.nack(msg, false, false);\n }\n });\n },\n { noAck: false }\n );\n\n this.consumerTags.set(queueName, consumerTag);\n this.logDebug('Consumer started', { queueName, consumerTag });\n\n return consumerTag;\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INFRASTRUCTURE,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.QUEUE_CONSUME_FAILED,\n context: {\n queueName,\n error: describeCaughtError(error),\n },\n }\n );\n }\n }\n\n /**\n * Cancel a consumer.\n */\n public async cancelConsumer(queueName: string): Promise<void> {\n const channel = this.getChannel();\n const consumerTag = this.consumerTags.get(queueName);\n\n if (consumerTag) {\n await channel.cancel(consumerTag);\n this.consumerTags.delete(queueName);\n this.logDebug('Consumer cancelled', { queueName, consumerTag });\n }\n }\n\n /**\n * Set up reply queue for RPC pattern (per pod).\n */\n\n /**\n * The runtime segment embedded in this process's reply-queue name.\n *\n * `undefined` for the application backend, deliberately: it keeps the\n * historical `wildo.reply.<appId>.<podId>` layout, so an existing deployment's\n * queue names do not move and its broker permission keeps matching. A named\n * runtime contributes `<kind>-<name>`, which is what a per-principal read\n * regex anchors on.\n *\n * Resolved fail-SAFE. An unresolvable principal cannot be a minion (minion\n * startup binds and initializes it), so falling back to the backend layout\n * preserves today's behaviour for minimal and test containers rather than\n * inventing a segment nobody granted.\n */\n private resolveReplyPrincipalSegment(): string | undefined {\n try {\n const descriptor = this.container\n .get<{ describe(): { runtimeProfile: string; runtimeKey?: string } }>(SAAS_SERVICE_TYPES.RuntimePrincipalService)\n .describe();\n // Derived through the SHARED builder, never locally. The broker permission\n // this queue name must satisfy is built from the same function, so the two\n // cannot drift; they previously agreed only because every minion name so\n // far happened to survive sanitisation unchanged.\n return buildRuntimePrincipalQueueSegment(\n runtimePrincipalKindFromRuntimeProfile(descriptor.runtimeProfile),\n descriptor.runtimeKey,\n );\n } catch {\n return undefined;\n }\n }\n\n public async setupReplyQueue(\n appId: string,\n onReply: (correlationId: string, result: JobResult) => void\n ): Promise<string> {\n const channel = this.getChannel();\n\n // The reply queue carries the OWNING RUNTIME in its name (see\n // `buildReplyQueueName`). Without it a minion's reply queue and the\n // application backend's differ only by an opaque per-process token, so a\n // broker permission cannot admit one and refuse the other — which is why\n // narrowing a minion's `read` refused its own replies and crash-looped it.\n this.replyQueueName = buildReplyQueueName(appId, this.podId, this.resolveReplyPrincipalSegment());\n\n // Create exclusive, auto-delete reply queue\n await channel.assertQueue(this.replyQueueName, {\n exclusive: true,\n autoDelete: true,\n durable: false,\n });\n\n // Start consuming replies\n await channel.consume(\n this.replyQueueName,\n (msg) => {\n if (!msg) return;\n\n const correlationId = msg.properties.correlationId;\n try {\n const result: JobResult = JSON.parse(msg.content.toString());\n onReply(correlationId, result);\n } catch (error) {\n this.logger.error('Failed to parse reply', {\n correlationId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n\n channel.ack(msg);\n },\n { noAck: false }\n );\n\n this.logger.info('Reply queue set up', { replyQueueName: this.replyQueueName });\n\n return this.replyQueueName;\n }\n\n /**\n * Get the reply queue name for this pod.\n */\n public getReplyQueueName(): string | null {\n return this.replyQueueName;\n }\n\n /**\n * Acknowledge a message.\n */\n public ack(msg: ConsumeMessage): void {\n const channel = this.getChannel();\n channel.ack(msg);\n }\n\n /**\n * Reject a message.\n */\n public nack(msg: ConsumeMessage, requeue: boolean = false): void {\n const channel = this.getChannel();\n channel.nack(msg, false, requeue);\n }\n\n /**\n * Close the connection gracefully.\n */\n public async close(): Promise<void> {\n // Cancel all consumers\n for (const [queueName, consumerTag] of this.consumerTags) {\n try {\n await this.channel?.cancel(consumerTag);\n this.logger.debug('Consumer cancelled', { queueName, consumerTag });\n } catch (error) {\n this.logger.warn('Failed to cancel consumer', { queueName, error });\n }\n }\n this.consumerTags.clear();\n\n // Close the topology-declaration channel (best-effort; independent of the\n // primary channel).\n if (this.topologyChannel) {\n try {\n await this.topologyChannel.close();\n this.logger.debug('Topology channel closed');\n } catch (error) {\n this.logger.warn('Failed to close topology channel', { error });\n }\n this.topologyChannel = null;\n }\n\n // Close channel\n if (this.channel) {\n try {\n await this.channel.close();\n this.logger.debug('Channel closed');\n } catch (error) {\n this.logger.warn('Failed to close channel', { error });\n }\n this.channel = null;\n }\n\n // Close connection\n if (this.connection) {\n try {\n await this.connection.close();\n this.logger.info('RabbitMQ connection closed');\n } catch (error) {\n this.logger.warn('Failed to close connection', { error });\n }\n this.connection = null;\n }\n }\n\n /**\n * Get pod ID for this instance.\n */\n /**\n * Queue depth from the broker, or `null` when no channel is open (#502).\n *\n * This replaces monitoring reaching for `getChannel()` and calling `checkQueue` itself. The\n * behaviour is unchanged — `null` here produces the same empty metrics that a null channel already\n * produced — but the question is now one every adapter can answer about itself, instead of a\n * connection handle only this one can hand out.\n */\n public async getQueueDepth(queueName: string): Promise<number | null> {\n const channel = this.getChannel();\n if (!channel) {\n return null;\n }\n // `checkQueue` CLOSES the channel when the queue does not exist — the reason monitoring stopped\n // probing dead-letter queues (see `getQueueMetrics`). Reported as \"not observable\" rather than\n // thrown: a queue that has not been asserted yet is not a fault in the runtime being monitored.\n try {\n const queueInfo = await channel.checkQueue(queueName);\n return queueInfo.messageCount;\n } catch {\n return null;\n }\n }\n\n public getPodId(): string {\n return this.podId;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps-crontabs-manager.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"apps-crontabs-manager.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/apps-crontabs-manager.backend.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-job-sync.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"cron-job-sync.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/cron-job-sync.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAE7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EACL,gCAAgC,EAEhC,KAAK,mBAAmB,EACzB,MAAM,gEAAgE,CAAC;AACxE,OAAO,EAAE,sCAAsC,EAAE,MAAM,4FAA4F,CAAC;AACpJ,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAW3H,qBACa,yBAAyB;IASlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAErC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAExC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IAhB3C,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAA4C;gBAI3C,MAAM,EAAE,aAAa,EAErB,gBAAgB,EAAE,uBAAuB,EAEzC,oBAAoB,EAAE,gCAAgC,EAEtD,uBAAuB,EAAE,sCAAsC,EAE/D,wBAAwB,EAAE,+BAA+B;IAM5E;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAKhB;;;;;;;;OAQG;IACG,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAiFlE;;OAEG;IACH,OAAO,CAAC,kCAAkC;IA2E1C;;;;;;;;OAQG;IACH,OAAO,CAAC,mCAAmC;IAc3C;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IA2BjC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,eAAe;CAOxB"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { LoggerService } from '../monitoring/logger/services/logger.service';
|
|
14
14
|
import { AppConfigurationService } from '../config/services/app-configuration.backend.service';
|
|
15
|
-
import {
|
|
15
|
+
import type { QueueAdapter } from './adapters/queue-adapter.backend.interface';
|
|
16
16
|
import { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';
|
|
17
17
|
import { JobPayload } from '@wildo-ai/saas-models';
|
|
18
18
|
/**
|
|
@@ -41,7 +41,7 @@ export declare class DomainQueueConsumerBackendService {
|
|
|
41
41
|
private _applicationId;
|
|
42
42
|
private readonly limiters;
|
|
43
43
|
private readonly consumingDomains;
|
|
44
|
-
constructor(appConfigService: AppConfigurationService, adapter:
|
|
44
|
+
constructor(appConfigService: AppConfigurationService, adapter: QueueAdapter, jobStatusTracking: JobStatusTrackingBackendService, logger: LoggerService);
|
|
45
45
|
/** Lazy getter for applicationId - avoids accessing config in constructor */
|
|
46
46
|
private get applicationId();
|
|
47
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-queue-consumer.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"domain-queue-consumer.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/domain-queue-consumer.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAG7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EACL,UAAU,EAOX,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAYD,qBACa,iCAAiC;IAQ1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbzB,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;gBAIxC,gBAAgB,EAAE,uBAAuB,EAEzC,OAAO,EAAE,YAAY,EAErB,iBAAiB,EAAE,+BAA+B,EAElD,MAAM,EAAE,aAAa;IAOxC,6EAA6E;IAC7E,OAAO,KAAK,aAAa,GAKxB;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmD3B;;;;;;OAMG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,EACzB,eAAe,CAAC,EAAE,qBAAqB,GACtC,OAAO,CAAC,IAAI,CAAC;IA8EhB;;OAEG;YACW,mBAAmB;IAqFjC;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;QACnC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI;IAcR;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;CAGhC"}
|
|
@@ -29,7 +29,6 @@ import { LoggerService } from '../monitoring/logger/services/logger.service.js';
|
|
|
29
29
|
import { projectCaughtErrorLogFields } from '../errors/utils/error-log-level-classification.backend.utils.js';
|
|
30
30
|
import { adoptCorrelationIdIntoCurrentFrame } from '../runtime/models/request-context.als.backend.js';
|
|
31
31
|
import { AppConfigurationService } from '../config/services/app-configuration.backend.service.js';
|
|
32
|
-
import { RabbitMQAdapterBackendService } from './adapters/rabbitmq-adapter.backend.service.js';
|
|
33
32
|
import { JobStatusTrackingBackendService } from './job-status-tracking.backend.service.js';
|
|
34
33
|
import { QueueNamingUtils, QueueVariant, getQueueCategory, JobRetryUtils, QUEUE_RETRY_DEFAULTS, } from '@wildo-ai/saas-models';
|
|
35
34
|
/**
|
|
@@ -317,9 +316,7 @@ DomainQueueConsumerBackendService = __decorate([
|
|
|
317
316
|
__param(1, inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)),
|
|
318
317
|
__param(2, inject(SAAS_SERVICE_TYPES.JobStatusTrackingService)),
|
|
319
318
|
__param(3, inject(SAAS_SERVICE_TYPES.Logger)),
|
|
320
|
-
__metadata("design:paramtypes", [AppConfigurationService,
|
|
321
|
-
RabbitMQAdapterBackendService,
|
|
322
|
-
JobStatusTrackingBackendService,
|
|
319
|
+
__metadata("design:paramtypes", [AppConfigurationService, Object, JobStatusTrackingBackendService,
|
|
323
320
|
LoggerService])
|
|
324
321
|
], DomainQueueConsumerBackendService);
|
|
325
322
|
export { DomainQueueConsumerBackendService };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-queue-consumer.backend.service.js","sourceRoot":"","sources":["../../../../src/queue/domain-queue-consumer.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Domain Queue Consumer Backend Service\n *\n * Consumes domain-specific queues (email, agents, rag, etc.) with rate limiting.\n * Uses Bottleneck for controlling throughput to external services.\n *\n * Domain queues are used for:\n * - Email sending (rate limited per provider)\n * - Agent interactions (rate limited per AI provider)\n * - RAG indexing (controlled throughput)\n * - Webhook deliveries (rate limited per endpoint)\n */\n\nimport { injectable, inject } from 'inversify';\nimport Bottleneck from 'bottleneck';\nimport type { ConsumeMessage, Channel } from 'amqplib';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { adoptCorrelationIdIntoCurrentFrame } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { RabbitMQAdapterBackendService, MessageHandler } from './adapters/rabbitmq-adapter.backend.service';\nimport { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';\nimport {\n JobPayload,\n QueueNamingUtils,\n QueueVariant,\n getQueueCategory,\n JobRetryUtils,\n QueueRetryConfig,\n QUEUE_RETRY_DEFAULTS,\n} from '@wildo-ai/saas-models';\n\n\n/**\n * Domain job handler signature.\n */\nexport type DomainJobHandler = (job: JobPayload) => Promise<any>;\n\n/**\n * Rate limit configuration for a domain.\n */\nexport interface DomainRateLimitConfig {\n /** Maximum concurrent jobs */\n maxConcurrent?: number;\n /** Minimum time between job starts (ms) */\n minTime?: number;\n /** Maximum jobs per window */\n reservoir?: number;\n /** Window size for reservoir refresh (ms) */\n reservoirRefreshInterval?: number;\n}\n\n/**\n * Default rate limit configuration.\n */\nconst DEFAULT_RATE_LIMIT: DomainRateLimitConfig = {\n maxConcurrent: 10,\n minTime: 0,\n reservoir: undefined,\n reservoirRefreshInterval: undefined,\n};\n\n@injectable()\nexport class DomainQueueConsumerBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private _applicationId: string | null = null;\n private readonly limiters: Map<string, Bottleneck> = new Map();\n private readonly consumingDomains: Set<string> = new Set();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)\n private readonly adapter: RabbitMQAdapterBackendService,\n @inject(SAAS_SERVICE_TYPES.JobStatusTrackingService)\n private readonly jobStatusTracking: JobStatusTrackingBackendService,\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n ) {\n this.logDebug = this.logger.debugByType('DomainQueueConsumerBackendService');\n this.logger.setDebugTypeLogging('DomainQueueConsumerBackendService', false);\n // Lazy-load applicationId to avoid accessing config before initialization\n }\n\n /** Lazy getter for applicationId - avoids accessing config in constructor */\n private get applicationId(): string {\n if (!this._applicationId) {\n this._applicationId = this.appConfigService.applicationId;\n }\n return this._applicationId;\n }\n\n /**\n * Get or create rate limiter for a domain.\n */\n private getLimiterForDomain(domainName: string, customConfig?: DomainRateLimitConfig): Bottleneck {\n const key = domainName;\n\n if (this.limiters.has(key)) {\n return this.limiters.get(key)!;\n }\n\n // Get domain configuration from registry\n const domainConfig = getQueueCategory(`domain-${domainName}`);\n\n // Merge configurations: custom > registry > default\n const config: DomainRateLimitConfig = {\n ...DEFAULT_RATE_LIMIT,\n ...(domainConfig?.rateLimit ? {\n maxConcurrent: domainConfig.concurrency,\n reservoir: domainConfig.rateLimit.max,\n reservoirRefreshInterval: domainConfig.rateLimit.windowMs,\n } : {}),\n ...customConfig,\n };\n\n const limiter = new Bottleneck({\n maxConcurrent: config.maxConcurrent,\n minTime: config.minTime,\n reservoir: config.reservoir,\n reservoirRefreshAmount: config.reservoir,\n reservoirRefreshInterval: config.reservoirRefreshInterval,\n });\n\n // Log rate limiting events\n limiter.on('depleted', () => {\n this.logger.warn('Rate limit reservoir depleted', { domainName });\n });\n\n limiter.on('error', (error) => {\n this.logger.error('Bottleneck error', {\n domainName,\n ...projectCaughtErrorLogFields(error),\n });\n });\n\n this.limiters.set(key, limiter);\n\n this.logDebug('Rate limiter created for domain', {\n domainName,\n config,\n });\n\n return limiter;\n }\n\n /**\n * Start consuming a domain queue with rate limiting.\n *\n * @param domainName - Domain name (e.g., 'email', 'agents', 'rag')\n * @param handler - Function to process each job\n * @param rateLimitConfig - Optional rate limit overrides\n */\n async consumeDomain(\n domainName: string,\n handler: DomainJobHandler,\n rateLimitConfig?: DomainRateLimitConfig\n ): Promise<void> {\n if (this.consumingDomains.has(domainName)) {\n this.logger.warn('Already consuming domain queue', { domainName });\n return;\n }\n\n const queueName = QueueNamingUtils.buildDomainQueueName(this.applicationId, domainName);\n // Domain queues have no priority variant, so the DLQ is a direct suffix of\n // the queue name (enum-referenced, not a magic string).\n const deadLetterQueueName = `${queueName}.${QueueVariant.DEADLETTER}`;\n const limiter = this.getLimiterForDomain(domainName, rateLimitConfig);\n\n // Assert the terminal dead-letter queue first (the main queue below names it\n // as its dead-letter target; no consumer, no DLX of its own).\n await this.adapter.assertQueue(deadLetterQueueName, { durable: true });\n\n // Assert the domain queue, dead-lettering permanent failures to the DLQ. When\n // `executeWithTracking` exhausts retries (or a message is unparseable) it\n // `nack(false,false)`s — the DLX parks the message in `<queue>.deadletter`\n // instead of discarding it. Default exchange ('') routed by queue name,\n // mirroring the operations queues and the retry delay queues.\n await this.adapter.assertQueue(queueName, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: deadLetterQueueName,\n });\n\n // Create message handler that uses rate limiting\n const messageHandler: MessageHandler = async (msg: ConsumeMessage, channel: Channel) => {\n let job: JobPayload;\n\n try {\n job = JSON.parse(msg.content.toString());\n } catch (parseError) {\n this.logger.error('Failed to parse domain job message', {\n domainName,\n ...projectCaughtErrorLogFields(parseError),\n });\n channel.nack(msg, false, false);\n return;\n }\n\n // This domain job belongs to the trace of the request that enqueued it — adopt that request's\n // `originCorrelationId` into the frame the adapter established, exactly as the operations lane\n // does. Without it the domain lane (email / agents / rag) would execute under an unrelated fresh\n // id and its logs and audit rows would not join back to the originating request. Absent or\n // malformed id ⇒ the frame keeps its fresh one, so the job stays independently traceable.\n adoptCorrelationIdIntoCurrentFrame(job.originCorrelationId);\n\n // Schedule through rate limiter\n try {\n await limiter.schedule(\n { id: job.jobId },\n async () => {\n await this.executeWithTracking(job, handler, msg, channel, queueName);\n }\n );\n } catch (error) {\n // Rate limiter error (e.g., shutdown)\n this.logger.error('Rate limiter scheduling failed', {\n domainName,\n jobId: job.jobId,\n ...projectCaughtErrorLogFields(error),\n });\n channel.nack(msg, false, true); // Requeue on limiter failure\n }\n };\n\n // Start consuming\n await this.adapter.consume(queueName, messageHandler);\n this.consumingDomains.add(domainName);\n\n this.logDebug('Domain queue consumer started', {\n domainName,\n queueName,\n });\n }\n\n /**\n * Execute job with status tracking.\n */\n private async executeWithTracking(\n job: JobPayload,\n handler: DomainJobHandler,\n msg: ConsumeMessage,\n channel: Channel,\n sourceQueueName: string\n ): Promise<void> {\n const startTime = Date.now();\n\n try {\n // Mark started\n await this.jobStatusTracking.markStarted(job.jobId, 'domain-worker');\n\n // Execute handler\n await handler(job);\n\n // Mark completed\n await this.jobStatusTracking.markCompleted(job.jobId);\n\n // Acknowledge\n channel.ack(msg);\n\n this.logDebug('Domain job completed', {\n jobId: job.jobId,\n domainCategory: job.domainCategory,\n durationMs: Date.now() - startTime,\n });\n\n } catch (error) {\n this.logger.error('Domain job failed', {\n jobId: job.jobId,\n domainCategory: job.domainCategory,\n ...projectCaughtErrorLogFields(error),\n durationMs: Date.now() - startTime,\n });\n\n // Check retry count\n const currentRetry = job.retryCount ?? 0;\n const maxRetries = job.maxRetries ?? QUEUE_RETRY_DEFAULTS.maxRetries;\n\n if (currentRetry < maxRetries) {\n // Durable backoff retry. NOTE: we must NOT `nack(requeue)` the original —\n // that redelivers the SAME message body with an unchanged retryCount,\n // producing a tight infinite requeue loop on a persistently-failing job.\n // Instead publish an incremented copy through a broker delay queue and ACK\n // the original (mirrors the operations consumer).\n const backoff = job.retryConfig;\n const retryConfig: QueueRetryConfig = {\n retryPolicy: backoff?.retryPolicy ?? QUEUE_RETRY_DEFAULTS.retryPolicy,\n maxRetries,\n baseDelayMs: backoff?.baseDelayMs ?? QUEUE_RETRY_DEFAULTS.baseDelayMs,\n maxDelayMs: backoff?.maxDelayMs ?? QUEUE_RETRY_DEFAULTS.maxDelayMs,\n timeoutMs: job.timeoutMs ?? QUEUE_RETRY_DEFAULTS.timeoutMs,\n };\n const delay = JobRetryUtils.calculateDelay(retryConfig, currentRetry);\n const retryJob: JobPayload = { ...job, retryCount: currentRetry + 1 };\n\n try {\n await this.adapter.scheduleDelayedRetry(sourceQueueName, retryJob, delay);\n channel.ack(msg);\n this.logDebug('Domain job retry scheduled (durable delay queue)', {\n jobId: job.jobId,\n domainCategory: job.domainCategory,\n retryCount: currentRetry + 1,\n maxRetries,\n delayMs: delay,\n });\n } catch (scheduleError) {\n // Could not hand off to the broker — requeue original rather than lose it.\n this.logger.error('Failed to schedule domain retry; requeueing original', {\n jobId: job.jobId,\n ...projectCaughtErrorLogFields(scheduleError),\n });\n channel.nack(msg, false, true);\n }\n } else {\n // Max retries exhausted → dead-letter. The domain queue's DLX parks the\n // message in `<queue>.deadletter` (nack without requeue) for inspection;\n // record the terminal DEAD_LETTER tracking state first.\n await this.jobStatusTracking.markDeadLettered(job.jobId);\n channel.nack(msg, false, false);\n }\n }\n }\n\n /**\n * Stop consuming a domain queue.\n */\n async stopDomain(domainName: string): Promise<void> {\n if (!this.consumingDomains.has(domainName)) {\n return;\n }\n\n const queueName = QueueNamingUtils.buildDomainQueueName(this.applicationId, domainName);\n await this.adapter.cancelConsumer(queueName);\n\n // Stop the rate limiter\n const limiter = this.limiters.get(domainName);\n if (limiter) {\n await limiter.stop({ dropWaitingJobs: false });\n this.limiters.delete(domainName);\n }\n\n this.consumingDomains.delete(domainName);\n\n this.logDebug('Domain queue consumer stopped', { domainName });\n }\n\n /**\n * Stop all domain consumers.\n */\n async stopAll(): Promise<void> {\n const domains = [...this.consumingDomains];\n\n for (const domainName of domains) {\n await this.stopDomain(domainName);\n }\n\n this.logDebug('All domain queue consumers stopped', {\n domainCount: domains.length,\n });\n }\n\n /**\n * Get rate limiter statistics for a domain.\n */\n getLimiterStats(domainName: string): {\n running: number;\n queued: number;\n done: number;\n } | null {\n const limiter = this.limiters.get(domainName);\n if (!limiter) {\n return null;\n }\n\n const counts = limiter.counts();\n return {\n running: counts.RUNNING,\n queued: counts.QUEUED,\n done: counts.DONE,\n };\n }\n\n /**\n * Get list of consuming domains.\n */\n getConsumingDomains(): string[] {\n return [...this.consumingDomains];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"domain-queue-consumer.backend.service.js","sourceRoot":"","sources":["../../../src/queue/domain-queue-consumer.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Domain Queue Consumer Backend Service\n *\n * Consumes domain-specific queues (email, agents, rag, etc.) with rate limiting.\n * Uses Bottleneck for controlling throughput to external services.\n *\n * Domain queues are used for:\n * - Email sending (rate limited per provider)\n * - Agent interactions (rate limited per AI provider)\n * - RAG indexing (controlled throughput)\n * - Webhook deliveries (rate limited per endpoint)\n */\n\nimport { injectable, inject } from 'inversify';\nimport Bottleneck from 'bottleneck';\nimport type { ConsumeMessage, Channel } from 'amqplib';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { adoptCorrelationIdIntoCurrentFrame } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport type { QueueAdapter } from './adapters/queue-adapter.backend.interface';\nimport type { MessageHandler } from './adapters/queue-adapter.backend.interface';\nimport { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';\nimport {\n JobPayload,\n QueueNamingUtils,\n QueueVariant,\n getQueueCategory,\n JobRetryUtils,\n QueueRetryConfig,\n QUEUE_RETRY_DEFAULTS,\n} from '@wildo-ai/saas-models';\n\n\n/**\n * Domain job handler signature.\n */\nexport type DomainJobHandler = (job: JobPayload) => Promise<any>;\n\n/**\n * Rate limit configuration for a domain.\n */\nexport interface DomainRateLimitConfig {\n /** Maximum concurrent jobs */\n maxConcurrent?: number;\n /** Minimum time between job starts (ms) */\n minTime?: number;\n /** Maximum jobs per window */\n reservoir?: number;\n /** Window size for reservoir refresh (ms) */\n reservoirRefreshInterval?: number;\n}\n\n/**\n * Default rate limit configuration.\n */\nconst DEFAULT_RATE_LIMIT: DomainRateLimitConfig = {\n maxConcurrent: 10,\n minTime: 0,\n reservoir: undefined,\n reservoirRefreshInterval: undefined,\n};\n\n@injectable()\nexport class DomainQueueConsumerBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private _applicationId: string | null = null;\n private readonly limiters: Map<string, Bottleneck> = new Map();\n private readonly consumingDomains: Set<string> = new Set();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.RabbitMQAdapterService)\n private readonly adapter: QueueAdapter,\n @inject(SAAS_SERVICE_TYPES.JobStatusTrackingService)\n private readonly jobStatusTracking: JobStatusTrackingBackendService,\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n ) {\n this.logDebug = this.logger.debugByType('DomainQueueConsumerBackendService');\n this.logger.setDebugTypeLogging('DomainQueueConsumerBackendService', false);\n // Lazy-load applicationId to avoid accessing config before initialization\n }\n\n /** Lazy getter for applicationId - avoids accessing config in constructor */\n private get applicationId(): string {\n if (!this._applicationId) {\n this._applicationId = this.appConfigService.applicationId;\n }\n return this._applicationId;\n }\n\n /**\n * Get or create rate limiter for a domain.\n */\n private getLimiterForDomain(domainName: string, customConfig?: DomainRateLimitConfig): Bottleneck {\n const key = domainName;\n\n if (this.limiters.has(key)) {\n return this.limiters.get(key)!;\n }\n\n // Get domain configuration from registry\n const domainConfig = getQueueCategory(`domain-${domainName}`);\n\n // Merge configurations: custom > registry > default\n const config: DomainRateLimitConfig = {\n ...DEFAULT_RATE_LIMIT,\n ...(domainConfig?.rateLimit ? {\n maxConcurrent: domainConfig.concurrency,\n reservoir: domainConfig.rateLimit.max,\n reservoirRefreshInterval: domainConfig.rateLimit.windowMs,\n } : {}),\n ...customConfig,\n };\n\n const limiter = new Bottleneck({\n maxConcurrent: config.maxConcurrent,\n minTime: config.minTime,\n reservoir: config.reservoir,\n reservoirRefreshAmount: config.reservoir,\n reservoirRefreshInterval: config.reservoirRefreshInterval,\n });\n\n // Log rate limiting events\n limiter.on('depleted', () => {\n this.logger.warn('Rate limit reservoir depleted', { domainName });\n });\n\n limiter.on('error', (error) => {\n this.logger.error('Bottleneck error', {\n domainName,\n ...projectCaughtErrorLogFields(error),\n });\n });\n\n this.limiters.set(key, limiter);\n\n this.logDebug('Rate limiter created for domain', {\n domainName,\n config,\n });\n\n return limiter;\n }\n\n /**\n * Start consuming a domain queue with rate limiting.\n *\n * @param domainName - Domain name (e.g., 'email', 'agents', 'rag')\n * @param handler - Function to process each job\n * @param rateLimitConfig - Optional rate limit overrides\n */\n async consumeDomain(\n domainName: string,\n handler: DomainJobHandler,\n rateLimitConfig?: DomainRateLimitConfig\n ): Promise<void> {\n if (this.consumingDomains.has(domainName)) {\n this.logger.warn('Already consuming domain queue', { domainName });\n return;\n }\n\n const queueName = QueueNamingUtils.buildDomainQueueName(this.applicationId, domainName);\n // Domain queues have no priority variant, so the DLQ is a direct suffix of\n // the queue name (enum-referenced, not a magic string).\n const deadLetterQueueName = `${queueName}.${QueueVariant.DEADLETTER}`;\n const limiter = this.getLimiterForDomain(domainName, rateLimitConfig);\n\n // Assert the terminal dead-letter queue first (the main queue below names it\n // as its dead-letter target; no consumer, no DLX of its own).\n await this.adapter.assertQueue(deadLetterQueueName, { durable: true });\n\n // Assert the domain queue, dead-lettering permanent failures to the DLQ. When\n // `executeWithTracking` exhausts retries (or a message is unparseable) it\n // `nack(false,false)`s — the DLX parks the message in `<queue>.deadletter`\n // instead of discarding it. Default exchange ('') routed by queue name,\n // mirroring the operations queues and the retry delay queues.\n await this.adapter.assertQueue(queueName, {\n durable: true,\n deadLetterExchange: '',\n deadLetterRoutingKey: deadLetterQueueName,\n });\n\n // Create message handler that uses rate limiting\n const messageHandler: MessageHandler = async (msg: ConsumeMessage, channel: Channel) => {\n let job: JobPayload;\n\n try {\n job = JSON.parse(msg.content.toString());\n } catch (parseError) {\n this.logger.error('Failed to parse domain job message', {\n domainName,\n ...projectCaughtErrorLogFields(parseError),\n });\n channel.nack(msg, false, false);\n return;\n }\n\n // This domain job belongs to the trace of the request that enqueued it — adopt that request's\n // `originCorrelationId` into the frame the adapter established, exactly as the operations lane\n // does. Without it the domain lane (email / agents / rag) would execute under an unrelated fresh\n // id and its logs and audit rows would not join back to the originating request. Absent or\n // malformed id ⇒ the frame keeps its fresh one, so the job stays independently traceable.\n adoptCorrelationIdIntoCurrentFrame(job.originCorrelationId);\n\n // Schedule through rate limiter\n try {\n await limiter.schedule(\n { id: job.jobId },\n async () => {\n await this.executeWithTracking(job, handler, msg, channel, queueName);\n }\n );\n } catch (error) {\n // Rate limiter error (e.g., shutdown)\n this.logger.error('Rate limiter scheduling failed', {\n domainName,\n jobId: job.jobId,\n ...projectCaughtErrorLogFields(error),\n });\n channel.nack(msg, false, true); // Requeue on limiter failure\n }\n };\n\n // Start consuming\n await this.adapter.consume(queueName, messageHandler);\n this.consumingDomains.add(domainName);\n\n this.logDebug('Domain queue consumer started', {\n domainName,\n queueName,\n });\n }\n\n /**\n * Execute job with status tracking.\n */\n private async executeWithTracking(\n job: JobPayload,\n handler: DomainJobHandler,\n msg: ConsumeMessage,\n channel: Channel,\n sourceQueueName: string\n ): Promise<void> {\n const startTime = Date.now();\n\n try {\n // Mark started\n await this.jobStatusTracking.markStarted(job.jobId, 'domain-worker');\n\n // Execute handler\n await handler(job);\n\n // Mark completed\n await this.jobStatusTracking.markCompleted(job.jobId);\n\n // Acknowledge\n channel.ack(msg);\n\n this.logDebug('Domain job completed', {\n jobId: job.jobId,\n domainCategory: job.domainCategory,\n durationMs: Date.now() - startTime,\n });\n\n } catch (error) {\n this.logger.error('Domain job failed', {\n jobId: job.jobId,\n domainCategory: job.domainCategory,\n ...projectCaughtErrorLogFields(error),\n durationMs: Date.now() - startTime,\n });\n\n // Check retry count\n const currentRetry = job.retryCount ?? 0;\n const maxRetries = job.maxRetries ?? QUEUE_RETRY_DEFAULTS.maxRetries;\n\n if (currentRetry < maxRetries) {\n // Durable backoff retry. NOTE: we must NOT `nack(requeue)` the original —\n // that redelivers the SAME message body with an unchanged retryCount,\n // producing a tight infinite requeue loop on a persistently-failing job.\n // Instead publish an incremented copy through a broker delay queue and ACK\n // the original (mirrors the operations consumer).\n const backoff = job.retryConfig;\n const retryConfig: QueueRetryConfig = {\n retryPolicy: backoff?.retryPolicy ?? QUEUE_RETRY_DEFAULTS.retryPolicy,\n maxRetries,\n baseDelayMs: backoff?.baseDelayMs ?? QUEUE_RETRY_DEFAULTS.baseDelayMs,\n maxDelayMs: backoff?.maxDelayMs ?? QUEUE_RETRY_DEFAULTS.maxDelayMs,\n timeoutMs: job.timeoutMs ?? QUEUE_RETRY_DEFAULTS.timeoutMs,\n };\n const delay = JobRetryUtils.calculateDelay(retryConfig, currentRetry);\n const retryJob: JobPayload = { ...job, retryCount: currentRetry + 1 };\n\n try {\n await this.adapter.scheduleDelayedRetry(sourceQueueName, retryJob, delay);\n channel.ack(msg);\n this.logDebug('Domain job retry scheduled (durable delay queue)', {\n jobId: job.jobId,\n domainCategory: job.domainCategory,\n retryCount: currentRetry + 1,\n maxRetries,\n delayMs: delay,\n });\n } catch (scheduleError) {\n // Could not hand off to the broker — requeue original rather than lose it.\n this.logger.error('Failed to schedule domain retry; requeueing original', {\n jobId: job.jobId,\n ...projectCaughtErrorLogFields(scheduleError),\n });\n channel.nack(msg, false, true);\n }\n } else {\n // Max retries exhausted → dead-letter. The domain queue's DLX parks the\n // message in `<queue>.deadletter` (nack without requeue) for inspection;\n // record the terminal DEAD_LETTER tracking state first.\n await this.jobStatusTracking.markDeadLettered(job.jobId);\n channel.nack(msg, false, false);\n }\n }\n }\n\n /**\n * Stop consuming a domain queue.\n */\n async stopDomain(domainName: string): Promise<void> {\n if (!this.consumingDomains.has(domainName)) {\n return;\n }\n\n const queueName = QueueNamingUtils.buildDomainQueueName(this.applicationId, domainName);\n await this.adapter.cancelConsumer(queueName);\n\n // Stop the rate limiter\n const limiter = this.limiters.get(domainName);\n if (limiter) {\n await limiter.stop({ dropWaitingJobs: false });\n this.limiters.delete(domainName);\n }\n\n this.consumingDomains.delete(domainName);\n\n this.logDebug('Domain queue consumer stopped', { domainName });\n }\n\n /**\n * Stop all domain consumers.\n */\n async stopAll(): Promise<void> {\n const domains = [...this.consumingDomains];\n\n for (const domainName of domains) {\n await this.stopDomain(domainName);\n }\n\n this.logDebug('All domain queue consumers stopped', {\n domainCount: domains.length,\n });\n }\n\n /**\n * Get rate limiter statistics for a domain.\n */\n getLimiterStats(domainName: string): {\n running: number;\n queued: number;\n done: number;\n } | null {\n const limiter = this.limiters.get(domainName);\n if (!limiter) {\n return null;\n }\n\n const counts = limiter.counts();\n return {\n running: counts.RUNNING,\n queued: counts.QUEUED,\n done: counts.DONE,\n };\n }\n\n /**\n * Get list of consuming domains.\n */\n getConsumingDomains(): string[] {\n return [...this.consumingDomains];\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-completion-registry.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"job-completion-registry.backend.service.d.ts","sourceRoot":"","sources":["../../../src/queue/job-completion-registry.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAE9G,OAAO,EACL,SAAS,EAET,OAAO,EAGR,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qBAAqB;IACrB,MAAM,EAAE,SAAS,CAAC;IAElB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAapF,qBACa,mCAAmC;IAO5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,gBAAgB,CAAK;gBAIV,MAAM,EAAE,aAAa,EAErB,YAAY,EAAE,0BAA0B;IAM3D;;;;;;;OAOG;IACH,eAAe,CACb,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAClD,MAAM;IA0BT;;OAEG;IACH,IAAI,CACF,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,GAAE,MAAU,GACnB,MAAM;IAIT;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAYzC;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM;IAiBpE;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC5D;;OAEG;IACH,OAAO,CAAC,aAAa;IAsDrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgCrB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;CAIzB"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { LoggerService } from '../monitoring/logger/services/logger.service';
|
|
13
13
|
import { AppConfigurationService } from '../config/services/app-configuration.backend.service';
|
|
14
14
|
import { ErrorBuilderBackendService } from '../errors/services/error-builder.backend.service';
|
|
15
|
-
import {
|
|
15
|
+
import type { QueueAdapter } from './adapters/queue-adapter.backend.interface';
|
|
16
16
|
import { JobExecutorBackendService } from './job-executor.backend.service';
|
|
17
17
|
import { JobStatusTrackingBackendService } from './job-status-tracking.backend.service';
|
|
18
18
|
import { JobCompletionRegistryBackendService } from './job-completion-registry.backend.service';
|
|
@@ -51,7 +51,7 @@ export declare class JobConsumerBackendService {
|
|
|
51
51
|
private readonly workerIdentity;
|
|
52
52
|
private isConsuming;
|
|
53
53
|
private consumingQueues;
|
|
54
|
-
constructor(appConfigService: AppConfigurationService, adapter:
|
|
54
|
+
constructor(appConfigService: AppConfigurationService, adapter: QueueAdapter, jobExecutor: JobExecutorBackendService, jobStatusTracking: JobStatusTrackingBackendService, completionRegistry: JobCompletionRegistryBackendService, shutdownManager: WorkerShutdownManagerBackendService, scheduledMessageVerifier: ScheduledMessageVerifierBackendService, logger: LoggerService, errorBuilder: ErrorBuilderBackendService);
|
|
55
55
|
/** Lazy getter for applicationId - avoids accessing config in constructor */
|
|
56
56
|
private get applicationId();
|
|
57
57
|
/**
|