@wildo-ai/saas-backend-lib 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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 +199 -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/controllers/controller-resource.backend.service.d.ts +14 -3
- 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 +138 -24
- 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 +3 -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 +8 -3
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.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 +207 -21
- 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-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 +174 -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 +48 -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 +102 -30
- 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-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/odata-query-compiler.backend.js +16 -0
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
- 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 +96 -32
- 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 +3 -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-repository.backend.service.js +32 -7
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
- 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/introspection/introspection-resource-source.backend.port.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +80 -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 +298 -23
- 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 +71 -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 +85 -5
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
- 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 +146 -4
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.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-implementation-coverage.backend.utils.d.ts +3 -26
- 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-implementation-coverage.backend.utils.js +3 -68
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.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 +533 -43
- 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/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/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 +474 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- 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/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 +54 -13
- 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 +38 -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 +67 -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/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 +18 -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 +106 -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-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 +260 -26
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.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/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/services/audit-event-dispatcher.backend.service.d.ts +263 -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 +376 -58
- 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 +264 -7
- 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 +414 -5
- 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 +16 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +140 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
- 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 +65 -6
- 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 +45 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.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/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +146 -46
- 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/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/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 +68 -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 +43 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +52 -3
- 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 +25 -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 +41 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
- package/dist/esm/databases/models/filter.backend.schemas.js.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-authorization.backend.service.js +20 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.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/redis.service.d.ts +27 -0
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.js +29 -0
- package/dist/esm/databases/services/redis.service.js.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 +134 -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/controllers/external-data-admin.backend.contracts.d.ts +41 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +72 -4
- 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 +60 -19
- 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/external-data-transform.backend.js +7 -1
- package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.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 +256 -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 +333 -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 +216 -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.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
- 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-providers-registry.backend.service.d.ts +306 -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 +539 -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.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts +24 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +83 -11
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
- 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 +76 -13
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
- 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 +36 -28
- package/dist/esm/files/services/file-operation-handler.backend.service.js.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 +197 -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 +167 -8
- 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 +214 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js +566 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
- package/dist/esm/files/services/files.backend.service.d.ts +87 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +252 -19
- package/dist/esm/files/services/files.backend.service.js.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-provider.types.d.ts +16 -10
- 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/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/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-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js +12 -0
- package/dist/esm/files/utils/file-uploader.utils.js.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/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/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.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-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 +200 -44
- 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/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/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.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 +88 -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 +333 -31
- 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/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/agents.backend.service.d.ts +107 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +519 -56
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -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 +79 -16
- 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 +368 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- 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 +151 -41
- 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 +308 -143
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.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/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/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/index.d.ts +15 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +45 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +82 -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 +21 -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 +32 -4
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +84 -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 +235 -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 +64 -2
- 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 +152 -6
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.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/logger.service.d.ts +12 -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/observability/audit-observation-emission.backend.d.ts +309 -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 +385 -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/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/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-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-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
- 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 +60 -4
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
- 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/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 +108 -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 +432 -101
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
- 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 +54 -7
- 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 +5 -5
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -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 +18 -8
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.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 +20 -18
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.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-purge.batch.backend.service.d.ts +2 -2
- 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/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-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.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/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-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/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/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/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/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 +88 -15
- package/dist/esm/requests/service/websocket.service.js.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/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/services/resource-id.backend.service.js +3 -3
- package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -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 +91 -7
- package/dist/esm/resources/services/resources-registry.backend.service.js.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/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.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 +181 -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 +47 -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 +343 -77
- package/dist/esm/runtime/services/start-application.backend.service.js.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/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -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/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/jwt.backend.schemas.d.ts +3 -23
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -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/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/anonymous-session.backend.service.d.ts +190 -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 +377 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -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 +77 -2
- 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-mfa.backend.service.js +5 -3
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.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.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -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/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-token-issuer.backend.service.d.ts +41 -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 +87 -4
- 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/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 +283 -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/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/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-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/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/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/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/initiator-organization-confinement.backend.js +24 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.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/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 +77 -3
- 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 +117 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
- 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 +93 -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 +95 -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 +124 -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 +142 -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 +175 -14
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +385 -49
- 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 +161 -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 +512 -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 +59 -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 +191 -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 +385 -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 +266 -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 +111 -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 +107 -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 +195 -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 +387 -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 +62 -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/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
- 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.backend.resources-config.schemas.js +12 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +41 -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 +83 -20
- 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/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
- package/dist/esm/security/jwt/services/jwt.backend.service.js.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/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/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/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/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -9
- package/dist/esm/.builder.pid +0 -9
|
@@ -8,22 +8,55 @@ import { AppConfigurationService } from '../../config/services/app-configuration
|
|
|
8
8
|
import { FileStorageRouterBackendService } from '../../files/storage/file-storage-router.backend.service';
|
|
9
9
|
import type { HealthReadinessContributorBackendService } from '../../runtime/services/health-readiness-contributor.backend.interface';
|
|
10
10
|
/**
|
|
11
|
-
* Readiness check response
|
|
11
|
+
* Readiness check response.
|
|
12
|
+
*
|
|
13
|
+
* ## Why the component breakdown is ON the wire (#498)
|
|
14
|
+
*
|
|
15
|
+
* The body used to carry `status`/`timestamp`/`uptime`/`version` only, on the reasoning that a probe
|
|
16
|
+
* body is read by orchestrators rather than people and the breakdown belongs in the log stream. That
|
|
17
|
+
* reasoning failed in practice, and it failed measurably: the breakdown was reachable only through a
|
|
18
|
+
* debug channel `AbstractControllerBackendService` disables at construction, so a 503 was
|
|
19
|
+
* unattributable without a code change — `grep "Readiness check completed"` over a full dev session
|
|
20
|
+
* returned ZERO lines while two services were answering 503 (measured 2026-08-12). Moving the FAILURE
|
|
21
|
+
* log to `warn` fixed half of it; this is the other half, so an operator can ask the endpoint rather
|
|
22
|
+
* than the log.
|
|
23
|
+
*
|
|
24
|
+
* ## What is deliberately NOT here
|
|
25
|
+
*
|
|
26
|
+
* `errors` stays log-only. `/health/ready` is typically unauthenticated, and an error string carries
|
|
27
|
+
* whatever the driver put in it — a hostname, a port, a credentials path. Component NAMES and coarse
|
|
28
|
+
* statuses say which dependency is unhappy, which is what a person debugging needs and what a
|
|
29
|
+
* Kubernetes-style probe conventionally exposes; the text that says WHY stays where it is already
|
|
30
|
+
* warned, beside the rest of the breakdown.
|
|
12
31
|
*/
|
|
13
32
|
interface ReadinessResponse {
|
|
14
33
|
status: 'healthy' | 'unhealthy' | 'degraded';
|
|
15
34
|
timestamp: string;
|
|
16
35
|
uptime: number;
|
|
17
36
|
version: string;
|
|
37
|
+
/** Per-component coarse status, keyed by component name. Never carries error text. */
|
|
38
|
+
components: Record<string, string>;
|
|
39
|
+
/** The subset of `components` that is not healthy — the answer to "which one". */
|
|
40
|
+
failing: readonly string[];
|
|
18
41
|
}
|
|
19
42
|
/**
|
|
20
43
|
* Sanitized result of the same bounded dependency evaluation served by
|
|
21
|
-
* `/health/ready`.
|
|
22
|
-
*
|
|
44
|
+
* `/health/ready`.
|
|
45
|
+
*
|
|
46
|
+
* Component NAMES and coarse statuses are carried (#498) — an operator, and the e2e lane that
|
|
47
|
+
* asserts on a dependency going red, both need to know WHICH component is unhappy. Driver ERROR
|
|
48
|
+
* TEXT is not, and that is the line: a name is a fact about this runtime's declared dependencies,
|
|
49
|
+
* while an error string carries whatever the driver put in it — a hostname, a port, a credentials
|
|
50
|
+
* path — onto a probe that is typically unauthenticated. The error text stays in the WARN beside
|
|
51
|
+
* the rest of the breakdown.
|
|
23
52
|
*/
|
|
24
53
|
export interface ApplicationRuntimeReadinessEvaluation {
|
|
25
54
|
readonly ready: boolean;
|
|
26
55
|
readonly status: ReadinessResponse['status'];
|
|
56
|
+
/** Per-component coarse status, keyed by component name. Never carries error text. */
|
|
57
|
+
readonly components: Readonly<Record<string, string>>;
|
|
58
|
+
/** The subset of `components` that is not healthy — the answer to "which one". */
|
|
59
|
+
readonly failing: readonly string[];
|
|
27
60
|
}
|
|
28
61
|
/**
|
|
29
62
|
* Health Controller Backend Service
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-controller.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/controllers/health-controller.backend.service.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAC5I,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAEvG,OAAO,EAAE,cAAc,EAAoB,MAAM,uDAAuD,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAE/G,OAAO,EAAE,+BAA+B,EAAE,MAAM,sEAAsE,CAAC;AAEvH,OAAO,KAAK,EAAE,wCAAwC,EAA6B,MAAM,oFAAoF,CAAC;AAa9K
|
|
1
|
+
{"version":3,"file":"health-controller.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/controllers/health-controller.backend.service.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAC5I,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAEvG,OAAO,EAAE,cAAc,EAAoB,MAAM,uDAAuD,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAE/G,OAAO,EAAE,+BAA+B,EAAE,MAAM,sEAAsE,CAAC;AAEvH,OAAO,KAAK,EAAE,wCAAwC,EAA6B,MAAM,oFAAoF,CAAC;AAa9K;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,UAAU,iBAAiB;IACzB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kFAAkF;IAClF,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAYD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,sFAAsF;IACtF,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,8BAA+B,SAAQ,gCAAgC;IAWrC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAEhF,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAd9C,4FAA4F;IAC5F,OAAO,CAAC,6BAA6B,CAAuB;IAC5D,OAAO,CAAC,4BAA4B,CAAK;IACzC,gGAAgG;IAChG,OAAO,CAAC,8BAA8B,CAAK;gBAGN,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EACxC,YAAY,EAAE,mBAAmB,EACrB,cAAc,EAAE,cAAc,EAC5B,gBAAgB,EAAE,uBAAuB,EACxC,iBAAiB,EAAE,+BAA+B,EAEhG,0BAA0B,CAAC,EAAE,wCAAwC;IAKxF;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAuB1C;;;OAGG;IACI,sBAAsB,IAAI,MAAM;IAIvC;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAU7B;;;OAGG;YACW,cAAc;IAW5B;;;OAGG;YACW,eAAe;IAe7B;;;;;OAKG;IACU,iBAAiB,IAAI,OAAO,CAAC,qCAAqC,CAAC;IAuJhF;;;;;OAKG;YACW,wBAAwB;YA0BxB,yBAAyB;IAyBvC;;OAEG;IACH;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;YAUjB,YAAY;IAoB1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;YACW,YAAY;IAuB1B;;OAEG;IACH,OAAO,CAAC,cAAc;CAOvB"}
|
|
@@ -135,7 +135,9 @@ let HealthControllerBackendService = class HealthControllerBackendService extend
|
|
|
135
135
|
status: readiness.status,
|
|
136
136
|
timestamp: new Date().toISOString(),
|
|
137
137
|
uptime: process.uptime(),
|
|
138
|
-
version: process.env.npm_package_version || '1.0.0'
|
|
138
|
+
version: process.env.npm_package_version || '1.0.0',
|
|
139
|
+
components: readiness.components,
|
|
140
|
+
failing: readiness.failing,
|
|
139
141
|
};
|
|
140
142
|
res.status(readiness.ready ? 200 : 503).json(response);
|
|
141
143
|
}
|
|
@@ -182,29 +184,41 @@ let HealthControllerBackendService = class HealthControllerBackendService extend
|
|
|
182
184
|
appConfigHealth.status === 'unhealthy' ||
|
|
183
185
|
storageHealth.status === 'unhealthy' ||
|
|
184
186
|
additionalDependencyHealth.status === 'unhealthy';
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
+
const additionalDependencyName = this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency';
|
|
188
|
+
/*
|
|
189
|
+
* ONE component map, read by both the WARN below and the HTTP response (#498). Two hand-kept
|
|
190
|
+
* copies of the same four components is exactly the shape that drifts — an operator reading the
|
|
191
|
+
* log and an operator reading the probe must not be told different things about the same runtime.
|
|
192
|
+
*
|
|
193
|
+
* The parenthetical suffixes matter and are safe to publish: "healthy" on a runtime that never
|
|
194
|
+
* checked MongoDB is true and useless, while "healthy (skipped - no MongoDB configured for this
|
|
195
|
+
* runtime)" is the answer to the question the reader actually has. Nothing here is derived from a
|
|
196
|
+
* driver message.
|
|
197
|
+
*/
|
|
198
|
+
const components = {
|
|
187
199
|
mongodb: mongoHealth.status + (isPlatformService
|
|
188
200
|
? ' (skipped - platform service)'
|
|
189
201
|
: mongoIsADependency ? '' : ' (skipped - no MongoDB configured for this runtime)'),
|
|
190
202
|
appConfig: appConfigHealth.status,
|
|
191
203
|
storage: storageHealth.status + (!this.fileStorageRouter.isConfigured() ? ' (not configured)' : ''),
|
|
192
|
-
[
|
|
204
|
+
[additionalDependencyName]: additionalDependencyHealth.status,
|
|
205
|
+
};
|
|
206
|
+
const breakdown = {
|
|
207
|
+
isPlatformService,
|
|
208
|
+
...components,
|
|
193
209
|
overall: allHealthy ? 'healthy' : anyUnhealthy ? 'unhealthy' : 'degraded',
|
|
194
210
|
// Named per component so a reader can see WHICH failed without correlating.
|
|
195
211
|
failing: [
|
|
196
212
|
...(mongoHealth.status !== 'healthy' ? ['mongodb'] : []),
|
|
197
213
|
...(appConfigHealth.status !== 'healthy' ? ['appConfig'] : []),
|
|
198
214
|
...(storageHealth.status !== 'healthy' ? ['storage'] : []),
|
|
199
|
-
...(additionalDependencyHealth.status !== 'healthy'
|
|
200
|
-
? [this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency']
|
|
201
|
-
: []),
|
|
215
|
+
...(additionalDependencyHealth.status !== 'healthy' ? [additionalDependencyName] : []),
|
|
202
216
|
],
|
|
203
217
|
errors: {
|
|
204
218
|
...(mongoHealth.error ? { mongodb: mongoHealth.error } : {}),
|
|
205
219
|
...(appConfigHealth.error ? { appConfig: appConfigHealth.error } : {}),
|
|
206
220
|
...(storageHealth.error ? { storage: storageHealth.error } : {}),
|
|
207
|
-
...(additionalDependencyHealth.error ? {
|
|
221
|
+
...(additionalDependencyHealth.error ? { [additionalDependencyName]: additionalDependencyHealth.error } : {}),
|
|
208
222
|
},
|
|
209
223
|
};
|
|
210
224
|
if (allHealthy) {
|
|
@@ -215,9 +229,11 @@ let HealthControllerBackendService = class HealthControllerBackendService extend
|
|
|
215
229
|
* NOT debug — a FAILING readiness check must name its cause in the default
|
|
216
230
|
* log stream.
|
|
217
231
|
*
|
|
218
|
-
* The HTTP response
|
|
232
|
+
* The HTTP response carried only `status`/`timestamp`/`uptime`/`version` by
|
|
219
233
|
* design (a probe body is not a diagnostic surface, and it is read by
|
|
220
|
-
* orchestrators, not people)
|
|
234
|
+
* orchestrators, not people) until #498 put component names and coarse
|
|
235
|
+
* statuses on it. `errors` is still log-only, and this is where it lives.
|
|
236
|
+
* That design left the component breakdown reachable
|
|
221
237
|
* ONLY through a debug channel which `AbstractControllerBackendService`
|
|
222
238
|
* disables at construction for every controller — so in practice a 503 was
|
|
223
239
|
* unattributable without a code change. Measured 2026-08-12: `grep
|
|
@@ -261,6 +277,12 @@ let HealthControllerBackendService = class HealthControllerBackendService extend
|
|
|
261
277
|
return Object.freeze({
|
|
262
278
|
ready: allHealthy,
|
|
263
279
|
status: allHealthy ? 'healthy' : anyUnhealthy ? 'unhealthy' : 'degraded',
|
|
280
|
+
/*
|
|
281
|
+
* Names and coarse statuses only — `breakdown.errors` is deliberately NOT carried out of this
|
|
282
|
+
* method, so no caller can put driver error text on an unauthenticated response by accident.
|
|
283
|
+
*/
|
|
284
|
+
components: Object.freeze({ ...components }),
|
|
285
|
+
failing: Object.freeze([...breakdown.failing]),
|
|
264
286
|
});
|
|
265
287
|
}
|
|
266
288
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-controller.backend.service.js","sourceRoot":"","sources":["../../../../../src/runtime/controllers/health-controller.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { injectable, inject, optional } from 'inversify';\nimport { Request, Response } from 'express';\nimport { AbstractControllerBackendService } from '~wildo-backend-lib/base-classes/services/controllers/abstract-controller.backend.service';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { ErrorHandlerService } from '~wildo-backend-lib/errors/services/error-handler.backend.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { MongoDBService, MongoHealthCheck } from '~wildo-backend-lib/databases/services/mongodb.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { PlatformApplicationType } from '~wildo-backend-lib/applications/models/applications.backend.schemas';\nimport { FileStorageRouterBackendService } from '~wildo-backend-lib/files/storage/file-storage-router.backend.service';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { HealthReadinessContributorBackendService, ReadinessDependencyHealth } from '~wildo-backend-lib/runtime/services/health-readiness-contributor.backend.interface';\nimport { ENGINE_ROOT_ROUTES, EngineRootRouteKey } from '@wildo-ai/saas-models';\n\n/**\n * Health status for individual components\n */\ninterface ComponentHealthStatus {\n status: 'healthy' | 'unhealthy' | 'connecting';\n latency?: number;\n error?: string;\n details?: Record<string, unknown>;\n}\n\n/**\n * Readiness check response (no internal details exposed)\n */\ninterface ReadinessResponse {\n status: 'healthy' | 'unhealthy' | 'degraded';\n timestamp: string;\n uptime: number;\n version: string;\n}\n\n/**\n * Liveness check response (simple)\n */\ninterface LivenessResponse {\n status: 'healthy';\n timestamp: string;\n uptime: number;\n version: string;\n}\n\n/**\n * Sanitized result of the same bounded dependency evaluation served by\n * `/health/ready`. Consumers outside the HTTP controller receive no database,\n * storage, provider, error, or configuration detail.\n */\nexport interface ApplicationRuntimeReadinessEvaluation {\n readonly ready: boolean;\n readonly status: ReadinessResponse['status'];\n}\n\nconst READINESS_DEPENDENCY_TIMEOUT_MS = 5_000;\n\n/**\n * How often a SUSTAINED readiness failure re-states its cause.\n *\n * A readiness probe runs every ~2 s, so an unrecovered failure would otherwise emit\n * ~30 WARN lines per minute per service. One a minute keeps a real outage visible\n * without drowning the stream an operator is reading it in.\n */\nconst READINESS_FAILURE_LOG_INTERVAL_MS = 60_000;\n\n/**\n * Health Controller Backend Service\n *\n * Provides HTTP endpoints for health checks used by Kubernetes probes:\n * - GET /health - Liveness probe (always returns healthy if server is running)\n * - GET /health/ready - Readiness probe (checks required dependencies)\n *\n * The readiness probe verifies the dependencies required for this process to\n * serve its declared routes:\n * - MongoDB connection is healthy (skipped for platform services except apps-manager)\n * - Application configuration is initialized\n * - Configured file storage is healthy\n * - An optional process-specific readiness contributor is healthy\n *\n * Redis is deliberately not a universal readiness gate: current backend and\n * companion startup contracts allow an in-memory fallback when Redis is not\n * available. A service that requires Redis must declare that dependency through\n * its process-specific readiness contributor instead of relying on an unused\n * controller check.\n */\n@injectable()\nexport class HealthControllerBackendService extends AbstractControllerBackendService {\n /** Which components were failing at the last WARN — a CHANGE always re-logs immediately. */\n private lastReadinessFailureSignature: string | null = null;\n private lastReadinessFailureLoggedAt = 0;\n /** Probes suppressed since the last WARN, reported on the next one so the gap is not silent. */\n private suppressedReadinessFailureLogs = 0;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ErrorHandlerService) errorHandler: ErrorHandlerService,\n @inject(SAAS_SERVICE_TYPES.MongoDBService) private readonly mongoDBService: MongoDBService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.FileStorageRouter) private readonly fileStorageRouter: FileStorageRouterBackendService,\n @inject(SAAS_SERVICE_TYPES.HealthReadinessContributorService) @optional()\n private readonly healthReadinessContributor?: HealthReadinessContributorBackendService,\n ) {\n super(logger, errorBuilder, errorHandler, 'HealthController');\n }\n\n /**\n * Check if the current service is a platform service (except apps-manager)\n * Platform services don't connect to MongoDB, so we skip MongoDB health checks for them\n */\n private isPlatformServiceExceptAppsManager(): boolean {\n try {\n if (!this.appConfigService.isInitialized()) {\n return false;\n }\n const serviceName = this.appConfigService.serviceName;\n\n // Map SERVICE_NAME values to PlatformApplicationType enum values\n const platformServiceNames = new Set([\n PlatformApplicationType.PLATFORM_CRONTABS_BATCHES_MANAGER,\n ]);\n\n // Check if serviceName matches any platform service (except apps-manager)\n return platformServiceNames.has(serviceName as PlatformApplicationType);\n } catch (error) {\n // If we can't determine, assume it's not a platform service (safer to check MongoDB)\n this.logger.warn('Could not determine if service is platform service, defaulting to MongoDB check', {\n ...projectCaughtErrorLogFields(error)\n });\n return false;\n }\n }\n\n /**\n * Custom mount path for this controller\n * Mounts at /health instead of default /api/custom/health-controller\n */\n public getCustomMountBasePath(): string {\n return ENGINE_ROOT_ROUTES[EngineRootRouteKey.HEALTH_LIVENESS];\n }\n\n /**\n * Setup routes for health check endpoints\n */\n protected setupRoutes(): void {\n // GET /health - Liveness probe (simple check)\n this.router.get('/', this.asyncHandler(this.handleLiveness.bind(this)));\n this.logRouteRegistration('GET', '/', 'Liveness probe - returns healthy if server is running');\n\n // GET /health/ready - Readiness probe (comprehensive check)\n this.router.get('/ready', this.asyncHandler(this.handleReadiness.bind(this)));\n this.logRouteRegistration('GET', '/ready', 'Readiness probe - checks required dependencies');\n }\n\n /**\n * Liveness probe handler\n * Returns healthy if the server is running (simple check)\n */\n private async handleLiveness(_req: Request, res: Response): Promise<void> {\n const response: LivenessResponse = {\n status: 'healthy',\n timestamp: new Date().toISOString(),\n uptime: process.uptime(),\n version: process.env.npm_package_version || '1.0.0'\n };\n\n this.jsonSuccess(res, response);\n }\n\n /**\n * Readiness probe handler\n * Checks all dependencies are connected and ready\n */\n private async handleReadiness(_req: Request, res: Response): Promise<void> {\n const readiness = await this.evaluateReadiness();\n\n const response: ReadinessResponse = {\n status: readiness.status,\n timestamp: new Date().toISOString(),\n uptime: process.uptime(),\n version: process.env.npm_package_version || '1.0.0'\n };\n\n res.status(readiness.ready ? 200 : 503).json(response);\n }\n\n /**\n * Evaluate the runtime's actual readiness dependencies through the same\n * bounded checks as the HTTP probe. This is an observation of live\n * dependencies, not an inference from server start, route registration, or\n * receipt freshness.\n */\n public async evaluateReadiness(): Promise<ApplicationRuntimeReadinessEvaluation> {\n const isPlatformService = this.isPlatformServiceExceptAppsManager();\n\n /**\n * MongoDB is checked only when this runtime actually DEPENDS on one.\n *\n * Two independent reasons to skip, and conflating them cost a stack. The first is the original:\n * a platform service other than apps-manager does not use MongoDB. The second was missing — an\n * APPLICATION whose environment declares no mongod at all. `checkMongoDB` returns\n * `unhealthy: 'No active connection'` when nothing is connected, so such an application would\n * report `/health/ready` unhealthy FOREVER, over a dependency it does not have and cannot\n * acquire.\n *\n * It never fired while every application still ran a mongod beside PostgreSQL. `wonder-crm` —\n * PostgreSQL on both planes, no `.ragSource()` field, no Mongo-pinned resource — is the first\n * that does not, and it would have 503'd on boot with nothing in the breakdown saying why.\n *\n * The authority is the one the resource registry already uses to decide whether a Mongo\n * repository may be built (`database.mongodb.enabled`), so the readiness gate and the\n * connection cannot disagree about whether this runtime has a MongoDB.\n */\n const appConfigHealth = this.checkAppConfig();\n const mongoIsADependency = !isPlatformService && this.runtimeDependsOnMongoDb();\n const [mongoHealth, storageHealth, additionalDependencyHealth] = await Promise.all([\n !mongoIsADependency\n ? Promise.resolve<ComponentHealthStatus>({ status: 'healthy' })\n : this.runBoundedReadinessCheck('mongodb', () => this.checkMongoDB()),\n this.runBoundedReadinessCheck('storage', () => this.checkStorage()),\n this.runBoundedReadinessCheck(\n this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency',\n () => this.checkAdditionalDependency(),\n ),\n ]);\n\n const allHealthy =\n mongoHealth.status === 'healthy' &&\n appConfigHealth.status === 'healthy' &&\n storageHealth.status === 'healthy' &&\n additionalDependencyHealth.status === 'healthy';\n\n const anyUnhealthy =\n mongoHealth.status === 'unhealthy' ||\n appConfigHealth.status === 'unhealthy' ||\n storageHealth.status === 'unhealthy' ||\n additionalDependencyHealth.status === 'unhealthy';\n\n const breakdown = {\n isPlatformService,\n mongodb: mongoHealth.status + (isPlatformService\n ? ' (skipped - platform service)'\n : mongoIsADependency ? '' : ' (skipped - no MongoDB configured for this runtime)'),\n appConfig: appConfigHealth.status,\n storage: storageHealth.status + (!this.fileStorageRouter.isConfigured() ? ' (not configured)' : ''),\n [this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency']: additionalDependencyHealth.status,\n overall: allHealthy ? 'healthy' : anyUnhealthy ? 'unhealthy' : 'degraded',\n // Named per component so a reader can see WHICH failed without correlating.\n failing: [\n ...(mongoHealth.status !== 'healthy' ? ['mongodb'] : []),\n ...(appConfigHealth.status !== 'healthy' ? ['appConfig'] : []),\n ...(storageHealth.status !== 'healthy' ? ['storage'] : []),\n ...(additionalDependencyHealth.status !== 'healthy'\n ? [this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency']\n : []),\n ],\n errors: {\n ...(mongoHealth.error ? { mongodb: mongoHealth.error } : {}),\n ...(appConfigHealth.error ? { appConfig: appConfigHealth.error } : {}),\n ...(storageHealth.error ? { storage: storageHealth.error } : {}),\n ...(additionalDependencyHealth.error ? { additionalDependency: additionalDependencyHealth.error } : {}),\n },\n };\n\n if (allHealthy) {\n this.logDebug('Readiness check completed', breakdown);\n } else {\n /**\n * NOT debug — a FAILING readiness check must name its cause in the default\n * log stream.\n *\n * The HTTP response carries only `status`/`timestamp`/`uptime`/`version` by\n * design (a probe body is not a diagnostic surface, and it is read by\n * orchestrators, not people). That left the component breakdown reachable\n * ONLY through a debug channel which `AbstractControllerBackendService`\n * disables at construction for every controller — so in practice a 503 was\n * unattributable without a code change. Measured 2026-08-12: `grep\n * \"Readiness check completed\"` over a full dev session returned ZERO lines\n * while two services were answering 503.\n *\n * ## Why this is throttled, and a correction\n *\n * The first version of this said the noise was \"bounded and self-limiting:\n * this fires only while NOT ready, and stops the moment it is.\" That is true\n * only for a service that RECOVERS. A persistently-unready one — which is\n * exactly the case worth diagnosing — probes every ~2 s and floods the log\n * at roughly 30 lines per minute per service. Observed within two hours of\n * writing that sentence.\n *\n * So it logs on CHANGE (a different failing set, including the first\n * occurrence) and at most once a minute otherwise, carrying how many probes\n * it suppressed. A sustained outage stays visible without drowning the\n * stream it is competing with — and a NEW component failing mid-outage still\n * reports immediately, because the signature changed.\n */\n const signature = breakdown.failing.join(',');\n const now = Date.now();\n const changed = signature !== this.lastReadinessFailureSignature;\n const stale = now - this.lastReadinessFailureLoggedAt >= READINESS_FAILURE_LOG_INTERVAL_MS;\n\n if (changed || stale) {\n this.logger.warn('Readiness check FAILED — dependencies not ready', {\n ...breakdown,\n ...(this.suppressedReadinessFailureLogs > 0\n ? { suppressedSinceLastLog: this.suppressedReadinessFailureLogs }\n : {}),\n });\n this.lastReadinessFailureSignature = signature;\n this.lastReadinessFailureLoggedAt = now;\n this.suppressedReadinessFailureLogs = 0;\n } else {\n this.suppressedReadinessFailureLogs++;\n }\n }\n\n return Object.freeze({\n ready: allHealthy,\n status: allHealthy ? 'healthy' : anyUnhealthy ? 'unhealthy' : 'degraded',\n });\n }\n\n /**\n * Keep the HTTP readiness contract bounded even when a provider SDK or\n * process-specific contributor never settles. The underlying check remains\n * observed by `Promise.race`, while the request returns a sanitized non-green\n * result after one shared deadline.\n */\n private async runBoundedReadinessCheck(component: string, check: () => Promise<ComponentHealthStatus>): Promise<ComponentHealthStatus> {\n let timeout: NodeJS.Timeout | null = null;\n const timeoutResult = new Promise<ComponentHealthStatus>((resolve) => {\n timeout = setTimeout(() => {\n this.logger.warn('Readiness dependency check timed out', {\n component,\n timeoutMs: READINESS_DEPENDENCY_TIMEOUT_MS,\n });\n resolve({\n status: 'unhealthy',\n error: 'readiness dependency check timed out',\n details: { reason: 'READINESS_CHECK_TIMEOUT' },\n });\n }, READINESS_DEPENDENCY_TIMEOUT_MS);\n timeout.unref();\n });\n\n try {\n return await Promise.race([Promise.resolve().then(check), timeoutResult]);\n } finally {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n }\n\n private async checkAdditionalDependency(): Promise<ComponentHealthStatus> {\n if (!this.healthReadinessContributor) {\n return { status: 'healthy' };\n }\n\n try {\n const health: ReadinessDependencyHealth = await this.healthReadinessContributor.checkReadiness();\n return {\n status: health.status,\n latency: health.latency,\n error: health.error,\n details: health.details,\n };\n } catch (error) {\n this.logger.error('Additional readiness contributor threw exception', {\n component: this.healthReadinessContributor.getComponentName(),\n ...projectCaughtErrorLogFields(error),\n });\n return {\n status: 'unhealthy',\n error: describeCaughtError(error),\n };\n }\n }\n\n /**\n * Check MongoDB health\n */\n /**\n * Does this runtime have a MongoDB at all?\n *\n * PRESENCE of the branch is the answer, now that presence means something.\n *\n * This first keyed on `mongodb?.host`, because the loader built the `mongodb` branch\n * unconditionally with `enabled: true` and only `host` distinguished a real MongoDB from none.\n * The loader was made symmetric with `postgresql` on 2026-08-28 — the branch exists only when an\n * address was supplied — so the branch itself is now the signal, and `enabled` is meaningful\n * again for the case an operator explicitly disables one.\n *\n * Read defensively: readiness must never throw on a runtime whose config is not yet hydrated.\n */\n private runtimeDependsOnMongoDb(): boolean {\n try {\n if (!this.appConfigService.isInitialized()) return false;\n const mongodb = this.appConfigService.config.database?.mongodb;\n return mongodb !== undefined && (mongodb.enabled ?? true);\n } catch {\n return false;\n }\n }\n\n private async checkMongoDB(): Promise<ComponentHealthStatus> {\n try {\n const health: MongoHealthCheck = await this.mongoDBService.healthCheck();\n return {\n status: health.status,\n latency: health.latency,\n error: health.error,\n details: health.connections ? { connections: health.connections } : undefined\n };\n } catch (error) {\n this.logger.error('MongoDB health check threw exception', {\n ...projectCaughtErrorLogFields(error)\n });\n return {\n status: 'unhealthy',\n error: describeCaughtError(error)\n };\n }\n }\n\n /**\n * Check file storage (MinIO/S3) health.\n * Returns healthy when storage is not configured (apps without file features).\n *\n * ## The early return is LOAD-BEARING — do not \"tidy\" it into an unconditional probe\n *\n * It is the only not-provisioned branch among this controller's dependency\n * checks, and it is what makes storage the one backing service that degrades\n * GRACEFULLY: a runtime with no storage configuration reports a healthy N/A\n * instead of a degradation, and the router never initialises a provider that\n * reports itself unconfigured.\n *\n * That becomes structural under per-backing-service network segmentation, where\n * membership is derived from a runtime's declared `resourceAccess`: a runtime\n * that declares no storage gets no route to the object store at all. Without\n * this branch, an unroutable host would fail as a timeout or DNS error and read\n * as \"storage down\" for a runtime that was never meant to have storage.\n *\n * The real invariant lives one layer up — membership and topology must derive\n * from ONE declaration, so a non-declaring runtime is never configured and there\n * is nothing to distinguish. This branch is what makes that safe rather than\n * merely intended. Note what it deliberately does NOT do: it does not treat\n * UNREACHABLE as healthy. A runtime that DID declare storage and cannot reach it\n * is genuinely unhealthy, and softening that would trade a false negative for a\n * false positive on readiness — the one signal that must not lie.\n *\n * Cross-session finding, 2026-08-12 (minion segmentation workstream). Contrast\n * `checkMongoDB` above: no such branch, gated only on `isPlatformService` — a\n * runtime KIND, not a declaration — so the same incoherence is a hard readiness\n * failure there rather than a survivable one.\n */\n private async checkStorage(): Promise<ComponentHealthStatus> {\n if (!this.fileStorageRouter.isConfigured()) {\n return { status: 'healthy' };\n }\n\n try {\n const health = await this.fileStorageRouter.healthCheck();\n return {\n status: health.healthy ? 'healthy' : 'unhealthy',\n latency: health.latency,\n error: health.error,\n };\n } catch (error) {\n this.logger.error('Storage health check threw exception', {\n ...projectCaughtErrorLogFields(error),\n });\n return {\n status: 'unhealthy',\n error: describeCaughtError(error),\n };\n }\n }\n\n /**\n * Check application configuration initialization\n */\n private checkAppConfig(): ComponentHealthStatus {\n const isInitialized = this.appConfigService.isInitialized();\n return {\n status: isInitialized ? 'healthy' : 'unhealthy',\n error: isInitialized ? undefined : 'Application configuration not initialized'\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"health-controller.backend.service.js","sourceRoot":"","sources":["../../../../../src/runtime/controllers/health-controller.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { injectable, inject, optional } from 'inversify';\nimport { Request, Response } from 'express';\nimport { AbstractControllerBackendService } from '~wildo-backend-lib/base-classes/services/controllers/abstract-controller.backend.service';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { ErrorHandlerService } from '~wildo-backend-lib/errors/services/error-handler.backend.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { MongoDBService, MongoHealthCheck } from '~wildo-backend-lib/databases/services/mongodb.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { PlatformApplicationType } from '~wildo-backend-lib/applications/models/applications.backend.schemas';\nimport { FileStorageRouterBackendService } from '~wildo-backend-lib/files/storage/file-storage-router.backend.service';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { HealthReadinessContributorBackendService, ReadinessDependencyHealth } from '~wildo-backend-lib/runtime/services/health-readiness-contributor.backend.interface';\nimport { ENGINE_ROOT_ROUTES, EngineRootRouteKey } from '@wildo-ai/saas-models';\n\n/**\n * Health status for individual components\n */\ninterface ComponentHealthStatus {\n status: 'healthy' | 'unhealthy' | 'connecting';\n latency?: number;\n error?: string;\n details?: Record<string, unknown>;\n}\n\n/**\n * Readiness check response.\n *\n * ## Why the component breakdown is ON the wire (#498)\n *\n * The body used to carry `status`/`timestamp`/`uptime`/`version` only, on the reasoning that a probe\n * body is read by orchestrators rather than people and the breakdown belongs in the log stream. That\n * reasoning failed in practice, and it failed measurably: the breakdown was reachable only through a\n * debug channel `AbstractControllerBackendService` disables at construction, so a 503 was\n * unattributable without a code change — `grep \"Readiness check completed\"` over a full dev session\n * returned ZERO lines while two services were answering 503 (measured 2026-08-12). Moving the FAILURE\n * log to `warn` fixed half of it; this is the other half, so an operator can ask the endpoint rather\n * than the log.\n *\n * ## What is deliberately NOT here\n *\n * `errors` stays log-only. `/health/ready` is typically unauthenticated, and an error string carries\n * whatever the driver put in it — a hostname, a port, a credentials path. Component NAMES and coarse\n * statuses say which dependency is unhappy, which is what a person debugging needs and what a\n * Kubernetes-style probe conventionally exposes; the text that says WHY stays where it is already\n * warned, beside the rest of the breakdown.\n */\ninterface ReadinessResponse {\n status: 'healthy' | 'unhealthy' | 'degraded';\n timestamp: string;\n uptime: number;\n version: string;\n /** Per-component coarse status, keyed by component name. Never carries error text. */\n components: Record<string, string>;\n /** The subset of `components` that is not healthy — the answer to \"which one\". */\n failing: readonly string[];\n}\n\n/**\n * Liveness check response (simple)\n */\ninterface LivenessResponse {\n status: 'healthy';\n timestamp: string;\n uptime: number;\n version: string;\n}\n\n/**\n * Sanitized result of the same bounded dependency evaluation served by\n * `/health/ready`.\n *\n * Component NAMES and coarse statuses are carried (#498) — an operator, and the e2e lane that\n * asserts on a dependency going red, both need to know WHICH component is unhappy. Driver ERROR\n * TEXT is not, and that is the line: a name is a fact about this runtime's declared dependencies,\n * while an error string carries whatever the driver put in it — a hostname, a port, a credentials\n * path — onto a probe that is typically unauthenticated. The error text stays in the WARN beside\n * the rest of the breakdown.\n */\nexport interface ApplicationRuntimeReadinessEvaluation {\n readonly ready: boolean;\n readonly status: ReadinessResponse['status'];\n /** Per-component coarse status, keyed by component name. Never carries error text. */\n readonly components: Readonly<Record<string, string>>;\n /** The subset of `components` that is not healthy — the answer to \"which one\". */\n readonly failing: readonly string[];\n}\n\nconst READINESS_DEPENDENCY_TIMEOUT_MS = 5_000;\n\n/**\n * How often a SUSTAINED readiness failure re-states its cause.\n *\n * A readiness probe runs every ~2 s, so an unrecovered failure would otherwise emit\n * ~30 WARN lines per minute per service. One a minute keeps a real outage visible\n * without drowning the stream an operator is reading it in.\n */\nconst READINESS_FAILURE_LOG_INTERVAL_MS = 60_000;\n\n/**\n * Health Controller Backend Service\n *\n * Provides HTTP endpoints for health checks used by Kubernetes probes:\n * - GET /health - Liveness probe (always returns healthy if server is running)\n * - GET /health/ready - Readiness probe (checks required dependencies)\n *\n * The readiness probe verifies the dependencies required for this process to\n * serve its declared routes:\n * - MongoDB connection is healthy (skipped for platform services except apps-manager)\n * - Application configuration is initialized\n * - Configured file storage is healthy\n * - An optional process-specific readiness contributor is healthy\n *\n * Redis is deliberately not a universal readiness gate: current backend and\n * companion startup contracts allow an in-memory fallback when Redis is not\n * available. A service that requires Redis must declare that dependency through\n * its process-specific readiness contributor instead of relying on an unused\n * controller check.\n */\n@injectable()\nexport class HealthControllerBackendService extends AbstractControllerBackendService {\n /** Which components were failing at the last WARN — a CHANGE always re-logs immediately. */\n private lastReadinessFailureSignature: string | null = null;\n private lastReadinessFailureLoggedAt = 0;\n /** Probes suppressed since the last WARN, reported on the next one so the gap is not silent. */\n private suppressedReadinessFailureLogs = 0;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ErrorHandlerService) errorHandler: ErrorHandlerService,\n @inject(SAAS_SERVICE_TYPES.MongoDBService) private readonly mongoDBService: MongoDBService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.FileStorageRouter) private readonly fileStorageRouter: FileStorageRouterBackendService,\n @inject(SAAS_SERVICE_TYPES.HealthReadinessContributorService) @optional()\n private readonly healthReadinessContributor?: HealthReadinessContributorBackendService,\n ) {\n super(logger, errorBuilder, errorHandler, 'HealthController');\n }\n\n /**\n * Check if the current service is a platform service (except apps-manager)\n * Platform services don't connect to MongoDB, so we skip MongoDB health checks for them\n */\n private isPlatformServiceExceptAppsManager(): boolean {\n try {\n if (!this.appConfigService.isInitialized()) {\n return false;\n }\n const serviceName = this.appConfigService.serviceName;\n\n // Map SERVICE_NAME values to PlatformApplicationType enum values\n const platformServiceNames = new Set([\n PlatformApplicationType.PLATFORM_CRONTABS_BATCHES_MANAGER,\n ]);\n\n // Check if serviceName matches any platform service (except apps-manager)\n return platformServiceNames.has(serviceName as PlatformApplicationType);\n } catch (error) {\n // If we can't determine, assume it's not a platform service (safer to check MongoDB)\n this.logger.warn('Could not determine if service is platform service, defaulting to MongoDB check', {\n ...projectCaughtErrorLogFields(error)\n });\n return false;\n }\n }\n\n /**\n * Custom mount path for this controller\n * Mounts at /health instead of default /api/custom/health-controller\n */\n public getCustomMountBasePath(): string {\n return ENGINE_ROOT_ROUTES[EngineRootRouteKey.HEALTH_LIVENESS];\n }\n\n /**\n * Setup routes for health check endpoints\n */\n protected setupRoutes(): void {\n // GET /health - Liveness probe (simple check)\n this.router.get('/', this.asyncHandler(this.handleLiveness.bind(this)));\n this.logRouteRegistration('GET', '/', 'Liveness probe - returns healthy if server is running');\n\n // GET /health/ready - Readiness probe (comprehensive check)\n this.router.get('/ready', this.asyncHandler(this.handleReadiness.bind(this)));\n this.logRouteRegistration('GET', '/ready', 'Readiness probe - checks required dependencies');\n }\n\n /**\n * Liveness probe handler\n * Returns healthy if the server is running (simple check)\n */\n private async handleLiveness(_req: Request, res: Response): Promise<void> {\n const response: LivenessResponse = {\n status: 'healthy',\n timestamp: new Date().toISOString(),\n uptime: process.uptime(),\n version: process.env.npm_package_version || '1.0.0'\n };\n\n this.jsonSuccess(res, response);\n }\n\n /**\n * Readiness probe handler\n * Checks all dependencies are connected and ready\n */\n private async handleReadiness(_req: Request, res: Response): Promise<void> {\n const readiness = await this.evaluateReadiness();\n\n const response: ReadinessResponse = {\n status: readiness.status,\n timestamp: new Date().toISOString(),\n uptime: process.uptime(),\n version: process.env.npm_package_version || '1.0.0',\n components: readiness.components,\n failing: readiness.failing,\n };\n\n res.status(readiness.ready ? 200 : 503).json(response);\n }\n\n /**\n * Evaluate the runtime's actual readiness dependencies through the same\n * bounded checks as the HTTP probe. This is an observation of live\n * dependencies, not an inference from server start, route registration, or\n * receipt freshness.\n */\n public async evaluateReadiness(): Promise<ApplicationRuntimeReadinessEvaluation> {\n const isPlatformService = this.isPlatformServiceExceptAppsManager();\n\n /**\n * MongoDB is checked only when this runtime actually DEPENDS on one.\n *\n * Two independent reasons to skip, and conflating them cost a stack. The first is the original:\n * a platform service other than apps-manager does not use MongoDB. The second was missing — an\n * APPLICATION whose environment declares no mongod at all. `checkMongoDB` returns\n * `unhealthy: 'No active connection'` when nothing is connected, so such an application would\n * report `/health/ready` unhealthy FOREVER, over a dependency it does not have and cannot\n * acquire.\n *\n * It never fired while every application still ran a mongod beside PostgreSQL. `wonder-crm` —\n * PostgreSQL on both planes, no `.ragSource()` field, no Mongo-pinned resource — is the first\n * that does not, and it would have 503'd on boot with nothing in the breakdown saying why.\n *\n * The authority is the one the resource registry already uses to decide whether a Mongo\n * repository may be built (`database.mongodb.enabled`), so the readiness gate and the\n * connection cannot disagree about whether this runtime has a MongoDB.\n */\n const appConfigHealth = this.checkAppConfig();\n const mongoIsADependency = !isPlatformService && this.runtimeDependsOnMongoDb();\n const [mongoHealth, storageHealth, additionalDependencyHealth] = await Promise.all([\n !mongoIsADependency\n ? Promise.resolve<ComponentHealthStatus>({ status: 'healthy' })\n : this.runBoundedReadinessCheck('mongodb', () => this.checkMongoDB()),\n this.runBoundedReadinessCheck('storage', () => this.checkStorage()),\n this.runBoundedReadinessCheck(\n this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency',\n () => this.checkAdditionalDependency(),\n ),\n ]);\n\n const allHealthy =\n mongoHealth.status === 'healthy' &&\n appConfigHealth.status === 'healthy' &&\n storageHealth.status === 'healthy' &&\n additionalDependencyHealth.status === 'healthy';\n\n const anyUnhealthy =\n mongoHealth.status === 'unhealthy' ||\n appConfigHealth.status === 'unhealthy' ||\n storageHealth.status === 'unhealthy' ||\n additionalDependencyHealth.status === 'unhealthy';\n\n const additionalDependencyName = this.healthReadinessContributor?.getComponentName() ?? 'additionalDependency';\n\n /*\n * ONE component map, read by both the WARN below and the HTTP response (#498). Two hand-kept\n * copies of the same four components is exactly the shape that drifts — an operator reading the\n * log and an operator reading the probe must not be told different things about the same runtime.\n *\n * The parenthetical suffixes matter and are safe to publish: \"healthy\" on a runtime that never\n * checked MongoDB is true and useless, while \"healthy (skipped - no MongoDB configured for this\n * runtime)\" is the answer to the question the reader actually has. Nothing here is derived from a\n * driver message.\n */\n const components: Record<string, string> = {\n mongodb: mongoHealth.status + (isPlatformService\n ? ' (skipped - platform service)'\n : mongoIsADependency ? '' : ' (skipped - no MongoDB configured for this runtime)'),\n appConfig: appConfigHealth.status,\n storage: storageHealth.status + (!this.fileStorageRouter.isConfigured() ? ' (not configured)' : ''),\n [additionalDependencyName]: additionalDependencyHealth.status,\n };\n\n const breakdown = {\n isPlatformService,\n ...components,\n overall: allHealthy ? 'healthy' : anyUnhealthy ? 'unhealthy' : 'degraded',\n // Named per component so a reader can see WHICH failed without correlating.\n failing: [\n ...(mongoHealth.status !== 'healthy' ? ['mongodb'] : []),\n ...(appConfigHealth.status !== 'healthy' ? ['appConfig'] : []),\n ...(storageHealth.status !== 'healthy' ? ['storage'] : []),\n ...(additionalDependencyHealth.status !== 'healthy' ? [additionalDependencyName] : []),\n ],\n errors: {\n ...(mongoHealth.error ? { mongodb: mongoHealth.error } : {}),\n ...(appConfigHealth.error ? { appConfig: appConfigHealth.error } : {}),\n ...(storageHealth.error ? { storage: storageHealth.error } : {}),\n ...(additionalDependencyHealth.error ? { [additionalDependencyName]: additionalDependencyHealth.error } : {}),\n },\n };\n\n if (allHealthy) {\n this.logDebug('Readiness check completed', breakdown);\n } else {\n /**\n * NOT debug — a FAILING readiness check must name its cause in the default\n * log stream.\n *\n * The HTTP response carried only `status`/`timestamp`/`uptime`/`version` by\n * design (a probe body is not a diagnostic surface, and it is read by\n * orchestrators, not people) until #498 put component names and coarse\n * statuses on it. `errors` is still log-only, and this is where it lives.\n * That design left the component breakdown reachable\n * ONLY through a debug channel which `AbstractControllerBackendService`\n * disables at construction for every controller — so in practice a 503 was\n * unattributable without a code change. Measured 2026-08-12: `grep\n * \"Readiness check completed\"` over a full dev session returned ZERO lines\n * while two services were answering 503.\n *\n * ## Why this is throttled, and a correction\n *\n * The first version of this said the noise was \"bounded and self-limiting:\n * this fires only while NOT ready, and stops the moment it is.\" That is true\n * only for a service that RECOVERS. A persistently-unready one — which is\n * exactly the case worth diagnosing — probes every ~2 s and floods the log\n * at roughly 30 lines per minute per service. Observed within two hours of\n * writing that sentence.\n *\n * So it logs on CHANGE (a different failing set, including the first\n * occurrence) and at most once a minute otherwise, carrying how many probes\n * it suppressed. A sustained outage stays visible without drowning the\n * stream it is competing with — and a NEW component failing mid-outage still\n * reports immediately, because the signature changed.\n */\n const signature = breakdown.failing.join(',');\n const now = Date.now();\n const changed = signature !== this.lastReadinessFailureSignature;\n const stale = now - this.lastReadinessFailureLoggedAt >= READINESS_FAILURE_LOG_INTERVAL_MS;\n\n if (changed || stale) {\n this.logger.warn('Readiness check FAILED — dependencies not ready', {\n ...breakdown,\n ...(this.suppressedReadinessFailureLogs > 0\n ? { suppressedSinceLastLog: this.suppressedReadinessFailureLogs }\n : {}),\n });\n this.lastReadinessFailureSignature = signature;\n this.lastReadinessFailureLoggedAt = now;\n this.suppressedReadinessFailureLogs = 0;\n } else {\n this.suppressedReadinessFailureLogs++;\n }\n }\n\n return Object.freeze({\n ready: allHealthy,\n status: allHealthy ? 'healthy' : anyUnhealthy ? 'unhealthy' : 'degraded',\n /*\n * Names and coarse statuses only — `breakdown.errors` is deliberately NOT carried out of this\n * method, so no caller can put driver error text on an unauthenticated response by accident.\n */\n components: Object.freeze({ ...components }),\n failing: Object.freeze([...breakdown.failing]),\n });\n }\n\n /**\n * Keep the HTTP readiness contract bounded even when a provider SDK or\n * process-specific contributor never settles. The underlying check remains\n * observed by `Promise.race`, while the request returns a sanitized non-green\n * result after one shared deadline.\n */\n private async runBoundedReadinessCheck(component: string, check: () => Promise<ComponentHealthStatus>): Promise<ComponentHealthStatus> {\n let timeout: NodeJS.Timeout | null = null;\n const timeoutResult = new Promise<ComponentHealthStatus>((resolve) => {\n timeout = setTimeout(() => {\n this.logger.warn('Readiness dependency check timed out', {\n component,\n timeoutMs: READINESS_DEPENDENCY_TIMEOUT_MS,\n });\n resolve({\n status: 'unhealthy',\n error: 'readiness dependency check timed out',\n details: { reason: 'READINESS_CHECK_TIMEOUT' },\n });\n }, READINESS_DEPENDENCY_TIMEOUT_MS);\n timeout.unref();\n });\n\n try {\n return await Promise.race([Promise.resolve().then(check), timeoutResult]);\n } finally {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n }\n\n private async checkAdditionalDependency(): Promise<ComponentHealthStatus> {\n if (!this.healthReadinessContributor) {\n return { status: 'healthy' };\n }\n\n try {\n const health: ReadinessDependencyHealth = await this.healthReadinessContributor.checkReadiness();\n return {\n status: health.status,\n latency: health.latency,\n error: health.error,\n details: health.details,\n };\n } catch (error) {\n this.logger.error('Additional readiness contributor threw exception', {\n component: this.healthReadinessContributor.getComponentName(),\n ...projectCaughtErrorLogFields(error),\n });\n return {\n status: 'unhealthy',\n error: describeCaughtError(error),\n };\n }\n }\n\n /**\n * Check MongoDB health\n */\n /**\n * Does this runtime have a MongoDB at all?\n *\n * PRESENCE of the branch is the answer, now that presence means something.\n *\n * This first keyed on `mongodb?.host`, because the loader built the `mongodb` branch\n * unconditionally with `enabled: true` and only `host` distinguished a real MongoDB from none.\n * The loader was made symmetric with `postgresql` on 2026-08-28 — the branch exists only when an\n * address was supplied — so the branch itself is now the signal, and `enabled` is meaningful\n * again for the case an operator explicitly disables one.\n *\n * Read defensively: readiness must never throw on a runtime whose config is not yet hydrated.\n */\n private runtimeDependsOnMongoDb(): boolean {\n try {\n if (!this.appConfigService.isInitialized()) return false;\n const mongodb = this.appConfigService.config.database?.mongodb;\n return mongodb !== undefined && (mongodb.enabled ?? true);\n } catch {\n return false;\n }\n }\n\n private async checkMongoDB(): Promise<ComponentHealthStatus> {\n try {\n const health: MongoHealthCheck = await this.mongoDBService.healthCheck();\n return {\n status: health.status,\n latency: health.latency,\n error: health.error,\n details: health.connections ? { connections: health.connections } : undefined\n };\n } catch (error) {\n this.logger.error('MongoDB health check threw exception', {\n ...projectCaughtErrorLogFields(error)\n });\n return {\n status: 'unhealthy',\n error: describeCaughtError(error)\n };\n }\n }\n\n /**\n * Check file storage (MinIO/S3) health.\n * Returns healthy when storage is not configured (apps without file features).\n *\n * ## The early return is LOAD-BEARING — do not \"tidy\" it into an unconditional probe\n *\n * It is the only not-provisioned branch among this controller's dependency\n * checks, and it is what makes storage the one backing service that degrades\n * GRACEFULLY: a runtime with no storage configuration reports a healthy N/A\n * instead of a degradation, and the router never initialises a provider that\n * reports itself unconfigured.\n *\n * That becomes structural under per-backing-service network segmentation, where\n * membership is derived from a runtime's declared `resourceAccess`: a runtime\n * that declares no storage gets no route to the object store at all. Without\n * this branch, an unroutable host would fail as a timeout or DNS error and read\n * as \"storage down\" for a runtime that was never meant to have storage.\n *\n * The real invariant lives one layer up — membership and topology must derive\n * from ONE declaration, so a non-declaring runtime is never configured and there\n * is nothing to distinguish. This branch is what makes that safe rather than\n * merely intended. Note what it deliberately does NOT do: it does not treat\n * UNREACHABLE as healthy. A runtime that DID declare storage and cannot reach it\n * is genuinely unhealthy, and softening that would trade a false negative for a\n * false positive on readiness — the one signal that must not lie.\n *\n * Cross-session finding, 2026-08-12 (minion segmentation workstream). Contrast\n * `checkMongoDB` above: no such branch, gated only on `isPlatformService` — a\n * runtime KIND, not a declaration — so the same incoherence is a hard readiness\n * failure there rather than a survivable one.\n */\n private async checkStorage(): Promise<ComponentHealthStatus> {\n if (!this.fileStorageRouter.isConfigured()) {\n return { status: 'healthy' };\n }\n\n try {\n const health = await this.fileStorageRouter.healthCheck();\n return {\n status: health.healthy ? 'healthy' : 'unhealthy',\n latency: health.latency,\n error: health.error,\n };\n } catch (error) {\n this.logger.error('Storage health check threw exception', {\n ...projectCaughtErrorLogFields(error),\n });\n return {\n status: 'unhealthy',\n error: describeCaughtError(error),\n };\n }\n }\n\n /**\n * Check application configuration initialization\n */\n private checkAppConfig(): ComponentHealthStatus {\n const isInitialized = this.appConfigService.isInitialized();\n return {\n status: isInitialized ? 'healthy' : 'unhealthy',\n error: isInitialized ? undefined : 'Application configuration not initialized'\n };\n }\n}\n"]}
|
|
@@ -82,6 +82,30 @@ export interface BackendDomainModule extends SharedDomainModule {
|
|
|
82
82
|
*/
|
|
83
83
|
dataSeedScopeResolvers?: Record<string, DataSeedScopeResolver>;
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Merge every module's backend contributions into one.
|
|
87
|
+
*
|
|
88
|
+
* ⚠️ **The fields do NOT all treat a cross-module duplicate the same way, and the difference is
|
|
89
|
+
* silent.** Three of them reject a duplicate at merge time with a `CONFIGURATION` error naming both
|
|
90
|
+
* contributors — `dataSeedScopeResolvers`, `pdfTemplateBindings` and `chartDefinitions`. Two of them
|
|
91
|
+
* do not:
|
|
92
|
+
*
|
|
93
|
+
* | field | duplicate across two modules |
|
|
94
|
+
* |---|---|
|
|
95
|
+
* | `resourceConfigurations` | **last module wins, silently** |
|
|
96
|
+
* | `resourceFieldIdentifiers` | **last module wins, silently** |
|
|
97
|
+
* | `dataSeedScopeResolvers` · `pdfTemplateBindings` · `chartDefinitions` | rejected, naming both modules |
|
|
98
|
+
* | `resourceRelationships` · `operations` · `controllers` · `seeds` | concatenated — both are kept |
|
|
99
|
+
*
|
|
100
|
+
* Do not generalise the rejection to the whole object. Two modules declaring the same resource
|
|
101
|
+
* identifier produce no error and no warning: whichever is later in the registry array replaces the
|
|
102
|
+
* earlier one entirely, and the application boots. That shadowing is what lets an application layer
|
|
103
|
+
* its own module over the engine's, so it cannot be made an error — which is exactly why an
|
|
104
|
+
* ACCIDENTAL collision is invisible.
|
|
105
|
+
*
|
|
106
|
+
* If a resource behaves as though its configuration were somebody else's, check for a second module
|
|
107
|
+
* declaring the same identifier before looking anywhere else.
|
|
108
|
+
*/
|
|
85
109
|
export declare function mergeBackendDomainModules(...modules: BackendDomainModule[]): BackendDomainModule;
|
|
86
110
|
/** @wildo_source:part:end saas.backend.domain-module */
|
|
87
111
|
export declare function mergeInitializationFlowsActorsRegistry(base: ApplicationInitializationConfig['flowsActorsRegistry'], override: ApplicationInitializationConfig['flowsActorsRegistry']): ApplicationInitializationConfig['flowsActorsRegistry'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-module.backend.definitions.d.ts","sourceRoot":"","sources":["../../../../src/runtime/domain-module.backend.definitions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"domain-module.backend.definitions.d.ts","sourceRoot":"","sources":["../../../../src/runtime/domain-module.backend.definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
import { normalizeChartExecutionRef } from '@wildo-ai/saas-models';
|
|
2
|
+
/**
|
|
3
|
+
* Merge every module's backend contributions into one.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ **The fields do NOT all treat a cross-module duplicate the same way, and the difference is
|
|
6
|
+
* silent.** Three of them reject a duplicate at merge time with a `CONFIGURATION` error naming both
|
|
7
|
+
* contributors — `dataSeedScopeResolvers`, `pdfTemplateBindings` and `chartDefinitions`. Two of them
|
|
8
|
+
* do not:
|
|
9
|
+
*
|
|
10
|
+
* | field | duplicate across two modules |
|
|
11
|
+
* |---|---|
|
|
12
|
+
* | `resourceConfigurations` | **last module wins, silently** |
|
|
13
|
+
* | `resourceFieldIdentifiers` | **last module wins, silently** |
|
|
14
|
+
* | `dataSeedScopeResolvers` · `pdfTemplateBindings` · `chartDefinitions` | rejected, naming both modules |
|
|
15
|
+
* | `resourceRelationships` · `operations` · `controllers` · `seeds` | concatenated — both are kept |
|
|
16
|
+
*
|
|
17
|
+
* Do not generalise the rejection to the whole object. Two modules declaring the same resource
|
|
18
|
+
* identifier produce no error and no warning: whichever is later in the registry array replaces the
|
|
19
|
+
* earlier one entirely, and the application boots. That shadowing is what lets an application layer
|
|
20
|
+
* its own module over the engine's, so it cannot be made an error — which is exactly why an
|
|
21
|
+
* ACCIDENTAL collision is invisible.
|
|
22
|
+
*
|
|
23
|
+
* If a resource behaves as though its configuration were somebody else's, check for a second module
|
|
24
|
+
* declaring the same identifier before looking anywhere else.
|
|
25
|
+
*/
|
|
2
26
|
export function mergeBackendDomainModules(...modules) {
|
|
3
27
|
return {
|
|
4
28
|
resourceConfigurations: Object.assign({}, ...modules.map(m => m.resourceConfigurations).filter(Boolean)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-module.backend.definitions.js","sourceRoot":"","sources":["../../../../src/runtime/domain-module.backend.definitions.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeChartExecutionRef } from '@wildo-ai/saas-models';\nimport type {\n ChartDefinition,\n FlowsActors_Agent,\n SharedSaaSModulesRegistry,\n SharedDomainModule,\n} from '@wildo-ai/saas-models';\nimport type { DataSeedDefinition } from '~wildo-backend-lib/data-seeding/models/data-seed.shared.schemas';\nimport type { DataSeedScopeResolver } from '~wildo-backend-lib/data-seeding/services/data-seed-scope-resolver-registry.backend.service';\nimport type { ResourceCustomServiceImplementationFactory } from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport type { AbstractControllerBackendService } from '~wildo-backend-lib/base-classes/services/controllers/abstract-controller.backend.service';\nimport type { FlowActorSystem_InitializationFactoryMap } from '~wildo-backend-lib/flows-actors/models/flows-actors.backend.schemas';\nimport type { FunctionTool } from '~wildo-backend-lib/flows-actors/models/function-tools.backend.definitions';\nimport type { PdfTemplateBindingsMap } from '~wildo-backend-lib/pdf-templates/models/pdf-template-binding';\nimport type { ApplicationInitializationConfig } from './services/start-application.backend.service';\n\n/**\n * @wildo_source:part:start saas.backend.domain-module facet:layer:backend facet:family:module\n *\n * Application backend module declaration. It gathers the application's custom\n * operations, HTTP controllers, Flows/Actors registrations and backend-only\n * bindings into one unit that startup can merge deterministically.\n */\nexport interface BackendDomainModule extends SharedDomainModule {\n operations?: ResourceCustomServiceImplementationFactory[];\n controllers?: AbstractControllerBackendService[];\n flowsActors?: {\n flowActorSystemsFactoryMap?: FlowActorSystem_InitializationFactoryMap;\n agents?: FlowsActors_Agent[];\n /**\n * Executable tools agents in this module can call (grounding). Build them\n * with the engine's `resourceReadTool(resourceType)` factory (or author a\n * custom `FunctionTool`); reference them from an agent's\n * `capabilities.tools.functionRefs`.\n */\n functionTools?: FunctionTool[];\n };\n /**\n * Backend-only direct PDF template bindings contributed by this module.\n *\n * Shared schemas expose only `generation.templateId`; this map is where\n * backend startup binds generated file fields to imported template objects.\n */\n pdfTemplateBindings?: PdfTemplateBindingsMap;\n /**\n * Resource-owned chart definitions contributed by this module, registered\n * into the backend `ChartRegistryBackendService` at startup so the manual\n * `/charts/:chartRef/data` endpoint can execute their aggregation query.\n *\n * Charts are authored on the frontend `ResourceUIBehaviorConfig.chartViews`\n * (the only chart-VIEW authoring surface), but that surface is frontend-only\n * and the backend cannot read it. The embedded `ChartDefinition` is a shared\n * data contract (`@wildo-ai/saas-models`), so the app declares it once in its\n * shared layer and feeds the SAME object to both the frontend `chartViews`\n * entry (render) and this module slot (backend execution). Without this, a\n * resource-owned chart renders a host but its data fetch 404s with\n * `chart_not_found`. Mirrors `pdfTemplateBindings`: a backend-module slot for\n * a definition whose stable identity is shared but whose backend wiring is\n * not derivable from the frontend authoring surface.\n */\n chartDefinitions?: ChartDefinition[];\n /**\n * Declarative data-seeding entries contributed by this module.\n *\n * Collected by `mergeBackendDomainModules` and threaded through\n * `ApplicationInitializationConfig.dataSeeds` so the\n * `DataSeedRegistry` / `DataSeedDispatcher` can register and run them at\n * startup. Each seed remains declarative; choose its mode and scope in the\n * seed definition rather than encoding one-off startup mutation here.\n */\n seeds?: DataSeedDefinition[];\n\n /**\n * Custom scope-iteration callbacks contributed by this module, keyed by\n * the same `customResolverKey` that a sibling\n * `DataSeedDefinition.schedule.customResolverKey` references.\n *\n * Aggregated by {@link mergeBackendDomainModules} into a single\n * `Record<string, DataSeedScopeResolver>` and threaded through\n * `ApplicationInitializationConfig.dataSeedScopeResolvers`. The\n * data-seeding bootstrap (`runDataSeedingApplicationBootstrap`) hands\n * the merged map to\n * {@link DataSeedScopeResolverRegistryBackendService.registerResolvers}\n * once per boot.\n *\n * Cross-module duplicate keys are rejected at merge time with a\n * `CONFIGURATION` error (silent overwrite would let one module shadow\n * another's resolver. Give every module-owned resolver a stable, unique key\n * and reference that key from the matching seed schedule.\n */\n dataSeedScopeResolvers?: Record<string, DataSeedScopeResolver>;\n}\n\nexport function mergeBackendDomainModules(\n ...modules: BackendDomainModule[]\n): BackendDomainModule {\n return {\n resourceConfigurations: Object.assign(\n {},\n ...modules.map(m => m.resourceConfigurations).filter(Boolean),\n ) as NonNullable<BackendDomainModule['resourceConfigurations']>,\n resourceFieldIdentifiers: Object.assign(\n {},\n ...modules.map(m => m.resourceFieldIdentifiers).filter(Boolean),\n ) as Record<string, string>,\n resourceRelationships: modules.flatMap(m => m.resourceRelationships ?? []),\n operations: modules.flatMap(m => m.operations ?? []),\n controllers: modules.flatMap(m => m.controllers ?? []),\n flowsActors: mergeFlowsActors(modules),\n pdfTemplateBindings: mergePdfTemplateBindings(modules),\n chartDefinitions: mergeChartDefinitions(modules),\n seeds: modules.flatMap(m => m.seeds ?? []),\n dataSeedScopeResolvers: mergeDataSeedScopeResolvers(modules),\n };\n}\n\n/**\n * Merge each module's `dataSeedScopeResolvers` map into a single record,\n * rejecting duplicate `customResolverKey`s across modules with a precise\n * error that names BOTH contributors. We fail at merge time (not at\n * registry-time) so the operator sees the error from a single\n * source-of-truth call site instead of the registry's\n * \"duplicate registration\" error which only knows about the second\n * arrival.\n *\n * Returns `undefined` (NOT `{}`) when no module contributes any\n * resolvers — keeps `ApplicationInitializationConfig.dataSeedScopeResolvers`\n * optional (the bootstrap helper treats `undefined` and `{}` identically).\n *\n * Module-level intra-record duplicates cannot occur — a JS object literal\n * silently overwrites duplicate keys at parse time, well before this\n * function runs. Cross-module duplicates ARE caught here.\n */\n/**\n * Merge each module's resource-owned `chartDefinitions`, rejecting duplicate\n * chart `ref`s across modules with a precise error that names BOTH contributing\n * module indices — mirroring {@link mergePdfTemplateBindings} /\n * {@link mergeDataSeedScopeResolvers}. Failing at merge time (not at\n * `ChartRegistry.registerChart`) gives the operator a single source-of-truth\n * error that knows both arrivals, instead of the registry's generic\n * \"duplicate registration\" message which only sees the second one.\n */\nfunction mergeChartDefinitions(\n modules: BackendDomainModule[],\n): BackendDomainModule['chartDefinitions'] {\n const merged: NonNullable<BackendDomainModule['chartDefinitions']> = [];\n const sourceIndexByRef = new Map<string, number>();\n\n for (let moduleIndex = 0; moduleIndex < modules.length; moduleIndex++) {\n const moduleCharts = modules[moduleIndex]!.chartDefinitions;\n if (!moduleCharts) continue;\n for (const chartDefinition of moduleCharts) {\n // Dedup on the NORMALIZED ref — the same key the backend ChartRegistry\n // uses (`resolveExecutionChartRef`). Deduping on the raw ref let two\n // modules contributing ' x' and 'x' pass this precise merge check only to\n // collide later with the registry's generic duplicate error; normalizing\n // here surfaces the collision at merge time with both module indices.\n const ref = normalizeChartExecutionRef(chartDefinition.ref);\n if (sourceIndexByRef.has(ref)) {\n const firstSource = sourceIndexByRef.get(ref)!;\n throw new Error(\n `mergeBackendDomainModules: duplicate chartDefinitions ref '${ref}' — contributed by module index ${firstSource} AND module index ${moduleIndex}. Pick a unique chart ref or consolidate into a single module.`,\n );\n }\n sourceIndexByRef.set(ref, moduleIndex);\n merged.push(chartDefinition);\n }\n }\n\n return merged;\n}\n\nfunction mergeDataSeedScopeResolvers(\n modules: BackendDomainModule[],\n): BackendDomainModule['dataSeedScopeResolvers'] {\n const merged: Record<string, BackendDomainModule['dataSeedScopeResolvers'] extends Record<string, infer R> | undefined ? R : never> = {};\n const sourceIndexByKey = new Map<string, number>();\n\n for (let moduleIndex = 0; moduleIndex < modules.length; moduleIndex++) {\n const moduleResolvers = modules[moduleIndex]!.dataSeedScopeResolvers;\n if (!moduleResolvers) continue;\n for (const [key, resolver] of Object.entries(moduleResolvers)) {\n if (sourceIndexByKey.has(key)) {\n const firstSource = sourceIndexByKey.get(key)!;\n throw new Error(\n `mergeBackendDomainModules: duplicate dataSeedScopeResolvers key '${key}' — contributed by module index ${firstSource} AND module index ${moduleIndex}. Pick a unique customResolverKey or consolidate into a single module.`,\n );\n }\n sourceIndexByKey.set(key, moduleIndex);\n merged[key] = resolver;\n }\n }\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergePdfTemplateBindings(\n modules: BackendDomainModule[],\n): BackendDomainModule['pdfTemplateBindings'] {\n const merged: NonNullable<BackendDomainModule['pdfTemplateBindings']> = {};\n const sourceIndexByKey = new Map<string, number>();\n\n for (let moduleIndex = 0; moduleIndex < modules.length; moduleIndex++) {\n const moduleBindings = modules[moduleIndex]!.pdfTemplateBindings;\n if (!moduleBindings) continue;\n\n for (const [resourceType, fields] of Object.entries(moduleBindings)) {\n if (!fields) continue;\n merged[resourceType] ??= {};\n\n for (const [fieldName, binding] of Object.entries(fields)) {\n const bindingKey = `${resourceType}.${fieldName}`;\n if (sourceIndexByKey.has(bindingKey)) {\n const firstSource = sourceIndexByKey.get(bindingKey)!;\n throw new Error(\n `mergeBackendDomainModules: duplicate pdfTemplateBindings key '${bindingKey}' — contributed by module index ${firstSource} AND module index ${moduleIndex}. Bind each generated PDF field from exactly one backend module.`,\n );\n }\n\n sourceIndexByKey.set(bindingKey, moduleIndex);\n merged[resourceType]![fieldName] = binding;\n }\n }\n }\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeFlowsActors(\n modules: BackendDomainModule[],\n): BackendDomainModule['flowsActors'] {\n const hasAny = modules.some(m => m.flowsActors);\n if (!hasAny) return undefined;\n\n return {\n flowActorSystemsFactoryMap: Object.assign(\n {},\n ...modules.map(m => m.flowsActors?.flowActorSystemsFactoryMap).filter(Boolean),\n ) as FlowActorSystem_InitializationFactoryMap,\n agents: modules.flatMap(m => m.flowsActors?.agents ?? []),\n functionTools: modules.flatMap(m => m.flowsActors?.functionTools ?? []),\n };\n}\n/** @wildo_source:part:end saas.backend.domain-module */\n\nexport function mergeInitializationFlowsActorsRegistry(\n base: ApplicationInitializationConfig['flowsActorsRegistry'],\n override: ApplicationInitializationConfig['flowsActorsRegistry'],\n): ApplicationInitializationConfig['flowsActorsRegistry'] {\n if (!base && !override) return undefined;\n\n return {\n flowActorSystemsFactoryMap: {\n ...(base?.flowActorSystemsFactoryMap ?? {}),\n ...(override?.flowActorSystemsFactoryMap ?? {}),\n },\n agents: [\n ...(base?.agents ?? []),\n ...(override?.agents ?? []),\n ],\n functionTools: [\n ...(base?.functionTools ?? []),\n ...(override?.functionTools ?? []),\n ],\n };\n}\n\nexport function mergeInitializationControllers(\n base: ApplicationInitializationConfig['customControllers'],\n override: ApplicationInitializationConfig['customControllers'],\n): ApplicationInitializationConfig['customControllers'] {\n const merged = [\n ...(base ?? []),\n ...(override ?? []),\n ];\n\n return merged.length > 0 ? merged : undefined;\n}\n\nexport interface ApplicationInitializationOverrides {\n additionalServiceImplementations?: ApplicationInitializationConfig['customServiceImplementations'];\n customControllers?: ApplicationInitializationConfig['customControllers'];\n flowsActorsRegistry?: ApplicationInitializationConfig['flowsActorsRegistry'];\n container?: ApplicationInitializationConfig['container'];\n controllerWhiteList?: ApplicationInitializationConfig['controllerWhiteList'];\n isPlatformApplication?: ApplicationInitializationConfig['isPlatformApplication'];\n customLabels?: ApplicationInitializationConfig['customLabels'];\n backendProviderRegistry?: ApplicationInitializationConfig['backendProviderRegistry'];\n productDefinitions?: ApplicationInitializationConfig['productDefinitions'];\n emailTemplateDefinitions?: ApplicationInitializationConfig['emailTemplateDefinitions'];\n providerRuntime?: ApplicationInitializationConfig['providerRuntime'];\n backendConfig?: ApplicationInitializationConfig['backendConfig'];\n headlessMode?: ApplicationInitializationConfig['headlessMode'];\n skipCronSync?: ApplicationInitializationConfig['skipCronSync'];\n /**\n * Present because its ABSENCE was a silent trap. A key declared on\n * {@link ApplicationInitializationConfig} but missing here is accepted by the caller's type (the\n * overrides object is structurally wider than what is read) and then simply never copied into the\n * built config — so a host supplying it the documented way gets no error and no effect. That is\n * how `resourceServerInstances` once crash-looped the minion, and `skipJobConsumers` was sitting\n * in exactly the same hole: it worked ONLY for `start-minion-application`, which bypasses this\n * surface and spreads the flag straight onto `initialize`.\n *\n * The stakes are why it matters: without this flag a secondary runtime consumes the SHARED\n * application queues, so RabbitMQ round-robins scheduled-cron ticks into a process that\n * dead-letters every one it cannot interpret.\n */\n skipJobConsumers?: ApplicationInitializationConfig['skipJobConsumers'];\n servicesRegistryDecoratorFactory?: ApplicationInitializationConfig['servicesRegistryDecoratorFactory'];\n /** Canonical caller identifier for future materialized provider-scope selection. */\n serviceIdentifier?: ApplicationInitializationConfig['serviceIdentifier'];\n pdfTemplateBindings?: ApplicationInitializationConfig['pdfTemplateBindings'];\n chartDefinitions?: ApplicationInitializationConfig['chartDefinitions'];\n /**\n * Named resource-server instances (MCP / A2A) this host declares.\n *\n * Belongs on the assembly surface for the same reason as\n * `pdfTemplateBindings`: it is a DECLARATION that the resource graph's\n * per-operation membership refs (`operation.mcp.servers`) point at, and\n * `StartApplicationBackendService` fail-closes at boot when a membership ref\n * names an undeclared server. Every host that boots the resource graph must\n * therefore be able to supply the declarations through the normal assembly\n * path — including hosts that mount no MCP/A2A transport and carry them\n * purely for boot coherence (minions).\n *\n * Historically absent here, which forced callers to invent post-assembly\n * workarounds (spreading the key onto the built config) and silently dropped\n * it for any caller that used the documented `overrides` route instead.\n */\n resourceServerInstances?: ApplicationInitializationConfig['resourceServerInstances'];\n /**\n * Resources this application narrows by ORGANIZATION UNIT.\n *\n * The THIRD instance of the trap documented on `skipJobConsumers` above, and the worst-behaved of\n * the three: the other two announced themselves — a crash-looping minion, a queue consuming ticks\n * it could not interpret. This one is SILENT and fails OPEN in appearance. An application that\n * opted a resource in through the documented assembly surface had the declaration dropped, so the\n * registry stayed empty, every narrowing decision resolved `NOT_APPLICABLE`, and the resource\n * behaved exactly as if it had never been opted in — including for a test suite written to prove\n * the confinement, which would have passed while measuring nothing.\n *\n * Only the direct `initialize({ organizationUnitNarrowing })` route worked, which no application\n * host uses.\n */\n organizationUnitNarrowing?: ApplicationInitializationConfig['organizationUnitNarrowing'];\n}\n\n/**\n * @wildo_source:part:start saas.backend.application-initialization.assembly facet:layer:backend facet:family:bootstrap\n *\n * Input shape for assembling `ApplicationInitializationConfig` from the merged shared registry plus backend operations/controllers/flows.\n */\nexport interface ApplicationInitializationAssemblyInput {\n sharedRegistry: Pick<\n SharedSaaSModulesRegistry,\n | 'resourceConfigurations'\n | 'resourceFieldIdentifiers'\n | 'resourceRelationships'\n | 'customRoles'\n | 'customFeatureDefinitions'\n | 'customFeatureConfiguration'\n | 'customMilestoneDefinitions'\n | 'productDefinitions'\n | 'notificationBadgeDefinitions'\n >;\n backendRegistry: Pick<BackendDomainModule, 'operations' | 'controllers' | 'flowsActors' | 'pdfTemplateBindings' | 'chartDefinitions' | 'seeds' | 'dataSeedScopeResolvers'>;\n defaultFlowsActorsRegistry?: ApplicationInitializationConfig['flowsActorsRegistry'];\n defaultCustomLabels?: ApplicationInitializationConfig['customLabels'];\n defaultBackendProviderRegistry?: ApplicationInitializationConfig['backendProviderRegistry'];\n defaultProductDefinitions?: ApplicationInitializationConfig['productDefinitions'];\n defaultEmailTemplateDefinitions?: ApplicationInitializationConfig['emailTemplateDefinitions'];\n defaultBackendConfig?: ApplicationInitializationConfig['backendConfig'];\n defaultProviderRuntime?: ApplicationInitializationConfig['providerRuntime'];\n overrides?: ApplicationInitializationOverrides;\n}\n/** @wildo_source:part:end saas.backend.application-initialization.assembly */\n\nexport function buildApplicationInitializationConfigFromModules(\n input: ApplicationInitializationAssemblyInput,\n): ApplicationInitializationConfig {\n const overrides = input.overrides ?? {};\n\n return {\n sharedResourceConfigurations: input.sharedRegistry.resourceConfigurations,\n sharedResourceFieldIdentifiers: input.sharedRegistry.resourceFieldIdentifiers,\n sharedResourceRelationships: input.sharedRegistry.resourceRelationships,\n customServiceImplementations: [\n ...(overrides.additionalServiceImplementations ?? []),\n ...(input.backendRegistry.operations ?? []),\n ],\n customRoles: input.sharedRegistry.customRoles,\n customControllers: mergeInitializationControllers(\n input.backendRegistry.controllers,\n overrides.customControllers,\n ),\n container: overrides.container,\n controllerWhiteList: overrides.controllerWhiteList,\n isPlatformApplication: overrides.isPlatformApplication,\n flowsActorsRegistry: mergeInitializationFlowsActorsRegistry(\n mergeInitializationFlowsActorsRegistry(\n input.backendRegistry.flowsActors,\n input.defaultFlowsActorsRegistry,\n ),\n overrides.flowsActorsRegistry,\n ),\n dataSeeds: input.backendRegistry.seeds ?? [],\n dataSeedScopeResolvers: input.backendRegistry.dataSeedScopeResolvers,\n customLabels: overrides.customLabels ?? input.defaultCustomLabels,\n backendProviderRegistry: overrides.backendProviderRegistry ?? input.defaultBackendProviderRegistry,\n customFeatureDefinitions: input.sharedRegistry.customFeatureDefinitions,\n customFeatureConfiguration: input.sharedRegistry.customFeatureConfiguration,\n customMilestoneDefinitions: input.sharedRegistry.customMilestoneDefinitions,\n notificationBadgeDefinitions: input.sharedRegistry.notificationBadgeDefinitions,\n productDefinitions: overrides.productDefinitions\n ?? input.defaultProductDefinitions\n ?? input.sharedRegistry.productDefinitions,\n emailTemplateDefinitions: overrides.emailTemplateDefinitions ?? input.defaultEmailTemplateDefinitions,\n providerRuntime: overrides.providerRuntime ?? input.defaultProviderRuntime,\n pdfTemplateBindings: overrides.pdfTemplateBindings ?? input.backendRegistry.pdfTemplateBindings,\n chartDefinitions: overrides.chartDefinitions ?? input.backendRegistry.chartDefinitions,\n resourceServerInstances: overrides.resourceServerInstances,\n organizationUnitNarrowing: overrides.organizationUnitNarrowing,\n backendConfig: overrides.backendConfig ?? input.defaultBackendConfig,\n headlessMode: overrides.headlessMode,\n skipCronSync: overrides.skipCronSync,\n skipJobConsumers: overrides.skipJobConsumers,\n servicesRegistryDecoratorFactory: overrides.servicesRegistryDecoratorFactory,\n serviceIdentifier: overrides.serviceIdentifier,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"domain-module.backend.definitions.js","sourceRoot":"","sources":["../../../../src/runtime/domain-module.backend.definitions.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeChartExecutionRef } from '@wildo-ai/saas-models';\nimport type {\n ChartDefinition,\n FlowsActors_Agent,\n SharedSaaSModulesRegistry,\n SharedDomainModule,\n} from '@wildo-ai/saas-models';\nimport type { DataSeedDefinition } from '~wildo-backend-lib/data-seeding/models/data-seed.shared.schemas';\nimport type { DataSeedScopeResolver } from '~wildo-backend-lib/data-seeding/services/data-seed-scope-resolver-registry.backend.service';\nimport type { ResourceCustomServiceImplementationFactory } from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport type { AbstractControllerBackendService } from '~wildo-backend-lib/base-classes/services/controllers/abstract-controller.backend.service';\nimport type { FlowActorSystem_InitializationFactoryMap } from '~wildo-backend-lib/flows-actors/models/flows-actors.backend.schemas';\nimport type { FunctionTool } from '~wildo-backend-lib/flows-actors/models/function-tools.backend.definitions';\nimport type { PdfTemplateBindingsMap } from '~wildo-backend-lib/pdf-templates/models/pdf-template-binding';\nimport type { ApplicationInitializationConfig } from './services/start-application.backend.service';\n\n/**\n * @wildo_source:part:start saas.backend.domain-module facet:layer:backend facet:family:module\n *\n * Application backend module declaration. It gathers the application's custom\n * operations, HTTP controllers, Flows/Actors registrations and backend-only\n * bindings into one unit that startup can merge deterministically.\n */\nexport interface BackendDomainModule extends SharedDomainModule {\n operations?: ResourceCustomServiceImplementationFactory[];\n controllers?: AbstractControllerBackendService[];\n flowsActors?: {\n flowActorSystemsFactoryMap?: FlowActorSystem_InitializationFactoryMap;\n agents?: FlowsActors_Agent[];\n /**\n * Executable tools agents in this module can call (grounding). Build them\n * with the engine's `resourceReadTool(resourceType)` factory (or author a\n * custom `FunctionTool`); reference them from an agent's\n * `capabilities.tools.functionRefs`.\n */\n functionTools?: FunctionTool[];\n };\n /**\n * Backend-only direct PDF template bindings contributed by this module.\n *\n * Shared schemas expose only `generation.templateId`; this map is where\n * backend startup binds generated file fields to imported template objects.\n */\n pdfTemplateBindings?: PdfTemplateBindingsMap;\n /**\n * Resource-owned chart definitions contributed by this module, registered\n * into the backend `ChartRegistryBackendService` at startup so the manual\n * `/charts/:chartRef/data` endpoint can execute their aggregation query.\n *\n * Charts are authored on the frontend `ResourceUIBehaviorConfig.chartViews`\n * (the only chart-VIEW authoring surface), but that surface is frontend-only\n * and the backend cannot read it. The embedded `ChartDefinition` is a shared\n * data contract (`@wildo-ai/saas-models`), so the app declares it once in its\n * shared layer and feeds the SAME object to both the frontend `chartViews`\n * entry (render) and this module slot (backend execution). Without this, a\n * resource-owned chart renders a host but its data fetch 404s with\n * `chart_not_found`. Mirrors `pdfTemplateBindings`: a backend-module slot for\n * a definition whose stable identity is shared but whose backend wiring is\n * not derivable from the frontend authoring surface.\n */\n chartDefinitions?: ChartDefinition[];\n /**\n * Declarative data-seeding entries contributed by this module.\n *\n * Collected by `mergeBackendDomainModules` and threaded through\n * `ApplicationInitializationConfig.dataSeeds` so the\n * `DataSeedRegistry` / `DataSeedDispatcher` can register and run them at\n * startup. Each seed remains declarative; choose its mode and scope in the\n * seed definition rather than encoding one-off startup mutation here.\n */\n seeds?: DataSeedDefinition[];\n\n /**\n * Custom scope-iteration callbacks contributed by this module, keyed by\n * the same `customResolverKey` that a sibling\n * `DataSeedDefinition.schedule.customResolverKey` references.\n *\n * Aggregated by {@link mergeBackendDomainModules} into a single\n * `Record<string, DataSeedScopeResolver>` and threaded through\n * `ApplicationInitializationConfig.dataSeedScopeResolvers`. The\n * data-seeding bootstrap (`runDataSeedingApplicationBootstrap`) hands\n * the merged map to\n * {@link DataSeedScopeResolverRegistryBackendService.registerResolvers}\n * once per boot.\n *\n * Cross-module duplicate keys are rejected at merge time with a\n * `CONFIGURATION` error (silent overwrite would let one module shadow\n * another's resolver. Give every module-owned resolver a stable, unique key\n * and reference that key from the matching seed schedule.\n */\n dataSeedScopeResolvers?: Record<string, DataSeedScopeResolver>;\n}\n\n/**\n * Merge every module's backend contributions into one.\n *\n * ⚠️ **The fields do NOT all treat a cross-module duplicate the same way, and the difference is\n * silent.** Three of them reject a duplicate at merge time with a `CONFIGURATION` error naming both\n * contributors — `dataSeedScopeResolvers`, `pdfTemplateBindings` and `chartDefinitions`. Two of them\n * do not:\n *\n * | field | duplicate across two modules |\n * |---|---|\n * | `resourceConfigurations` | **last module wins, silently** |\n * | `resourceFieldIdentifiers` | **last module wins, silently** |\n * | `dataSeedScopeResolvers` · `pdfTemplateBindings` · `chartDefinitions` | rejected, naming both modules |\n * | `resourceRelationships` · `operations` · `controllers` · `seeds` | concatenated — both are kept |\n *\n * Do not generalise the rejection to the whole object. Two modules declaring the same resource\n * identifier produce no error and no warning: whichever is later in the registry array replaces the\n * earlier one entirely, and the application boots. That shadowing is what lets an application layer\n * its own module over the engine's, so it cannot be made an error — which is exactly why an\n * ACCIDENTAL collision is invisible.\n *\n * If a resource behaves as though its configuration were somebody else's, check for a second module\n * declaring the same identifier before looking anywhere else.\n */\nexport function mergeBackendDomainModules(\n ...modules: BackendDomainModule[]\n): BackendDomainModule {\n return {\n resourceConfigurations: Object.assign(\n {},\n ...modules.map(m => m.resourceConfigurations).filter(Boolean),\n ) as NonNullable<BackendDomainModule['resourceConfigurations']>,\n resourceFieldIdentifiers: Object.assign(\n {},\n ...modules.map(m => m.resourceFieldIdentifiers).filter(Boolean),\n ) as Record<string, string>,\n resourceRelationships: modules.flatMap(m => m.resourceRelationships ?? []),\n operations: modules.flatMap(m => m.operations ?? []),\n controllers: modules.flatMap(m => m.controllers ?? []),\n flowsActors: mergeFlowsActors(modules),\n pdfTemplateBindings: mergePdfTemplateBindings(modules),\n chartDefinitions: mergeChartDefinitions(modules),\n seeds: modules.flatMap(m => m.seeds ?? []),\n dataSeedScopeResolvers: mergeDataSeedScopeResolvers(modules),\n };\n}\n\n/**\n * Merge each module's `dataSeedScopeResolvers` map into a single record,\n * rejecting duplicate `customResolverKey`s across modules with a precise\n * error that names BOTH contributors. We fail at merge time (not at\n * registry-time) so the operator sees the error from a single\n * source-of-truth call site instead of the registry's\n * \"duplicate registration\" error which only knows about the second\n * arrival.\n *\n * Returns `undefined` (NOT `{}`) when no module contributes any\n * resolvers — keeps `ApplicationInitializationConfig.dataSeedScopeResolvers`\n * optional (the bootstrap helper treats `undefined` and `{}` identically).\n *\n * Module-level intra-record duplicates cannot occur — a JS object literal\n * silently overwrites duplicate keys at parse time, well before this\n * function runs. Cross-module duplicates ARE caught here.\n */\n/**\n * Merge each module's resource-owned `chartDefinitions`, rejecting duplicate\n * chart `ref`s across modules with a precise error that names BOTH contributing\n * module indices — mirroring {@link mergePdfTemplateBindings} /\n * {@link mergeDataSeedScopeResolvers}. Failing at merge time (not at\n * `ChartRegistry.registerChart`) gives the operator a single source-of-truth\n * error that knows both arrivals, instead of the registry's generic\n * \"duplicate registration\" message which only sees the second one.\n */\nfunction mergeChartDefinitions(\n modules: BackendDomainModule[],\n): BackendDomainModule['chartDefinitions'] {\n const merged: NonNullable<BackendDomainModule['chartDefinitions']> = [];\n const sourceIndexByRef = new Map<string, number>();\n\n for (let moduleIndex = 0; moduleIndex < modules.length; moduleIndex++) {\n const moduleCharts = modules[moduleIndex]!.chartDefinitions;\n if (!moduleCharts) continue;\n for (const chartDefinition of moduleCharts) {\n // Dedup on the NORMALIZED ref — the same key the backend ChartRegistry\n // uses (`resolveExecutionChartRef`). Deduping on the raw ref let two\n // modules contributing ' x' and 'x' pass this precise merge check only to\n // collide later with the registry's generic duplicate error; normalizing\n // here surfaces the collision at merge time with both module indices.\n const ref = normalizeChartExecutionRef(chartDefinition.ref);\n if (sourceIndexByRef.has(ref)) {\n const firstSource = sourceIndexByRef.get(ref)!;\n throw new Error(\n `mergeBackendDomainModules: duplicate chartDefinitions ref '${ref}' — contributed by module index ${firstSource} AND module index ${moduleIndex}. Pick a unique chart ref or consolidate into a single module.`,\n );\n }\n sourceIndexByRef.set(ref, moduleIndex);\n merged.push(chartDefinition);\n }\n }\n\n return merged;\n}\n\nfunction mergeDataSeedScopeResolvers(\n modules: BackendDomainModule[],\n): BackendDomainModule['dataSeedScopeResolvers'] {\n const merged: Record<string, BackendDomainModule['dataSeedScopeResolvers'] extends Record<string, infer R> | undefined ? R : never> = {};\n const sourceIndexByKey = new Map<string, number>();\n\n for (let moduleIndex = 0; moduleIndex < modules.length; moduleIndex++) {\n const moduleResolvers = modules[moduleIndex]!.dataSeedScopeResolvers;\n if (!moduleResolvers) continue;\n for (const [key, resolver] of Object.entries(moduleResolvers)) {\n if (sourceIndexByKey.has(key)) {\n const firstSource = sourceIndexByKey.get(key)!;\n throw new Error(\n `mergeBackendDomainModules: duplicate dataSeedScopeResolvers key '${key}' — contributed by module index ${firstSource} AND module index ${moduleIndex}. Pick a unique customResolverKey or consolidate into a single module.`,\n );\n }\n sourceIndexByKey.set(key, moduleIndex);\n merged[key] = resolver;\n }\n }\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergePdfTemplateBindings(\n modules: BackendDomainModule[],\n): BackendDomainModule['pdfTemplateBindings'] {\n const merged: NonNullable<BackendDomainModule['pdfTemplateBindings']> = {};\n const sourceIndexByKey = new Map<string, number>();\n\n for (let moduleIndex = 0; moduleIndex < modules.length; moduleIndex++) {\n const moduleBindings = modules[moduleIndex]!.pdfTemplateBindings;\n if (!moduleBindings) continue;\n\n for (const [resourceType, fields] of Object.entries(moduleBindings)) {\n if (!fields) continue;\n merged[resourceType] ??= {};\n\n for (const [fieldName, binding] of Object.entries(fields)) {\n const bindingKey = `${resourceType}.${fieldName}`;\n if (sourceIndexByKey.has(bindingKey)) {\n const firstSource = sourceIndexByKey.get(bindingKey)!;\n throw new Error(\n `mergeBackendDomainModules: duplicate pdfTemplateBindings key '${bindingKey}' — contributed by module index ${firstSource} AND module index ${moduleIndex}. Bind each generated PDF field from exactly one backend module.`,\n );\n }\n\n sourceIndexByKey.set(bindingKey, moduleIndex);\n merged[resourceType]![fieldName] = binding;\n }\n }\n }\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeFlowsActors(\n modules: BackendDomainModule[],\n): BackendDomainModule['flowsActors'] {\n const hasAny = modules.some(m => m.flowsActors);\n if (!hasAny) return undefined;\n\n return {\n flowActorSystemsFactoryMap: Object.assign(\n {},\n ...modules.map(m => m.flowsActors?.flowActorSystemsFactoryMap).filter(Boolean),\n ) as FlowActorSystem_InitializationFactoryMap,\n agents: modules.flatMap(m => m.flowsActors?.agents ?? []),\n functionTools: modules.flatMap(m => m.flowsActors?.functionTools ?? []),\n };\n}\n/** @wildo_source:part:end saas.backend.domain-module */\n\nexport function mergeInitializationFlowsActorsRegistry(\n base: ApplicationInitializationConfig['flowsActorsRegistry'],\n override: ApplicationInitializationConfig['flowsActorsRegistry'],\n): ApplicationInitializationConfig['flowsActorsRegistry'] {\n if (!base && !override) return undefined;\n\n return {\n flowActorSystemsFactoryMap: {\n ...(base?.flowActorSystemsFactoryMap ?? {}),\n ...(override?.flowActorSystemsFactoryMap ?? {}),\n },\n agents: [\n ...(base?.agents ?? []),\n ...(override?.agents ?? []),\n ],\n functionTools: [\n ...(base?.functionTools ?? []),\n ...(override?.functionTools ?? []),\n ],\n };\n}\n\nexport function mergeInitializationControllers(\n base: ApplicationInitializationConfig['customControllers'],\n override: ApplicationInitializationConfig['customControllers'],\n): ApplicationInitializationConfig['customControllers'] {\n const merged = [\n ...(base ?? []),\n ...(override ?? []),\n ];\n\n return merged.length > 0 ? merged : undefined;\n}\n\nexport interface ApplicationInitializationOverrides {\n additionalServiceImplementations?: ApplicationInitializationConfig['customServiceImplementations'];\n customControllers?: ApplicationInitializationConfig['customControllers'];\n flowsActorsRegistry?: ApplicationInitializationConfig['flowsActorsRegistry'];\n container?: ApplicationInitializationConfig['container'];\n controllerWhiteList?: ApplicationInitializationConfig['controllerWhiteList'];\n isPlatformApplication?: ApplicationInitializationConfig['isPlatformApplication'];\n customLabels?: ApplicationInitializationConfig['customLabels'];\n backendProviderRegistry?: ApplicationInitializationConfig['backendProviderRegistry'];\n productDefinitions?: ApplicationInitializationConfig['productDefinitions'];\n emailTemplateDefinitions?: ApplicationInitializationConfig['emailTemplateDefinitions'];\n providerRuntime?: ApplicationInitializationConfig['providerRuntime'];\n backendConfig?: ApplicationInitializationConfig['backendConfig'];\n headlessMode?: ApplicationInitializationConfig['headlessMode'];\n skipCronSync?: ApplicationInitializationConfig['skipCronSync'];\n /**\n * Present because its ABSENCE was a silent trap. A key declared on\n * {@link ApplicationInitializationConfig} but missing here is accepted by the caller's type (the\n * overrides object is structurally wider than what is read) and then simply never copied into the\n * built config — so a host supplying it the documented way gets no error and no effect. That is\n * how `resourceServerInstances` once crash-looped the minion, and `skipJobConsumers` was sitting\n * in exactly the same hole: it worked ONLY for `start-minion-application`, which bypasses this\n * surface and spreads the flag straight onto `initialize`.\n *\n * The stakes are why it matters: without this flag a secondary runtime consumes the SHARED\n * application queues, so RabbitMQ round-robins scheduled-cron ticks into a process that\n * dead-letters every one it cannot interpret.\n */\n skipJobConsumers?: ApplicationInitializationConfig['skipJobConsumers'];\n servicesRegistryDecoratorFactory?: ApplicationInitializationConfig['servicesRegistryDecoratorFactory'];\n /** Canonical caller identifier for future materialized provider-scope selection. */\n serviceIdentifier?: ApplicationInitializationConfig['serviceIdentifier'];\n pdfTemplateBindings?: ApplicationInitializationConfig['pdfTemplateBindings'];\n chartDefinitions?: ApplicationInitializationConfig['chartDefinitions'];\n /**\n * Named resource-server instances (MCP / A2A) this host declares.\n *\n * Belongs on the assembly surface for the same reason as\n * `pdfTemplateBindings`: it is a DECLARATION that the resource graph's\n * per-operation membership refs (`operation.mcp.servers`) point at, and\n * `StartApplicationBackendService` fail-closes at boot when a membership ref\n * names an undeclared server. Every host that boots the resource graph must\n * therefore be able to supply the declarations through the normal assembly\n * path — including hosts that mount no MCP/A2A transport and carry them\n * purely for boot coherence (minions).\n *\n * Historically absent here, which forced callers to invent post-assembly\n * workarounds (spreading the key onto the built config) and silently dropped\n * it for any caller that used the documented `overrides` route instead.\n */\n resourceServerInstances?: ApplicationInitializationConfig['resourceServerInstances'];\n /**\n * Resources this application narrows by ORGANIZATION UNIT.\n *\n * The THIRD instance of the trap documented on `skipJobConsumers` above, and the worst-behaved of\n * the three: the other two announced themselves — a crash-looping minion, a queue consuming ticks\n * it could not interpret. This one is SILENT and fails OPEN in appearance. An application that\n * opted a resource in through the documented assembly surface had the declaration dropped, so the\n * registry stayed empty, every narrowing decision resolved `NOT_APPLICABLE`, and the resource\n * behaved exactly as if it had never been opted in — including for a test suite written to prove\n * the confinement, which would have passed while measuring nothing.\n *\n * Only the direct `initialize({ organizationUnitNarrowing })` route worked, which no application\n * host uses.\n */\n organizationUnitNarrowing?: ApplicationInitializationConfig['organizationUnitNarrowing'];\n}\n\n/**\n * @wildo_source:part:start saas.backend.application-initialization.assembly facet:layer:backend facet:family:bootstrap\n *\n * Input shape for assembling `ApplicationInitializationConfig` from the merged shared registry plus backend operations/controllers/flows.\n */\nexport interface ApplicationInitializationAssemblyInput {\n sharedRegistry: Pick<\n SharedSaaSModulesRegistry,\n | 'resourceConfigurations'\n | 'resourceFieldIdentifiers'\n | 'resourceRelationships'\n | 'customRoles'\n | 'customFeatureDefinitions'\n | 'customFeatureConfiguration'\n | 'customMilestoneDefinitions'\n | 'productDefinitions'\n | 'notificationBadgeDefinitions'\n >;\n backendRegistry: Pick<BackendDomainModule, 'operations' | 'controllers' | 'flowsActors' | 'pdfTemplateBindings' | 'chartDefinitions' | 'seeds' | 'dataSeedScopeResolvers'>;\n defaultFlowsActorsRegistry?: ApplicationInitializationConfig['flowsActorsRegistry'];\n defaultCustomLabels?: ApplicationInitializationConfig['customLabels'];\n defaultBackendProviderRegistry?: ApplicationInitializationConfig['backendProviderRegistry'];\n defaultProductDefinitions?: ApplicationInitializationConfig['productDefinitions'];\n defaultEmailTemplateDefinitions?: ApplicationInitializationConfig['emailTemplateDefinitions'];\n defaultBackendConfig?: ApplicationInitializationConfig['backendConfig'];\n defaultProviderRuntime?: ApplicationInitializationConfig['providerRuntime'];\n overrides?: ApplicationInitializationOverrides;\n}\n/** @wildo_source:part:end saas.backend.application-initialization.assembly */\n\nexport function buildApplicationInitializationConfigFromModules(\n input: ApplicationInitializationAssemblyInput,\n): ApplicationInitializationConfig {\n const overrides = input.overrides ?? {};\n\n return {\n sharedResourceConfigurations: input.sharedRegistry.resourceConfigurations,\n sharedResourceFieldIdentifiers: input.sharedRegistry.resourceFieldIdentifiers,\n sharedResourceRelationships: input.sharedRegistry.resourceRelationships,\n customServiceImplementations: [\n ...(overrides.additionalServiceImplementations ?? []),\n ...(input.backendRegistry.operations ?? []),\n ],\n customRoles: input.sharedRegistry.customRoles,\n customControllers: mergeInitializationControllers(\n input.backendRegistry.controllers,\n overrides.customControllers,\n ),\n container: overrides.container,\n controllerWhiteList: overrides.controllerWhiteList,\n isPlatformApplication: overrides.isPlatformApplication,\n flowsActorsRegistry: mergeInitializationFlowsActorsRegistry(\n mergeInitializationFlowsActorsRegistry(\n input.backendRegistry.flowsActors,\n input.defaultFlowsActorsRegistry,\n ),\n overrides.flowsActorsRegistry,\n ),\n dataSeeds: input.backendRegistry.seeds ?? [],\n dataSeedScopeResolvers: input.backendRegistry.dataSeedScopeResolvers,\n customLabels: overrides.customLabels ?? input.defaultCustomLabels,\n backendProviderRegistry: overrides.backendProviderRegistry ?? input.defaultBackendProviderRegistry,\n customFeatureDefinitions: input.sharedRegistry.customFeatureDefinitions,\n customFeatureConfiguration: input.sharedRegistry.customFeatureConfiguration,\n customMilestoneDefinitions: input.sharedRegistry.customMilestoneDefinitions,\n notificationBadgeDefinitions: input.sharedRegistry.notificationBadgeDefinitions,\n productDefinitions: overrides.productDefinitions\n ?? input.defaultProductDefinitions\n ?? input.sharedRegistry.productDefinitions,\n emailTemplateDefinitions: overrides.emailTemplateDefinitions ?? input.defaultEmailTemplateDefinitions,\n providerRuntime: overrides.providerRuntime ?? input.defaultProviderRuntime,\n pdfTemplateBindings: overrides.pdfTemplateBindings ?? input.backendRegistry.pdfTemplateBindings,\n chartDefinitions: overrides.chartDefinitions ?? input.backendRegistry.chartDefinitions,\n resourceServerInstances: overrides.resourceServerInstances,\n organizationUnitNarrowing: overrides.organizationUnitNarrowing,\n backendConfig: overrides.backendConfig ?? input.defaultBackendConfig,\n headlessMode: overrides.headlessMode,\n skipCronSync: overrides.skipCronSync,\n skipJobConsumers: overrides.skipJobConsumers,\n servicesRegistryDecoratorFactory: overrides.servicesRegistryDecoratorFactory,\n serviceIdentifier: overrides.serviceIdentifier,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-context-creator.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/services/execution-context-creator.backend.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"execution-context-creator.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/services/execution-context-creator.backend.service.ts"],"names":[],"mappings":"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"}
|