@wildo-ai/saas-backend-lib 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/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 +47 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-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/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +49 -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 +171 -18
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +20 -0
- 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-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 +529 -41
- 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 +48 -7
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +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 +225 -13
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +244 -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 +386 -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 +6 -2
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +31 -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/models/app-config.backend.schemas.d.ts +142 -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 +33 -0
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +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/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/errors/services/error-builder.backend.service.d.ts +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-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 +292 -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 +533 -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.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +21 -13
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +39 -15
- package/dist/esm/files/handlers/resource-file-upload-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 +53 -2
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
- package/dist/esm/files/services/files.backend.service.d.ts +68 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +175 -5
- 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/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 +196 -40
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/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 +28 -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 +204 -18
- 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.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +8 -4
- 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 +11 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +31 -4
- 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 +78 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +17 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +19 -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 +20 -0
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/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 +99 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/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 +46 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/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/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 +32 -8
- 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 +14 -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/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 +90 -6
- 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/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 +19 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +261 -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/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.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-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 +17 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/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/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/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 +74 -8
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +175 -19
- 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/services/consumable-token.backend.service.d.ts +21 -3
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/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 +11 -9
|
@@ -10,19 +10,38 @@ import { z } from 'zod';
|
|
|
10
10
|
export interface PerformanceTimer {
|
|
11
11
|
end(context?: Record<string, unknown>): void;
|
|
12
12
|
}
|
|
13
|
+
/** ──────────────────────────────────────────────────────────────
|
|
14
|
+
* Internal Schema with z.ZodObject type annotation
|
|
15
|
+
*
|
|
16
|
+
* ✅ Preserves all ZodObject methods (.extend, .partial, .omit, .pick, .shape)
|
|
17
|
+
* ✅ Compatible with isolatedDeclarations: true (OXC)
|
|
18
|
+
* ────────────────────────────────────────────────────────────── */
|
|
19
|
+
/**
|
|
20
|
+
* EVERY member here is READ. That is the contract this schema lost and has regained.
|
|
21
|
+
*
|
|
22
|
+
* It used to declare five more — `enableConsole`, `enableFile`, `enableDatabase`,
|
|
23
|
+
* `format` and `metadata` — that no code path could select. Each was removed for its
|
|
24
|
+
* own reason, recorded so none is reintroduced as an obvious gap:
|
|
25
|
+
*
|
|
26
|
+
* - `enableFile` / `enableDatabase` are REDUNDANT, not missing. `otel-preload` fans
|
|
27
|
+
* every Pino record out to stdout AND an OTLP collector through the
|
|
28
|
+
* `instrumentation-pino` bridge whenever `OBSERVABILITY_TELEMETRY` is selected, and a
|
|
29
|
+
* container platform collects stdout regardless. A database sink would additionally
|
|
30
|
+
* put log writes on the very datastore whose failure you are diagnosing.
|
|
31
|
+
* - `format` was a SECOND, dead authority for a decision made elsewhere: pretty-vs-JSON
|
|
32
|
+
* is `usePrettyConsole` in `logger.service.ts`, from `LOG_FORMATTED_CONSOLE_ERRORS`
|
|
33
|
+
* and the environment. Keeping it invited `format: 'pretty'` and no effect.
|
|
34
|
+
* - `enableConsole` could not be honoured. The console is what `docker logs` reads and
|
|
35
|
+
* what the OTLP bridge WRAPS, so `false` would have to be refused rather than obeyed.
|
|
36
|
+
* - `metadata` is superseded by pino's `base` (service, environment, hostname, pid) and
|
|
37
|
+
* by the `mixin` that stamps `correlationId` on every record inside a request.
|
|
38
|
+
*
|
|
39
|
+
* Decided on issue #437 after measuring what OpenTelemetry already carries.
|
|
40
|
+
*/
|
|
13
41
|
export declare const LoggerConfigurationSchema: z.ZodObject<{
|
|
14
42
|
level: z.ZodDefault<z.ZodEnum<typeof LogLevel>>;
|
|
15
43
|
environment: z.ZodDefault<z.ZodEnum<typeof RuntimeEnvironment>>;
|
|
16
44
|
service: z.ZodDefault<z.ZodString>;
|
|
17
|
-
enableConsole: z.ZodDefault<z.ZodBoolean>;
|
|
18
|
-
enableFile: z.ZodDefault<z.ZodBoolean>;
|
|
19
|
-
enableDatabase: z.ZodDefault<z.ZodBoolean>;
|
|
20
|
-
format: z.ZodDefault<z.ZodEnum<{
|
|
21
|
-
readonly JSON: "json";
|
|
22
|
-
readonly PRETTY: "pretty";
|
|
23
|
-
readonly SIMPLE: "simple";
|
|
24
|
-
}>>;
|
|
25
|
-
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
26
45
|
redactFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
27
46
|
}, z.core.$strip>;
|
|
28
47
|
/** ──────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.backend.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/models/logger.backend.schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;oEAEoE;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,OAAO,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/C;
|
|
1
|
+
{"version":3,"file":"logger.backend.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/models/logger.backend.schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;oEAEoE;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,OAAO,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED;;;;;oEAKoE;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB;;;;;iBAapC,CAAC;AAEH;;oEAEoE;AAEpE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -10,20 +10,40 @@ import { z } from 'zod';
|
|
|
10
10
|
* ✅ Preserves all ZodObject methods (.extend, .partial, .omit, .pick, .shape)
|
|
11
11
|
* ✅ Compatible with isolatedDeclarations: true (OXC)
|
|
12
12
|
* ────────────────────────────────────────────────────────────── */
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
/**
|
|
14
|
+
* EVERY member here is READ. That is the contract this schema lost and has regained.
|
|
15
|
+
*
|
|
16
|
+
* It used to declare five more — `enableConsole`, `enableFile`, `enableDatabase`,
|
|
17
|
+
* `format` and `metadata` — that no code path could select. Each was removed for its
|
|
18
|
+
* own reason, recorded so none is reintroduced as an obvious gap:
|
|
19
|
+
*
|
|
20
|
+
* - `enableFile` / `enableDatabase` are REDUNDANT, not missing. `otel-preload` fans
|
|
21
|
+
* every Pino record out to stdout AND an OTLP collector through the
|
|
22
|
+
* `instrumentation-pino` bridge whenever `OBSERVABILITY_TELEMETRY` is selected, and a
|
|
23
|
+
* container platform collects stdout regardless. A database sink would additionally
|
|
24
|
+
* put log writes on the very datastore whose failure you are diagnosing.
|
|
25
|
+
* - `format` was a SECOND, dead authority for a decision made elsewhere: pretty-vs-JSON
|
|
26
|
+
* is `usePrettyConsole` in `logger.service.ts`, from `LOG_FORMATTED_CONSOLE_ERRORS`
|
|
27
|
+
* and the environment. Keeping it invited `format: 'pretty'` and no effect.
|
|
28
|
+
* - `enableConsole` could not be honoured. The console is what `docker logs` reads and
|
|
29
|
+
* what the OTLP bridge WRAPS, so `false` would have to be refused rather than obeyed.
|
|
30
|
+
* - `metadata` is superseded by pino's `base` (service, environment, hostname, pid) and
|
|
31
|
+
* by the `mixin` that stamps `correlationId` on every record inside a request.
|
|
32
|
+
*
|
|
33
|
+
* Decided on issue #437 after measuring what OpenTelemetry already carries.
|
|
34
|
+
*/
|
|
18
35
|
export const LoggerConfigurationSchema = z.object({
|
|
19
36
|
level: z.enum(LogLevel).default(LogLevel.INFO),
|
|
20
37
|
environment: z.enum(RuntimeEnvironment).default(RuntimeEnvironment.DEVELOPMENT),
|
|
21
38
|
service: z.string().default('saas-backend'),
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Top-level context keys pino censors, handed straight to `redact.paths`.
|
|
41
|
+
*
|
|
42
|
+
* This default is LOAD-BEARING and was inert from 2026-02-23 to 2026-09-08 because
|
|
43
|
+
* `loadConfiguration` passed `redactFields: []` and a Zod default applies only to an
|
|
44
|
+
* UNDEFINED key. Never restate it at a construction site — omit the key instead.
|
|
45
|
+
* Pinned by `logger.service.redaction.test.ts`.
|
|
46
|
+
*/
|
|
27
47
|
redactFields: z.array(z.string()).default(['password', 'secret', 'token', 'key'])
|
|
28
48
|
});
|
|
29
49
|
//# sourceMappingURL=logger.backend.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.backend.schemas.js","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/models/logger.backend.schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB;;;;;oEAKoE;AAEpE
|
|
1
|
+
{"version":3,"file":"logger.backend.schemas.js","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/models/logger.backend.schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB;;;;;oEAKoE;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC;IAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3C;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClF,CAAC,CAAC","sourcesContent":["/**\n * Logger Type Definitions for SaaS Backend\n * Provides comprehensive logging interfaces and types\n */\n\nimport { LogLevel, RuntimeEnvironment } from '@wildo-ai/saas-models';\nimport { z } from 'zod';\n\n/** ──────────────────────────────────────────────────────────────\n * Interfaces (kept for non-schema types)\n * ────────────────────────────────────────────────────────────── */\n\nexport interface PerformanceTimer {\n end(context?: Record<string, unknown>): void;\n}\n\n/** ──────────────────────────────────────────────────────────────\n * Internal Schema with z.ZodObject type annotation\n * \n * ✅ Preserves all ZodObject methods (.extend, .partial, .omit, .pick, .shape)\n * ✅ Compatible with isolatedDeclarations: true (OXC)\n * ────────────────────────────────────────────────────────────── */\n\n/**\n * EVERY member here is READ. That is the contract this schema lost and has regained.\n *\n * It used to declare five more — `enableConsole`, `enableFile`, `enableDatabase`,\n * `format` and `metadata` — that no code path could select. Each was removed for its\n * own reason, recorded so none is reintroduced as an obvious gap:\n *\n * - `enableFile` / `enableDatabase` are REDUNDANT, not missing. `otel-preload` fans\n * every Pino record out to stdout AND an OTLP collector through the\n * `instrumentation-pino` bridge whenever `OBSERVABILITY_TELEMETRY` is selected, and a\n * container platform collects stdout regardless. A database sink would additionally\n * put log writes on the very datastore whose failure you are diagnosing.\n * - `format` was a SECOND, dead authority for a decision made elsewhere: pretty-vs-JSON\n * is `usePrettyConsole` in `logger.service.ts`, from `LOG_FORMATTED_CONSOLE_ERRORS`\n * and the environment. Keeping it invited `format: 'pretty'` and no effect.\n * - `enableConsole` could not be honoured. The console is what `docker logs` reads and\n * what the OTLP bridge WRAPS, so `false` would have to be refused rather than obeyed.\n * - `metadata` is superseded by pino's `base` (service, environment, hostname, pid) and\n * by the `mixin` that stamps `correlationId` on every record inside a request.\n *\n * Decided on issue #437 after measuring what OpenTelemetry already carries.\n */\nexport const LoggerConfigurationSchema = z.object({\n level: z.enum(LogLevel).default(LogLevel.INFO),\n environment: z.enum(RuntimeEnvironment).default(RuntimeEnvironment.DEVELOPMENT),\n service: z.string().default('saas-backend'),\n /**\n * Top-level context keys pino censors, handed straight to `redact.paths`.\n *\n * This default is LOAD-BEARING and was inert from 2026-02-23 to 2026-09-08 because\n * `loadConfiguration` passed `redactFields: []` and a Zod default applies only to an\n * UNDEFINED key. Never restate it at a construction site — omit the key instead.\n * Pinned by `logger.service.redaction.test.ts`.\n */\n redactFields: z.array(z.string()).default(['password', 'secret', 'token', 'key'])\n});\n\n/** ──────────────────────────────────────────────────────────────\n * Inferred Type (from schema - no interface duplication)\n * ────────────────────────────────────────────────────────────── */\n\nexport type LoggerConfig = z.infer<typeof LoggerConfigurationSchema>;\n"]}
|
|
@@ -34,6 +34,18 @@ export declare class LoggerService {
|
|
|
34
34
|
* Get type-based debug logger
|
|
35
35
|
*/
|
|
36
36
|
debugByType(type: string): (message: string, context?: Record<string, unknown>) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Emit at the requested level, or higher if the record carries a level floor.
|
|
39
|
+
*
|
|
40
|
+
* The three sub-`error` levels route through this so a best-effort catch cannot bury a server fault
|
|
41
|
+
* below what an operator alerts on. See `log-severity-floor.backend.utils.ts` for the measurement
|
|
42
|
+
* and for why the answer travels with the record instead of being re-decided at 213 call sites.
|
|
43
|
+
*
|
|
44
|
+
* When the floor raises the level, the record keeps what the call site ASKED for under
|
|
45
|
+
* `promotedFromLevel`, so the promotion is legible in the log rather than looking like the boundary
|
|
46
|
+
* chose `error` itself.
|
|
47
|
+
*/
|
|
48
|
+
private emitAtLevelFloor;
|
|
37
49
|
info(message: string, context?: Record<string, unknown>): void;
|
|
38
50
|
warn(message: string, context?: Record<string, unknown>): void;
|
|
39
51
|
error(message: string, errorOrContext?: Error | Record<string, unknown>, context?: Record<string, unknown>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/services/logger.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAA6B,gBAAgB,EAAE,MAAM,oEAAoE,CAAC;AAC/I,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/services/logger.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAA6B,gBAAgB,EAAE,MAAM,oEAAoE,CAAC;AAC/I,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAW/F,qBACa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,sBAAsB,CAAmC;IACjE,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;;IAOjF,OAAO,CAAC,UAAU;IASX,YAAY,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmGpB,SAAS,IAAI,YAAY;IAKzB;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzD;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI;IASxF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;IA2BxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAejH;;;;;;;OAOG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAUP;;OAEG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAUP,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;IAiBlF,OAAO,CAAC,aAAa;CAWtB"}
|
|
@@ -13,6 +13,7 @@ import pretty from 'pino-pretty';
|
|
|
13
13
|
import { LogLevel, RuntimeEnvironment } from '@wildo-ai/saas-models';
|
|
14
14
|
import { LoggerConfigurationSchema } from '../../../monitoring/logger/models/logger.backend.schemas.js';
|
|
15
15
|
import { projectCaughtErrorLogFields } from '../../../errors/utils/error-log-level-classification.backend.utils.js';
|
|
16
|
+
import { LOG_SEVERITY_PROMOTED_FROM_FIELD, resolveEmittedLogLevel, } from '../../../monitoring/logger/utils/log-severity-floor.backend.utils.js';
|
|
16
17
|
import { normalizeLogContext } from '../../../monitoring/logger/utils/log-value-normalization.backend.utils.js';
|
|
17
18
|
import { getRequestContextFrame } from '../../../runtime/models/request-context.als.backend.js';
|
|
18
19
|
let LoggerService = class LoggerService {
|
|
@@ -46,16 +47,26 @@ let LoggerService = class LoggerService {
|
|
|
46
47
|
* indicates someone bypassed the CLI sync path.
|
|
47
48
|
*/
|
|
48
49
|
loadConfiguration(appConfig, appSlug) {
|
|
50
|
+
/*
|
|
51
|
+
* ONLY what this code DECIDES. Every other member is left to
|
|
52
|
+
* `LoggerConfigurationSchema`'s own default, deliberately — a second copy of a
|
|
53
|
+
* default is a second authority, and this object held one that CONTRADICTED the
|
|
54
|
+
* schema for seven months.
|
|
55
|
+
*
|
|
56
|
+
* `redactFields` was `[]` here while the schema declares
|
|
57
|
+
* `['password', 'secret', 'token', 'key']`. A Zod default applies only to an
|
|
58
|
+
* `undefined` key, so the empty array won, `pino`'s `redact.paths` was empty, and
|
|
59
|
+
* the framework's ONLY redaction control was inert at every call site — while
|
|
60
|
+
* those same records leave the process to a third-party collector through the
|
|
61
|
+
* OTLP log bridge whenever `OBSERVABILITY_TELEMETRY` is selected. Omitting the key
|
|
62
|
+
* is the whole fix; the schema already says what to censor.
|
|
63
|
+
*
|
|
64
|
+
* `level` stays explicit because it genuinely disagrees with the schema (DEBUG
|
|
65
|
+
* here, INFO there) and the disagreement is intended: a process with no
|
|
66
|
+
* `LOG_LEVEL` in its environment is a development process.
|
|
67
|
+
*/
|
|
49
68
|
const defaultConfig = {
|
|
50
69
|
level: LogLevel.DEBUG,
|
|
51
|
-
environment: RuntimeEnvironment.DEVELOPMENT,
|
|
52
|
-
service: 'saas-backend',
|
|
53
|
-
enableConsole: true,
|
|
54
|
-
enableFile: false,
|
|
55
|
-
enableDatabase: false,
|
|
56
|
-
format: 'json',
|
|
57
|
-
metadata: {},
|
|
58
|
-
redactFields: []
|
|
59
70
|
};
|
|
60
71
|
const envLogLevel = process.env.LOG_LEVEL;
|
|
61
72
|
if (envLogLevel && Object.values(LogLevel).includes(envLogLevel)) {
|
|
@@ -189,11 +200,41 @@ let LoggerService = class LoggerService {
|
|
|
189
200
|
}
|
|
190
201
|
};
|
|
191
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Emit at the requested level, or higher if the record carries a level floor.
|
|
205
|
+
*
|
|
206
|
+
* The three sub-`error` levels route through this so a best-effort catch cannot bury a server fault
|
|
207
|
+
* below what an operator alerts on. See `log-severity-floor.backend.utils.ts` for the measurement
|
|
208
|
+
* and for why the answer travels with the record instead of being re-decided at 213 call sites.
|
|
209
|
+
*
|
|
210
|
+
* When the floor raises the level, the record keeps what the call site ASKED for under
|
|
211
|
+
* `promotedFromLevel`, so the promotion is legible in the log rather than looking like the boundary
|
|
212
|
+
* chose `error` itself.
|
|
213
|
+
*/
|
|
214
|
+
emitAtLevelFloor(requestedLevel, message, context) {
|
|
215
|
+
const emittedLevel = resolveEmittedLogLevel(requestedLevel, context);
|
|
216
|
+
const enriched = this.enrichContext(emittedLevel === requestedLevel
|
|
217
|
+
? context
|
|
218
|
+
: { ...(context ?? {}), [LOG_SEVERITY_PROMOTED_FROM_FIELD]: requestedLevel });
|
|
219
|
+
switch (emittedLevel) {
|
|
220
|
+
case 'error':
|
|
221
|
+
this.logger.error(enriched, message);
|
|
222
|
+
return;
|
|
223
|
+
case 'warn':
|
|
224
|
+
this.logger.warn(enriched, message);
|
|
225
|
+
return;
|
|
226
|
+
case 'info':
|
|
227
|
+
this.logger.info(enriched, message);
|
|
228
|
+
return;
|
|
229
|
+
default:
|
|
230
|
+
this.logger.debug(enriched, message);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
192
233
|
info(message, context) {
|
|
193
|
-
this.
|
|
234
|
+
this.emitAtLevelFloor('info', message, context);
|
|
194
235
|
}
|
|
195
236
|
warn(message, context) {
|
|
196
|
-
this.
|
|
237
|
+
this.emitAtLevelFloor('warn', message, context);
|
|
197
238
|
}
|
|
198
239
|
error(message, errorOrContext, context) {
|
|
199
240
|
if (errorOrContext instanceof Error) {
|
|
@@ -229,7 +270,7 @@ let LoggerService = class LoggerService {
|
|
|
229
270
|
}), message);
|
|
230
271
|
}
|
|
231
272
|
debug(message, context) {
|
|
232
|
-
this.
|
|
273
|
+
this.emitAtLevelFloor('debug', message, context);
|
|
233
274
|
}
|
|
234
275
|
trace(message, context) {
|
|
235
276
|
this.logger.trace(this.enrichContext(context), message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/services/logger.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,IAA8B,MAAM,MAAM,CAAC;AAClD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAgB,yBAAyB,EAAoB,MAAM,oEAAoE,CAAC;AAE/I,OAAO,EAAE,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AAC3H,OAAO,EAAE,mBAAmB,EAAE,MAAM,kFAAkF,CAAC;AACvH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AAKhG,IAAM,aAAa,GAAnB,MAAM,aAAa;IAChB,MAAM,CAAa;IACnB,MAAM,CAAe;IACrB,sBAAsB,GAAyB,IAAI,GAAG,EAAE,CAAC;IACvD,QAAQ,CAA+D;IAEjF;QACE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAGO,UAAU,CAAC,SAA4B,EAAE,OAAgB;QAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAElC,8CAA8C;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAEM,YAAY,CAAC,SAA2B,EAAE,OAAgB;QAC/D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;OAWG;IACK,iBAAiB,CAAC,SAA4B,EAAE,OAAgB;QAEtE,MAAM,aAAa,GAAiB;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAG,kBAAkB,CAAC,WAAW;YAC5C,OAAO,EAAE,cAAc;YACvB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE;SACjB,CAAA;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1C,IAAI,WAAW,IAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/E,aAAa,CAAC,KAAK,GAAG,WAAuB,CAAC;QAChD,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,eAAsC,IAAI,kBAAkB,CAAC,WAAW,CAAC;YACrG,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC;YACnC,4GAA4G;YAC5G,gDAAgD;YAChD,MAAM,WAAW,GAAG,OAAO,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,IAAI,cAAc,CAAC;YAC/E,aAAa,CAAC,OAAO,GAAG,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,wDAAwD;QACxD,mFAAmF;QACnF,yFAAyF;QACzF,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,+EAA+E;QAC/E,yDAAyD;QACzD,6EAA6E;QAC7E,wBAAwB;QACxB,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClD,MAAM,UAAU,GAAQ;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,IAAI,EAAE;gBACJ,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gBAC/B,MAAM,EAAE,YAAY;aACrB;YACD,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;YACxC,UAAU,EAAE;gBACV,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAC5C,QAAQ,EAAE,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;oBAC5B,GAAG,QAAQ;iBACZ,CAAC;aACH;YACD,iGAAiG;YACjG,+FAA+F;YAC/F,2FAA2F;YAC3F,yFAAyF;YACzF,kGAAkG;YAClG,sFAAsF;YACtF,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,OAAO;oBACL,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxF,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChF,CAAC;YACJ,CAAC;SACF,CAAC;QAEF,qCAAqC;QACrC,EAAE;QACF,wDAAwD;QACxD,kEAAkE;QAClE,oEAAoE;QACpE,mEAAmE;QACnE,8DAA8D;QAC9D,gEAAgE;QAChE,MAAM,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QAC3E,MAAM,gBAAgB,GAAG,yBAAyB,KAAK,MAAM;YAC3D,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,yBAAyB,KAAK,OAAO;gBACrC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,kBAAkB,CAAC,WAAW,CAAC;QAEjE,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,8EAA8E;gBAC9E,4DAA4D;gBAC5D,EAAE;gBACF,uEAAuE;gBACvE,kFAAkF;gBAClF,8EAA8E;gBAC9E,oFAAoF;gBACpF,iFAAiF;gBACjF,kFAAkF;gBAClF,qFAAqF;gBACrF,qFAAqF;gBACrF,yDAAyD;gBACzD,MAAM,YAAY,GAAG,MAAM,CAAC;oBAC1B,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,qBAAqB;oBACpC,aAAa,EAAE,OAAO;oBACtB,uEAAuE;oBACvE,uEAAuE;oBACvE,gEAAgE;oBAChE,MAAM,EAAE,kCAAkC;iBAC3C,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iEAAiE;gBACjE,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAGD;;OAEG;IACH,mBAAmB,CAAC,IAAY,EAAE,OAAgB;QAChD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,CAAC,OAAe,EAAE,OAAiC,EAAE,EAAE;YAC5D,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA,eAAe;YACpE,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,OAAe,EAAE,OAAiC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAGD,IAAI,CAAC,OAAe,EAAE,OAAiC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,cAAgD,EAAE,OAAiC;QACxG,IAAI,cAAc,YAAY,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,CAAC,aAAa,CAAC;gBACjB,GAAG,2BAA2B,CAAC,cAAc,CAAC;gBAC9C,GAAG,OAAO;aACX,CAAC,EACF,OAAO,CACR,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CACT,OAAe,EACf,WAAoB,EACpB,OAAiC;QAEjC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,CAAC,aAAa,CAAC;YACjB,GAAG,2BAA2B,CAAC,WAAW,CAAC;YAC3C,GAAG,OAAO;SACX,CAAC,EACF,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CACT,OAAe,EACf,WAAoB,EACpB,OAAiC;QAEjC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,CAAC,aAAa,CAAC;YACjB,GAAG,2BAA2B,CAAC,WAAW,CAAC;YAC3C,GAAG,OAAO;SACX,CAAC,EACF,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,OAAiC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO;YACL,GAAG,EAAE,CAAC,UAAoC,EAAE,EAAE;gBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,EAAE,EAAE;oBACrC,GAAG,OAAO;oBACV,GAAG,UAAU;oBACb,SAAS;oBACT,QAAQ;oBACR,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,OAAiC;QACrD,8EAA8E;QAC9E,8EAA8E;QAC9E,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;CAIF,CAAA;AAxSY,aAAa;IADzB,UAAU,EAAE;;GACA,aAAa,CAwSzB","sourcesContent":["import { injectable } from 'inversify';\nimport pino, { Logger as PinoLogger } from 'pino';\nimport pretty from 'pino-pretty';\nimport { z } from 'zod';\nimport { LogLevel, RuntimeEnvironment } from '@wildo-ai/saas-models';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerConfig, LoggerConfigurationSchema, PerformanceTimer } from '~wildo-backend-lib/monitoring/logger/models/logger.backend.schemas';\nimport { AppConfiguration } from '~wildo-backend-lib/config/models/app-config.backend.schemas';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { normalizeLogContext } from '~wildo-backend-lib/monitoring/logger/utils/log-value-normalization.backend.utils';\nimport { getRequestContextFrame } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\n\n\n\n@injectable()\nexport class LoggerService {\n private logger: PinoLogger;\n private config: LoggerConfig;\n private activeDebugTypeLogging: Map<string, boolean> = new Map();\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor() {\n this.initialize();\n }\n\n\n private initialize(appConfig?: AppConfiguration, appSlug?: string): void {\n this.config = this.loadConfiguration(appConfig, appSlug);\n this.logger = this.createLogger();\n\n // Initialize logDebug after logger is created\n this.logDebug = this.debugByType('LoggerService');\n this.setDebugTypeLogging('LoggerService', false);\n }\n\n public reinitialize(appConfig: AppConfiguration, appSlug?: string): void {\n this.initialize(appConfig, appSlug);\n }\n\n /**\n * Load logger configuration from environment\n *\n * Slice 3.5 wiring:\n * - `process.env.LOG_LEVEL` (emitted by `env-vars-builder` from\n * `infra.logging.level`) overrides the built-in default. Validated\n * against `LogLevel` enum — invalid values are ignored (we keep\n * the default rather than crash, since logging misconfig must\n * never block process boot). Upstream `WildoLoggingConfigSchema`\n * is the strict validation surface, so a bad value reaching here\n * indicates someone bypassed the CLI sync path.\n */\n private loadConfiguration(appConfig?: AppConfiguration, appSlug?: string): LoggerConfig {\n\n const defaultConfig: LoggerConfig = {\n level: LogLevel.DEBUG,\n environment: RuntimeEnvironment.DEVELOPMENT,\n service: 'saas-backend',\n enableConsole: true,\n enableFile: false,\n enableDatabase: false,\n format: 'json',\n metadata: {},\n redactFields: []\n }\n\n const envLogLevel = process.env.LOG_LEVEL;\n if (envLogLevel && (Object.values(LogLevel) as string[]).includes(envLogLevel)) {\n defaultConfig.level = envLogLevel as LogLevel;\n }\n\n if (appConfig) {\n const appEnv = (process.env.APPLICATION_ENV as RuntimeEnvironment) || RuntimeEnvironment.DEVELOPMENT;\n defaultConfig.environment = appEnv;\n // Use appSlug (technical identifier) with appEnv for service name, e.g., \"wildo-ai-application:development\"\n // Falls back to appName if appSlug not provided\n const serviceName = appSlug || appConfig.appIdentity.appName || 'saas-backend';\n defaultConfig.service = `${serviceName}:${appEnv}`;\n }\n\n return LoggerConfigurationSchema.parse(defaultConfig);\n }\n\n /**\n * Create Pino logger instance with proper configuration\n */\n private createLogger(): PinoLogger {\n // Instance/deployment identity carried on every record.\n // assurance-control: WILDO.AUDIT.CONTEXT_ATTRIBUTION — `service` (`appSlug:env`) +\n // `environment` are the audit-relevant WHAT/WHERE: which application, which environment.\n // - `hostname` is emitted ONLY when it is a real deployment identity — in\n // orchestrated envs `HOSTNAME` is the pod/container name (valuable for\n // forensics). In local dev it is unset, so the key is OMITTED rather than\n // emitting a placeholder or the developer's machine name: absence is cleaner\n // than a phantom `'unknown'` bucket in the aggregator.\n // - `pid` is a cheap debugging aid (distinguishes local multi-process runs);\n // compliance-neutral.\n const orchestratedHostname = process.env.HOSTNAME;\n const baseConfig: any = {\n level: this.config.level,\n base: {\n pid: process.pid,\n service: this.config.service,\n environment: this.config.environment,\n ...(orchestratedHostname ? { hostname: orchestratedHostname } : {}),\n },\n redact: {\n paths: this.config.redactFields,\n censor: '[REDACTED]'\n },\n timestamp: pino.stdTimeFunctions.isoTime,\n formatters: {\n level: (label: string) => ({ level: label }),\n bindings: (bindings: any) => ({\n ...bindings\n })\n },\n // Phase 1 — surface the request-correlation backbone on EVERY log line. Read the request-context\n // ALS at log time (not construction): inside a request seam this stamps `correlationId` (+ the\n // frontend origin) so all logs for one request are filterable by one id; outside a request\n // (startup, internal ops) the frame is absent and nothing is added. Complements the OTel\n // trace_id/span_id that the instrumentation-pino bridge adds when telemetry is live — that bridge\n // PATCHES pino rather than using this single `mixin` slot, so the two do not collide.\n mixin: () => {\n const frame = getRequestContextFrame();\n if (!frame) {\n return {};\n }\n return {\n correlationId: frame.correlationId,\n ...(frame.frontendServiceName ? { frontendServiceName: frame.frontendServiceName } : {}),\n ...(frame.clientInstanceId ? { clientInstanceId: frame.clientInstanceId } : {}),\n };\n }\n };\n\n // Development-specific configuration\n //\n // Slice 3.5: `LOG_FORMATTED_CONSOLE_ERRORS` (emitted by\n // `env-vars-builder` from `infra.logging.formattedConsoleErrors`)\n // overrides the auto-detected pino-pretty branch. Explicit `'true'`\n // forces pino-pretty regardless of environment; explicit `'false'`\n // disables it even in development. Unset preserves the legacy\n // auto-detect behavior so existing dev workflows are unchanged.\n const envFormattedConsoleErrors = process.env.LOG_FORMATTED_CONSOLE_ERRORS;\n const usePrettyConsole = envFormattedConsoleErrors === 'true'\n ? true\n : envFormattedConsoleErrors === 'false'\n ? false\n : this.config.environment === RuntimeEnvironment.DEVELOPMENT;\n\n if (usePrettyConsole) {\n try {\n // pino-pretty as a MAIN-THREAD destination stream — deliberately NOT a worker\n // `transport: { target: 'pino-pretty' }` (Slice 2 Phase 5).\n //\n // The OTLP log bridge (`@opentelemetry/instrumentation-pino`, wired in\n // `otel-preload`) sends each record to OTel by replacing the logger's `streamSym`\n // with `pino.multistream([originalStream, otelStream])`. A worker `transport`\n // makes `streamSym` a thread-stream whose writes BYPASS that post-hoc wrap, so logs\n // never reach the collector (verified: 0 log records). A main-thread destination\n // stream is exactly what the bridge wraps, so dev logs now fan out to BOTH stdout\n // (pretty) AND the OTLP exporter. The only cost is main-thread prettification, which\n // is acceptable for development. Production (`usePrettyConsole === false`) keeps the\n // default stdout stream, which the bridge already wraps.\n const prettyStream = pretty({\n colorize: true,\n levelFirst: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss',\n messageFormat: '{msg}',\n // Hide the machine/identity fields from the human dev console (the dev\n // orchestrator already prefixes each line with the process name). They\n // are still emitted on the JSON stream that prod/SIEM consumes.\n ignore: 'pid,hostname,service,environment',\n });\n return pino(baseConfig, prettyStream);\n } catch (error) {\n // Fallback to basic JSON output if pino-pretty is not available.\n console.warn('⚠️ pino-pretty not available, using JSON output:', error);\n }\n }\n\n return pino(baseConfig);\n }\n\n getConfig(): LoggerConfig {\n return this.config;\n }\n\n\n /**\n * Enable/disable type-based debug logging\n */\n setDebugTypeLogging(type: string, enabled: boolean): void {\n this.activeDebugTypeLogging.set(type, enabled);\n }\n\n /**\n * Get type-based debug logger\n */\n debugByType(type: string): (message: string, context?: Record<string, unknown>) => void {\n return (message: string, context?: Record<string, unknown>) => {\n if (this.activeDebugTypeLogging.get(type)) {\n this.debug(`[${type}] ${message}`, { ...context });//logType: type\n }\n };\n }\n\n\n info(message: string, context?: Record<string, unknown>): void {\n this.logger.info(this.enrichContext(context), message);\n }\n\n\n warn(message: string, context?: Record<string, unknown>): void {\n this.logger.warn(this.enrichContext(context), message);\n }\n\n error(message: string, errorOrContext?: Error | Record<string, unknown>, context?: Record<string, unknown>): void {\n if (errorOrContext instanceof Error) {\n this.logger.error(\n this.enrichContext({\n ...projectCaughtErrorLogFields(errorOrContext),\n ...context,\n }),\n message,\n );\n return;\n }\n\n this.logger.error(this.enrichContext(errorOrContext), message);\n }\n\n /**\n * Emit a caught `unknown` value at an error-handling boundary.\n *\n * Unlike {@link error}, the second argument is never guessed to be a context\n * record. A thrown plain object (including `WildoError_Backend`) is projected\n * as the failure itself, which prevents both `[object Object]` coercion and\n * pre-stringified/doubly-escaped JSON.\n */\n caughtError(\n message: string,\n caughtValue: unknown,\n context?: Record<string, unknown>,\n ): void {\n this.logger.error(\n this.enrichContext({\n ...projectCaughtErrorLogFields(caughtValue),\n ...context,\n }),\n message,\n );\n }\n\n /**\n * Fatal counterpart of {@link caughtError} for uncaught process failures.\n */\n caughtFatal(\n message: string,\n caughtValue: unknown,\n context?: Record<string, unknown>,\n ): void {\n this.logger.fatal(\n this.enrichContext({\n ...projectCaughtErrorLogFields(caughtValue),\n ...context,\n }),\n message,\n );\n }\n\n debug(message: string, context?: Record<string, unknown>): void {\n this.logger.debug(this.enrichContext(context), message);\n }\n\n trace(message: string, context?: Record<string, unknown>): void {\n this.logger.trace(this.enrichContext(context), message);\n }\n\n fatal(message: string, context?: Record<string, unknown>): void {\n this.logger.fatal(this.enrichContext(context), message);\n }\n\n startTimer(operation: string, context?: Record<string, unknown>): PerformanceTimer {\n const startTime = Date.now();\n\n return {\n end: (endContext?: Record<string, unknown>) => {\n const duration = Date.now() - startTime;\n this.info(`Performance: ${operation}`, {\n ...context,\n ...endContext,\n operation,\n duration,\n performance: true\n });\n }\n };\n }\n\n private enrichContext(context?: Record<string, unknown>): Record<string, unknown> {\n // NOTE: do NOT add a `timestamp` here. Pino already emits the standard `time`\n // field (configured via `timestamp: pino.stdTimeFunctions.isoTime`); a second\n // `timestamp` key was pure duplication on every line. Normalization returns\n // a fresh JSON-native graph, so the caller's context is never mutated and\n // nested Error/cyclic/object values cannot fall through Pino serialization.\n return normalizeLogContext(context);\n }\n\n\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/services/logger.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { injectable } from 'inversify';\nimport pino, { Logger as PinoLogger } from 'pino';\nimport pretty from 'pino-pretty';\nimport { z } from 'zod';\nimport { LogLevel, RuntimeEnvironment } from '@wildo-ai/saas-models';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerConfig, LoggerConfigurationSchema, PerformanceTimer } from '~wildo-backend-lib/monitoring/logger/models/logger.backend.schemas';\nimport { AppConfiguration } from '~wildo-backend-lib/config/models/app-config.backend.schemas';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport {\n LOG_SEVERITY_PROMOTED_FROM_FIELD,\n resolveEmittedLogLevel,\n} from '~wildo-backend-lib/monitoring/logger/utils/log-severity-floor.backend.utils';\nimport { normalizeLogContext } from '~wildo-backend-lib/monitoring/logger/utils/log-value-normalization.backend.utils';\nimport { getRequestContextFrame } from '~wildo-backend-lib/runtime/models/request-context.als.backend';\n\n\n\n@injectable()\nexport class LoggerService {\n private logger: PinoLogger;\n private config: LoggerConfig;\n private activeDebugTypeLogging: Map<string, boolean> = new Map();\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor() {\n this.initialize();\n }\n\n\n private initialize(appConfig?: AppConfiguration, appSlug?: string): void {\n this.config = this.loadConfiguration(appConfig, appSlug);\n this.logger = this.createLogger();\n\n // Initialize logDebug after logger is created\n this.logDebug = this.debugByType('LoggerService');\n this.setDebugTypeLogging('LoggerService', false);\n }\n\n public reinitialize(appConfig: AppConfiguration, appSlug?: string): void {\n this.initialize(appConfig, appSlug);\n }\n\n /**\n * Load logger configuration from environment\n *\n * Slice 3.5 wiring:\n * - `process.env.LOG_LEVEL` (emitted by `env-vars-builder` from\n * `infra.logging.level`) overrides the built-in default. Validated\n * against `LogLevel` enum — invalid values are ignored (we keep\n * the default rather than crash, since logging misconfig must\n * never block process boot). Upstream `WildoLoggingConfigSchema`\n * is the strict validation surface, so a bad value reaching here\n * indicates someone bypassed the CLI sync path.\n */\n private loadConfiguration(appConfig?: AppConfiguration, appSlug?: string): LoggerConfig {\n\n /*\n * ONLY what this code DECIDES. Every other member is left to\n * `LoggerConfigurationSchema`'s own default, deliberately — a second copy of a\n * default is a second authority, and this object held one that CONTRADICTED the\n * schema for seven months.\n *\n * `redactFields` was `[]` here while the schema declares\n * `['password', 'secret', 'token', 'key']`. A Zod default applies only to an\n * `undefined` key, so the empty array won, `pino`'s `redact.paths` was empty, and\n * the framework's ONLY redaction control was inert at every call site — while\n * those same records leave the process to a third-party collector through the\n * OTLP log bridge whenever `OBSERVABILITY_TELEMETRY` is selected. Omitting the key\n * is the whole fix; the schema already says what to censor.\n *\n * `level` stays explicit because it genuinely disagrees with the schema (DEBUG\n * here, INFO there) and the disagreement is intended: a process with no\n * `LOG_LEVEL` in its environment is a development process.\n */\n const defaultConfig: z.input<typeof LoggerConfigurationSchema> = {\n level: LogLevel.DEBUG,\n };\n\n const envLogLevel = process.env.LOG_LEVEL;\n if (envLogLevel && (Object.values(LogLevel) as string[]).includes(envLogLevel)) {\n defaultConfig.level = envLogLevel as LogLevel;\n }\n\n if (appConfig) {\n const appEnv = (process.env.APPLICATION_ENV as RuntimeEnvironment) || RuntimeEnvironment.DEVELOPMENT;\n defaultConfig.environment = appEnv;\n // Use appSlug (technical identifier) with appEnv for service name, e.g., \"wildo-ai-application:development\"\n // Falls back to appName if appSlug not provided\n const serviceName = appSlug || appConfig.appIdentity.appName || 'saas-backend';\n defaultConfig.service = `${serviceName}:${appEnv}`;\n }\n\n return LoggerConfigurationSchema.parse(defaultConfig);\n }\n\n /**\n * Create Pino logger instance with proper configuration\n */\n private createLogger(): PinoLogger {\n // Instance/deployment identity carried on every record.\n // assurance-control: WILDO.AUDIT.CONTEXT_ATTRIBUTION — `service` (`appSlug:env`) +\n // `environment` are the audit-relevant WHAT/WHERE: which application, which environment.\n // - `hostname` is emitted ONLY when it is a real deployment identity — in\n // orchestrated envs `HOSTNAME` is the pod/container name (valuable for\n // forensics). In local dev it is unset, so the key is OMITTED rather than\n // emitting a placeholder or the developer's machine name: absence is cleaner\n // than a phantom `'unknown'` bucket in the aggregator.\n // - `pid` is a cheap debugging aid (distinguishes local multi-process runs);\n // compliance-neutral.\n const orchestratedHostname = process.env.HOSTNAME;\n const baseConfig: any = {\n level: this.config.level,\n base: {\n pid: process.pid,\n service: this.config.service,\n environment: this.config.environment,\n ...(orchestratedHostname ? { hostname: orchestratedHostname } : {}),\n },\n redact: {\n paths: this.config.redactFields,\n censor: '[REDACTED]'\n },\n timestamp: pino.stdTimeFunctions.isoTime,\n formatters: {\n level: (label: string) => ({ level: label }),\n bindings: (bindings: any) => ({\n ...bindings\n })\n },\n // Phase 1 — surface the request-correlation backbone on EVERY log line. Read the request-context\n // ALS at log time (not construction): inside a request seam this stamps `correlationId` (+ the\n // frontend origin) so all logs for one request are filterable by one id; outside a request\n // (startup, internal ops) the frame is absent and nothing is added. Complements the OTel\n // trace_id/span_id that the instrumentation-pino bridge adds when telemetry is live — that bridge\n // PATCHES pino rather than using this single `mixin` slot, so the two do not collide.\n mixin: () => {\n const frame = getRequestContextFrame();\n if (!frame) {\n return {};\n }\n return {\n correlationId: frame.correlationId,\n ...(frame.frontendServiceName ? { frontendServiceName: frame.frontendServiceName } : {}),\n ...(frame.clientInstanceId ? { clientInstanceId: frame.clientInstanceId } : {}),\n };\n }\n };\n\n // Development-specific configuration\n //\n // Slice 3.5: `LOG_FORMATTED_CONSOLE_ERRORS` (emitted by\n // `env-vars-builder` from `infra.logging.formattedConsoleErrors`)\n // overrides the auto-detected pino-pretty branch. Explicit `'true'`\n // forces pino-pretty regardless of environment; explicit `'false'`\n // disables it even in development. Unset preserves the legacy\n // auto-detect behavior so existing dev workflows are unchanged.\n const envFormattedConsoleErrors = process.env.LOG_FORMATTED_CONSOLE_ERRORS;\n const usePrettyConsole = envFormattedConsoleErrors === 'true'\n ? true\n : envFormattedConsoleErrors === 'false'\n ? false\n : this.config.environment === RuntimeEnvironment.DEVELOPMENT;\n\n if (usePrettyConsole) {\n try {\n // pino-pretty as a MAIN-THREAD destination stream — deliberately NOT a worker\n // `transport: { target: 'pino-pretty' }` (Slice 2 Phase 5).\n //\n // The OTLP log bridge (`@opentelemetry/instrumentation-pino`, wired in\n // `otel-preload`) sends each record to OTel by replacing the logger's `streamSym`\n // with `pino.multistream([originalStream, otelStream])`. A worker `transport`\n // makes `streamSym` a thread-stream whose writes BYPASS that post-hoc wrap, so logs\n // never reach the collector (verified: 0 log records). A main-thread destination\n // stream is exactly what the bridge wraps, so dev logs now fan out to BOTH stdout\n // (pretty) AND the OTLP exporter. The only cost is main-thread prettification, which\n // is acceptable for development. Production (`usePrettyConsole === false`) keeps the\n // default stdout stream, which the bridge already wraps.\n const prettyStream = pretty({\n colorize: true,\n levelFirst: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss',\n messageFormat: '{msg}',\n // Hide the machine/identity fields from the human dev console (the dev\n // orchestrator already prefixes each line with the process name). They\n // are still emitted on the JSON stream that prod/SIEM consumes.\n ignore: 'pid,hostname,service,environment',\n });\n return pino(baseConfig, prettyStream);\n } catch (error) {\n // Fallback to basic JSON output if pino-pretty is not available.\n console.warn('⚠️ pino-pretty not available, using JSON output:', error);\n }\n }\n\n return pino(baseConfig);\n }\n\n getConfig(): LoggerConfig {\n return this.config;\n }\n\n\n /**\n * Enable/disable type-based debug logging\n */\n setDebugTypeLogging(type: string, enabled: boolean): void {\n this.activeDebugTypeLogging.set(type, enabled);\n }\n\n /**\n * Get type-based debug logger\n */\n debugByType(type: string): (message: string, context?: Record<string, unknown>) => void {\n return (message: string, context?: Record<string, unknown>) => {\n if (this.activeDebugTypeLogging.get(type)) {\n this.debug(`[${type}] ${message}`, { ...context });//logType: type\n }\n };\n }\n\n\n /**\n * Emit at the requested level, or higher if the record carries a level floor.\n *\n * The three sub-`error` levels route through this so a best-effort catch cannot bury a server fault\n * below what an operator alerts on. See `log-severity-floor.backend.utils.ts` for the measurement\n * and for why the answer travels with the record instead of being re-decided at 213 call sites.\n *\n * When the floor raises the level, the record keeps what the call site ASKED for under\n * `promotedFromLevel`, so the promotion is legible in the log rather than looking like the boundary\n * chose `error` itself.\n */\n private emitAtLevelFloor(\n requestedLevel: 'debug' | 'info' | 'warn',\n message: string,\n context?: Record<string, unknown>,\n ): void {\n const emittedLevel = resolveEmittedLogLevel(requestedLevel, context);\n const enriched = this.enrichContext(\n emittedLevel === requestedLevel\n ? context\n : { ...(context ?? {}), [LOG_SEVERITY_PROMOTED_FROM_FIELD]: requestedLevel },\n );\n\n switch (emittedLevel) {\n case 'error':\n this.logger.error(enriched, message);\n return;\n case 'warn':\n this.logger.warn(enriched, message);\n return;\n case 'info':\n this.logger.info(enriched, message);\n return;\n default:\n this.logger.debug(enriched, message);\n }\n }\n\n info(message: string, context?: Record<string, unknown>): void {\n this.emitAtLevelFloor('info', message, context);\n }\n\n\n warn(message: string, context?: Record<string, unknown>): void {\n this.emitAtLevelFloor('warn', message, context);\n }\n\n error(message: string, errorOrContext?: Error | Record<string, unknown>, context?: Record<string, unknown>): void {\n if (errorOrContext instanceof Error) {\n this.logger.error(\n this.enrichContext({\n ...projectCaughtErrorLogFields(errorOrContext),\n ...context,\n }),\n message,\n );\n return;\n }\n\n this.logger.error(this.enrichContext(errorOrContext), message);\n }\n\n /**\n * Emit a caught `unknown` value at an error-handling boundary.\n *\n * Unlike {@link error}, the second argument is never guessed to be a context\n * record. A thrown plain object (including `WildoError_Backend`) is projected\n * as the failure itself, which prevents both `[object Object]` coercion and\n * pre-stringified/doubly-escaped JSON.\n */\n caughtError(\n message: string,\n caughtValue: unknown,\n context?: Record<string, unknown>,\n ): void {\n this.logger.error(\n this.enrichContext({\n ...projectCaughtErrorLogFields(caughtValue),\n ...context,\n }),\n message,\n );\n }\n\n /**\n * Fatal counterpart of {@link caughtError} for uncaught process failures.\n */\n caughtFatal(\n message: string,\n caughtValue: unknown,\n context?: Record<string, unknown>,\n ): void {\n this.logger.fatal(\n this.enrichContext({\n ...projectCaughtErrorLogFields(caughtValue),\n ...context,\n }),\n message,\n );\n }\n\n debug(message: string, context?: Record<string, unknown>): void {\n this.emitAtLevelFloor('debug', message, context);\n }\n\n trace(message: string, context?: Record<string, unknown>): void {\n this.logger.trace(this.enrichContext(context), message);\n }\n\n fatal(message: string, context?: Record<string, unknown>): void {\n this.logger.fatal(this.enrichContext(context), message);\n }\n\n startTimer(operation: string, context?: Record<string, unknown>): PerformanceTimer {\n const startTime = Date.now();\n\n return {\n end: (endContext?: Record<string, unknown>) => {\n const duration = Date.now() - startTime;\n this.info(`Performance: ${operation}`, {\n ...context,\n ...endContext,\n operation,\n duration,\n performance: true\n });\n }\n };\n }\n\n private enrichContext(context?: Record<string, unknown>): Record<string, unknown> {\n // NOTE: do NOT add a `timestamp` here. Pino already emits the standard `time`\n // field (configured via `timestamp: pino.stdTimeFunctions.isoTime`); a second\n // `timestamp` key was pure duplication on every line. Normalization returns\n // a fresh JSON-native graph, so the caller's context is never mutated and\n // nested Error/cyclic/object values cannot fall through Pino serialization.\n return normalizeLogContext(context);\n }\n\n\n\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A LOG-LEVEL FLOOR a structured record can carry, so a boundary that hardcodes its level cannot
|
|
3
|
+
* bury a fault below the level an operator alerts on.
|
|
4
|
+
*
|
|
5
|
+
* ## The defect this exists to close
|
|
6
|
+
*
|
|
7
|
+
* `classifyBackendErrorLogSeverity` already answers "does a human need to look at this?" from the
|
|
8
|
+
* error's own declared contract, and `logWildoBackendErrorAtClassifiedSeverity` emits at that answer.
|
|
9
|
+
* A **best-effort catch** does not go through either: it writes `logger.warn(msg, { ...ctx,
|
|
10
|
+
* ...projectCaughtErrorLogFields(error) })`, choosing the level by hand at the call site.
|
|
11
|
+
*
|
|
12
|
+
* Measured 2026-09-09: **213 such emissions below `error`, across 86 files**, and the six error types
|
|
13
|
+
* whose declared severity is CRITICAL (INTERNAL, DATABASE, EXTERNAL_SERVICE, UNCAUGHT_EXCEPTION,
|
|
14
|
+
* UNHANDLED_REJECTION, INFRASTRUCTURE) are all reachable through any of them. So a swallowed database
|
|
15
|
+
* failure was emitted at `warn` while the projected fields still said `severity: CRITICAL` — visible
|
|
16
|
+
* to a reader who greps the field, invisible to a production alert keyed on level, which is what an
|
|
17
|
+
* operator keys on by default.
|
|
18
|
+
*
|
|
19
|
+
* ## Why a floor rather than 213 corrected call sites
|
|
20
|
+
*
|
|
21
|
+
* Most of those `warn`s are RIGHT — an expected self-healing condition, a 4xx the caller got wrong —
|
|
22
|
+
* so a sweep would have to re-judge each one and would rot the next time a boundary is added. The
|
|
23
|
+
* floor is total over the population instead: every one of those sites already calls the same
|
|
24
|
+
* projection, so the answer travels with the record and one rule at the sink applies it.
|
|
25
|
+
*
|
|
26
|
+
* ## It adds no new judgement, and it can only RAISE
|
|
27
|
+
*
|
|
28
|
+
* The floor IS `classifyBackendErrorLogSeverity`'s answer, so every "stays at warn" decision that
|
|
29
|
+
* function documents is preserved untouched — an expired token still floors at `debug`, a MEDIUM 4xx
|
|
30
|
+
* at `warn`. And promotion never lowers a level, so a boundary that deliberately logs ABOVE the
|
|
31
|
+
* classification (a permanently dead-lettered job is operationally an `error` whatever the underlying
|
|
32
|
+
* business severity) keeps its own louder choice.
|
|
33
|
+
*
|
|
34
|
+
* The vocabulary lives HERE, in the logger's own utils, rather than beside the classifier: the
|
|
35
|
+
* classifier writes the field and the logger reads it, so putting it in the logger's directory keeps
|
|
36
|
+
* the dependency pointing one way (errors → monitoring) instead of making the two import each other.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* The context key carrying the floor. Named rather than inlined at the two ends, because a writer and
|
|
40
|
+
* a reader agreeing on a string literal by coincidence is exactly how this mechanism goes silently
|
|
41
|
+
* inert.
|
|
42
|
+
*/
|
|
43
|
+
export declare const LOG_SEVERITY_FLOOR_FIELD = "logSeverityFloor";
|
|
44
|
+
/** The context key recording what the call site ASKED for, whenever the floor raised it. */
|
|
45
|
+
export declare const LOG_SEVERITY_PROMOTED_FROM_FIELD = "promotedFromLevel";
|
|
46
|
+
/**
|
|
47
|
+
* The floor a record carries, or `undefined` when it carries none or carries an unrecognised value.
|
|
48
|
+
*
|
|
49
|
+
* Unrecognised is deliberately the same answer as absent: this reads a value that arrives through an
|
|
50
|
+
* untyped `Record<string, unknown>` context, and inventing a rank for a string nobody declared would
|
|
51
|
+
* promote records on a typo.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveLogSeverityFloor(context: Record<string, unknown> | undefined): string | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* The level a record should actually be emitted at: the requested level, unless the record carries a
|
|
56
|
+
* floor above it.
|
|
57
|
+
*
|
|
58
|
+
* Returns the requested level unchanged whenever there is no floor, the floor is unrecognised, or the
|
|
59
|
+
* requested level is already at or above it — so the common path is untouched.
|
|
60
|
+
*/
|
|
61
|
+
export declare function resolveEmittedLogLevel(requestedLevel: string, context: Record<string, unknown> | undefined): string;
|
|
62
|
+
//# sourceMappingURL=log-severity-floor.backend.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-severity-floor.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/utils/log-severity-floor.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,4FAA4F;AAC5F,eAAO,MAAM,gCAAgC,sBAAsB,CAAC;AAQpE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGxG;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,MAAM,CAQR"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A LOG-LEVEL FLOOR a structured record can carry, so a boundary that hardcodes its level cannot
|
|
3
|
+
* bury a fault below the level an operator alerts on.
|
|
4
|
+
*
|
|
5
|
+
* ## The defect this exists to close
|
|
6
|
+
*
|
|
7
|
+
* `classifyBackendErrorLogSeverity` already answers "does a human need to look at this?" from the
|
|
8
|
+
* error's own declared contract, and `logWildoBackendErrorAtClassifiedSeverity` emits at that answer.
|
|
9
|
+
* A **best-effort catch** does not go through either: it writes `logger.warn(msg, { ...ctx,
|
|
10
|
+
* ...projectCaughtErrorLogFields(error) })`, choosing the level by hand at the call site.
|
|
11
|
+
*
|
|
12
|
+
* Measured 2026-09-09: **213 such emissions below `error`, across 86 files**, and the six error types
|
|
13
|
+
* whose declared severity is CRITICAL (INTERNAL, DATABASE, EXTERNAL_SERVICE, UNCAUGHT_EXCEPTION,
|
|
14
|
+
* UNHANDLED_REJECTION, INFRASTRUCTURE) are all reachable through any of them. So a swallowed database
|
|
15
|
+
* failure was emitted at `warn` while the projected fields still said `severity: CRITICAL` — visible
|
|
16
|
+
* to a reader who greps the field, invisible to a production alert keyed on level, which is what an
|
|
17
|
+
* operator keys on by default.
|
|
18
|
+
*
|
|
19
|
+
* ## Why a floor rather than 213 corrected call sites
|
|
20
|
+
*
|
|
21
|
+
* Most of those `warn`s are RIGHT — an expected self-healing condition, a 4xx the caller got wrong —
|
|
22
|
+
* so a sweep would have to re-judge each one and would rot the next time a boundary is added. The
|
|
23
|
+
* floor is total over the population instead: every one of those sites already calls the same
|
|
24
|
+
* projection, so the answer travels with the record and one rule at the sink applies it.
|
|
25
|
+
*
|
|
26
|
+
* ## It adds no new judgement, and it can only RAISE
|
|
27
|
+
*
|
|
28
|
+
* The floor IS `classifyBackendErrorLogSeverity`'s answer, so every "stays at warn" decision that
|
|
29
|
+
* function documents is preserved untouched — an expired token still floors at `debug`, a MEDIUM 4xx
|
|
30
|
+
* at `warn`. And promotion never lowers a level, so a boundary that deliberately logs ABOVE the
|
|
31
|
+
* classification (a permanently dead-lettered job is operationally an `error` whatever the underlying
|
|
32
|
+
* business severity) keeps its own louder choice.
|
|
33
|
+
*
|
|
34
|
+
* The vocabulary lives HERE, in the logger's own utils, rather than beside the classifier: the
|
|
35
|
+
* classifier writes the field and the logger reads it, so putting it in the logger's directory keeps
|
|
36
|
+
* the dependency pointing one way (errors → monitoring) instead of making the two import each other.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* The context key carrying the floor. Named rather than inlined at the two ends, because a writer and
|
|
40
|
+
* a reader agreeing on a string literal by coincidence is exactly how this mechanism goes silently
|
|
41
|
+
* inert.
|
|
42
|
+
*/
|
|
43
|
+
export const LOG_SEVERITY_FLOOR_FIELD = 'logSeverityFloor';
|
|
44
|
+
/** The context key recording what the call site ASKED for, whenever the floor raised it. */
|
|
45
|
+
export const LOG_SEVERITY_PROMOTED_FROM_FIELD = 'promotedFromLevel';
|
|
46
|
+
/**
|
|
47
|
+
* Emitting order, lowest first. Indices are the comparison, so a level absent from this list has no
|
|
48
|
+
* rank and is left alone rather than guessed at.
|
|
49
|
+
*/
|
|
50
|
+
const LOG_LEVEL_RANK = ['debug', 'info', 'warn', 'error'];
|
|
51
|
+
/**
|
|
52
|
+
* The floor a record carries, or `undefined` when it carries none or carries an unrecognised value.
|
|
53
|
+
*
|
|
54
|
+
* Unrecognised is deliberately the same answer as absent: this reads a value that arrives through an
|
|
55
|
+
* untyped `Record<string, unknown>` context, and inventing a rank for a string nobody declared would
|
|
56
|
+
* promote records on a typo.
|
|
57
|
+
*/
|
|
58
|
+
export function resolveLogSeverityFloor(context) {
|
|
59
|
+
const floor = context?.[LOG_SEVERITY_FLOOR_FIELD];
|
|
60
|
+
return typeof floor === 'string' && LOG_LEVEL_RANK.includes(floor) ? floor : undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The level a record should actually be emitted at: the requested level, unless the record carries a
|
|
64
|
+
* floor above it.
|
|
65
|
+
*
|
|
66
|
+
* Returns the requested level unchanged whenever there is no floor, the floor is unrecognised, or the
|
|
67
|
+
* requested level is already at or above it — so the common path is untouched.
|
|
68
|
+
*/
|
|
69
|
+
export function resolveEmittedLogLevel(requestedLevel, context) {
|
|
70
|
+
const floor = resolveLogSeverityFloor(context);
|
|
71
|
+
if (floor === undefined)
|
|
72
|
+
return requestedLevel;
|
|
73
|
+
const requestedRank = LOG_LEVEL_RANK.indexOf(requestedLevel);
|
|
74
|
+
if (requestedRank < 0)
|
|
75
|
+
return requestedLevel;
|
|
76
|
+
return LOG_LEVEL_RANK.indexOf(floor) > requestedRank ? floor : requestedLevel;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=log-severity-floor.backend.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-severity-floor.backend.utils.js","sourceRoot":"","sources":["../../../../../../src/monitoring/logger/utils/log-severity-floor.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAE3D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,gCAAgC,GAAG,mBAAmB,CAAC;AAEpE;;;GAGG;AACH,MAAM,cAAc,GAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAA4C;IAClF,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,wBAAwB,CAAC,CAAC;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,OAA4C;IAE5C,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAE/C,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7D,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAE7C,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC;AAChF,CAAC","sourcesContent":["/**\n * A LOG-LEVEL FLOOR a structured record can carry, so a boundary that hardcodes its level cannot\n * bury a fault below the level an operator alerts on.\n *\n * ## The defect this exists to close\n *\n * `classifyBackendErrorLogSeverity` already answers \"does a human need to look at this?\" from the\n * error's own declared contract, and `logWildoBackendErrorAtClassifiedSeverity` emits at that answer.\n * A **best-effort catch** does not go through either: it writes `logger.warn(msg, { ...ctx,\n * ...projectCaughtErrorLogFields(error) })`, choosing the level by hand at the call site.\n *\n * Measured 2026-09-09: **213 such emissions below `error`, across 86 files**, and the six error types\n * whose declared severity is CRITICAL (INTERNAL, DATABASE, EXTERNAL_SERVICE, UNCAUGHT_EXCEPTION,\n * UNHANDLED_REJECTION, INFRASTRUCTURE) are all reachable through any of them. So a swallowed database\n * failure was emitted at `warn` while the projected fields still said `severity: CRITICAL` — visible\n * to a reader who greps the field, invisible to a production alert keyed on level, which is what an\n * operator keys on by default.\n *\n * ## Why a floor rather than 213 corrected call sites\n *\n * Most of those `warn`s are RIGHT — an expected self-healing condition, a 4xx the caller got wrong —\n * so a sweep would have to re-judge each one and would rot the next time a boundary is added. The\n * floor is total over the population instead: every one of those sites already calls the same\n * projection, so the answer travels with the record and one rule at the sink applies it.\n *\n * ## It adds no new judgement, and it can only RAISE\n *\n * The floor IS `classifyBackendErrorLogSeverity`'s answer, so every \"stays at warn\" decision that\n * function documents is preserved untouched — an expired token still floors at `debug`, a MEDIUM 4xx\n * at `warn`. And promotion never lowers a level, so a boundary that deliberately logs ABOVE the\n * classification (a permanently dead-lettered job is operationally an `error` whatever the underlying\n * business severity) keeps its own louder choice.\n *\n * The vocabulary lives HERE, in the logger's own utils, rather than beside the classifier: the\n * classifier writes the field and the logger reads it, so putting it in the logger's directory keeps\n * the dependency pointing one way (errors → monitoring) instead of making the two import each other.\n */\n\n/**\n * The context key carrying the floor. Named rather than inlined at the two ends, because a writer and\n * a reader agreeing on a string literal by coincidence is exactly how this mechanism goes silently\n * inert.\n */\nexport const LOG_SEVERITY_FLOOR_FIELD = 'logSeverityFloor';\n\n/** The context key recording what the call site ASKED for, whenever the floor raised it. */\nexport const LOG_SEVERITY_PROMOTED_FROM_FIELD = 'promotedFromLevel';\n\n/**\n * Emitting order, lowest first. Indices are the comparison, so a level absent from this list has no\n * rank and is left alone rather than guessed at.\n */\nconst LOG_LEVEL_RANK: readonly string[] = ['debug', 'info', 'warn', 'error'];\n\n/**\n * The floor a record carries, or `undefined` when it carries none or carries an unrecognised value.\n *\n * Unrecognised is deliberately the same answer as absent: this reads a value that arrives through an\n * untyped `Record<string, unknown>` context, and inventing a rank for a string nobody declared would\n * promote records on a typo.\n */\nexport function resolveLogSeverityFloor(context: Record<string, unknown> | undefined): string | undefined {\n const floor = context?.[LOG_SEVERITY_FLOOR_FIELD];\n return typeof floor === 'string' && LOG_LEVEL_RANK.includes(floor) ? floor : undefined;\n}\n\n/**\n * The level a record should actually be emitted at: the requested level, unless the record carries a\n * floor above it.\n *\n * Returns the requested level unchanged whenever there is no floor, the floor is unrecognised, or the\n * requested level is already at or above it — so the common path is untouched.\n */\nexport function resolveEmittedLogLevel(\n requestedLevel: string,\n context: Record<string, unknown> | undefined,\n): string {\n const floor = resolveLogSeverityFloor(context);\n if (floor === undefined) return requestedLevel;\n\n const requestedRank = LOG_LEVEL_RANK.indexOf(requestedLevel);\n if (requestedRank < 0) return requestedLevel;\n\n return LOG_LEVEL_RANK.indexOf(floor) > requestedRank ? floor : requestedLevel;\n}\n"]}
|