@wildo-ai/saas-backend-lib 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +14 -3
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +138 -24
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +8 -3
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +48 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +102 -30
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js +16 -0
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +96 -32
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js +32 -7
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +80 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +298 -23
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +71 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +85 -5
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +146 -4
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts +3 -26
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js +3 -68
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +533 -43
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +54 -13
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +263 -13
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +376 -58
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +264 -7
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +414 -5
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +16 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +140 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +65 -6
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +45 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +146 -46
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +43 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +52 -3
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
- package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +20 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts +27 -0
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.js +29 -0
- package/dist/esm/databases/services/redis.service.js.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +134 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts +41 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +72 -4
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +60 -19
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.js +7 -1
- package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
- package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +306 -7
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +539 -45
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts +24 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +83 -11
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +76 -13
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js +36 -28
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +214 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js +566 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
- package/dist/esm/files/services/files.backend.service.d.ts +87 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +252 -19
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js +12 -0
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +200 -44
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +107 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +519 -56
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts +151 -41
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +308 -143
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/index.d.ts +15 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +45 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +82 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +20 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +21 -3
- package/dist/esm/inject/models/service-types.js.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.js +32 -4
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +84 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +235 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts +64 -2
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +152 -6
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +108 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +432 -101
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +54 -7
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts +5 -5
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +18 -8
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +20 -18
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js +1 -4
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js +1 -4
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts +3 -3
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js +26 -4
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts +9 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +88 -15
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.js +3 -3
- package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +91 -7
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +47 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +343 -77
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +3 -23
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +77 -2
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +5 -3
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +41 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +87 -4
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js +24 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts +117 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +175 -14
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +385 -49
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +12 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +41 -3
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +83 -20
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
- package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -9
- package/dist/esm/.builder.pid +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite-audit-log-sink.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/composite-audit-log-sink.backend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"composite-audit-log-sink.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/composite-audit-log-sink.backend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAC1J,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,0FAA0F,CAAC;AACtJ,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sEAAsE,CAAC;AAa3G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBACa,qBAAsB,YAAW,YAAY;IAMtD,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAE1C,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc;IATjC,oFAAoF;IACpF,OAAO,CAAC,aAAa,CAA8C;gBAIhD,yBAAyB,EAAE,uCAAuC,EAElE,uBAAuB,EAAE,qCAAqC,EAE9D,cAAc,EAAE,cAAc;IAGjD;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAuDtB,2DAA2D;IACpD,QAAQ,IAAI,OAAO;IAI1B;;;;;;;;OAQG;IACI,oBAAoB,IAAI,KAAK,CAAC,YAAY,GAAG,6BAA6B,CAAC;IAUlF;;;;;;;OAOG;IACI,kBAAkB,IAAI,KAAK,CAAC,YAAY,GAAG,oBAAoB,CAAC;IASvE;;;;OAIG;IACU,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB1E,mEAAmE;IACtD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAcvC"}
|
|
@@ -12,7 +12,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { injectable, inject } from 'inversify';
|
|
14
14
|
import { EngineCapability } from '@wildo-ai/saas-models';
|
|
15
|
-
|
|
15
|
+
/*
|
|
16
|
+
* `/backend-runtime`, not `/backend` (#330). The two barrels expose the same builder; `/backend` also
|
|
17
|
+
* re-exports the engine's EAGERLY composed provider catalogue, and ES module semantics mean that one
|
|
18
|
+
* value import evaluates all twenty-two provider modules — six of them pulling an `@ai-sdk/*` client
|
|
19
|
+
* — into whatever process imports this file. This file is in every backend's boot graph.
|
|
20
|
+
*/
|
|
21
|
+
import { buildAuditLogSinkFromModule } from '@wildo-ai/external-connectors-private/backend-runtime';
|
|
16
22
|
import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
|
|
17
23
|
import { projectCaughtErrorLogFields } from '../../../errors/utils/error-log-level-classification.backend.utils.js';
|
|
18
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite-audit-log-sink.backend.js","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/composite-audit-log-sink.backend.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAIpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AAY3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAMb;IAEA;IAEA;IATnB,oFAAoF;IAC5E,aAAa,GAAoC,SAAS,CAAC;IAEnE,YAEmB,yBAAkE,EAElE,uBAA8D,EAE9D,cAA8B;QAJ9B,8BAAyB,GAAzB,yBAAyB,CAAyC;QAElE,4BAAuB,GAAvB,uBAAuB,CAAuC;QAE9D,mBAAc,GAAd,cAAc,CAAgB;IAC9C,CAAC;IAEJ;;;;OAIG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QACD,4EAA4E;QAC5E,6EAA6E;QAC7E,uDAAuD;QACvD,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,oCAAoC,CACtF,gBAAgB,CAAC,sBAAsB,CACxC,CAAC;YACF,MAAM,KAAK,GAAwB,EAAE,CAAC;YACtC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,SAAS;gBACX,CAAC;gBACD,2FAA2F;gBAC3F,2FAA2F;gBAC3F,2FAA2F;gBAC3F,+EAA+E;gBAC/E,MAAM,IAAI,GAAG,2BAA2B,CACtC,MAAM,EACN,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,WAAW,EAAE,CAAC;gBACpE,+FAA+F;gBAC/F,iGAAiG;gBACjG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,qCAAqC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAC/F,CAAC;gBACF,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,0EAA0E;YAC1E,sEAAsE;YACtE,wEAAwE;YACxE,kCAAkC;YAClC,sEAAsE;YACtE,+EAA+E;YAC/E,yEAAyE;YACzE,OAAO,CAAC,KAAK,CACX,kEAAkE,EAClE,2BAA2B,CAAC,GAAG,CAAC,CACjC,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,2DAA2D;IACpD,QAAQ;QACb,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;OAQG;IACI,oBAAoB;QACzB,OAAO,IAAI,CAAC,cAAc,EAAE;aACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,MAAM,CACL,CAAC,IAAI,EAAwD,EAAE,CAC7D,OAAQ,IAA+C,CAAC,2BAA2B,KAAK,UAAU;YAClG,OAAQ,IAA+C,CAAC,2BAA2B,KAAK,UAAU,CACrG,CAAC;IACN,CAAC;IAED;;;;;;;OAOG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC,cAAc,EAAE;aACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,MAAM,CACL,CAAC,IAAI,EAA+C,EAAE,CACpD,OAAQ,IAAsC,CAAC,gBAAgB,KAAK,UAAU,CACjF,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAA4B;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAChC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0EAA0E;gBAC1E,wEAAwE;gBACxE,wEAAwE;gBACxE,gDAAgD;gBAChD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE;oBACxD,WAAW,EAAE,GAAG;oBAChB,GAAG,2BAA2B,CAAC,GAAG,CAAC;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,mEAAmE;IAC5D,KAAK,CAAC,QAAQ;QACnB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AA9JY,qBAAqB;IADjC,UAAU,EAAE;IAMR,WAAA,MAAM,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,CAAA;IAE3D,WAAA,MAAM,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,CAAA;IAEzD,WAAA,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;;GATjC,qBAAqB,CA8JjC","sourcesContent":["import { injectable, inject } from 'inversify';\nimport { EngineCapability } from '@wildo-ai/saas-models';\nimport type {\n AuditLogSink,\n AuditLogEventEmission,\n AuditReconcileCheckpointStore,\n AuditLogVerification,\n} from '@wildo-ai/saas-models';\nimport { buildAuditLogSinkFromModule } from '@wildo-ai/external-connectors-private/backend';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\nimport type { BackendProviderRegistryBackendService } from '~wildo-backend-lib/external-providers/services/backend-provider-registry.backend.service';\nimport type { MetricsService } from '~wildo-backend-lib/monitoring/observability/services/metrics.service';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\n\n/**\n * A resolved audit sink paired with the provider ref it was built from. Keeping\n * the ref lets failure metrics + logs name the offending provider (immudb, a\n * SIEM, …) instead of an anonymous index.\n */\ninterface ResolvedAuditSink {\n ref: string;\n sink: AuditLogSink;\n}\n\n/**\n * Engine-side `AuditLogSink` that fans EVERY audit event out to ALL providers\n * declaring `EngineCapability.COMPLIANCE_AUDIT_TRAIL` (a FAN_OUT capability),\n * resolved LAZILY from the app's `defineSaaSProviders` config.\n *\n * This is the Layer-2 provider fan-out — layered ON TOP of the always-on Layer-1\n * database audit store (`AuditLogsBackendService`). It is NOT the authoritative\n * store; a backend with zero audit providers keeps this a byte-identical no-op.\n *\n * **Why lazy.** The selection-aware registry only knows the declared providers\n * after `initialize()` (during startup, after the DI container is built), and\n * `AuditLogsBackendService` caches this reference at construction. So this object\n * is bound EAGERLY (a stable reference) but resolves providers on first use — by\n * which point (an actual audit event) the registry is initialized. Mirrors\n * `LlmObservabilityAgentCallTraceSink` / `EmailBackendService`.\n *\n * **Delivery.** Every resolved sink receives every event; a single sink's failure\n * is ISOLATED and never thrown onto the caller (the business-op path — F7). A\n * failure is ALSO made OBSERVABLE via `MetricsService.recordAuditSinkFailure`\n * (F6): fire-and-forget is correct (audit must never break the business op), but\n * a silently-failing sink must not masquerade as a healthy pipeline — the metric\n * lets \"we think we're auditing but we aren't\" surface on the observability layer\n * (→ an alert via the alerting workstream), not just a swallowed log line. This\n * honours the `AuditLogSink` contract (at-least-once per sink, non-blocking) —\n * the sinks own their own durable buffering + retry.\n *\n * Each resolved sink is kept paired with the provider ref it was built from, so\n * the completeness reconciler ({@link getReconcilableSinks}) and external-auditor\n * verification ({@link getVerifiableSinks}) can narrow to the sinks supporting\n * those optional capabilities.\n */\n@injectable()\nexport class CompositeAuditLogSink implements AuditLogSink {\n /** `undefined` = not yet resolved; else the (possibly empty) resolved sink list. */\n private resolvedSinks: ResolvedAuditSink[] | undefined = undefined;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService)\n private readonly externalProvidersRegistry: ExternalProvidersRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.BackendProviderRegistryService)\n private readonly backendProviderRegistry: BackendProviderRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.MetricsService)\n private readonly metricsService: MetricsService,\n ) {}\n\n /**\n * Resolve (once) every declared audit-provider sink. Caches the result,\n * including an empty list. If the registry is not yet initialized (a call before\n * startup completes), the attempt is NOT cached so a later call retries.\n */\n private ensureResolved(): ResolvedAuditSink[] {\n if (this.resolvedSinks !== undefined) {\n return this.resolvedSinks;\n }\n // Expected pre-startup window: the selection-aware registry isn't populated\n // until initialize() runs. Stay unresolved (retry on the next event) WITHOUT\n // logging — this is normal boot ordering, not a fault.\n if (!this.externalProvidersRegistry.isReady()) {\n return [];\n }\n try {\n const providerRefs = this.externalProvidersRegistry.getResolvedProviderRefsForCapability(\n EngineCapability.COMPLIANCE_AUDIT_TRAIL,\n );\n const sinks: ResolvedAuditSink[] = [];\n for (const providerRef of providerRefs) {\n const module = this.backendProviderRegistry.getProvider(providerRef);\n if (!module) {\n continue;\n }\n // Thread a tamper-metric hook bound to this provider ref: a sink that PROVES its store was\n // rolled back/tampered (immudb's durable-state consistency proof) surfaces on the distinct\n // `audit_tamper_detected_total{provider}` counter. The sink cannot import `MetricsService`\n // (dependency direction), so this callback is how the signal crosses the wall.\n const sink = buildAuditLogSinkFromModule(\n module,\n console,\n () => this.metricsService.recordAuditTamperDetected({ providerRef }),\n // Assurance DEGRADATION (ephemeral / corrupt anchor / un-pinned identity change / per-op proof\n // failure) — distinct `audit_integrity_assurance_degraded_total{provider,reason}`, non-latching.\n (reason) => this.metricsService.recordAuditIntegrityAssuranceDegraded({ providerRef, reason }),\n );\n if (sink) {\n sinks.push({ ref: providerRef, sink });\n }\n }\n this.resolvedSinks = sinks;\n return sinks;\n } catch (err) {\n // Post-init resolution fault (a mis-projected registry, a throwing module\n // factory) — NOT the expected pre-init path (guarded above). Do NOT cache\n // (so a later event retries) and SURFACE it: a silently-failing audit\n // pipeline masquerading as \"no providers declared\" is exactly the audit\n // black hole this guards against.\n // `projectCaughtErrorLogFields`, not an `instanceof Error` ternary: a\n // `WildoError_Backend` is a plain object, so the ternary would render the very\n // fault this guard exists to surface as the literal `'[object Object]'`.\n console.error(\n '[audit] failed to resolve provider sinks (non-fatal, will retry)',\n projectCaughtErrorLogFields(err),\n );\n return [];\n }\n }\n\n /** Whether any audit provider is declared + configured. */\n public isActive(): boolean {\n return this.ensureResolved().length > 0;\n }\n\n /**\n * The resolved audit sinks that ALSO support reconcile-checkpointing\n * ({@link AuditReconcileCheckpointStore}) — i.e. can persist the completeness\n * reconciler's high-water mark in their own store (immudb). The reconciler drives\n * these per-sink (get checkpoint → replay DB events since it → set checkpoint); a\n * sink that can't checkpoint (a fire-and-forget SIEM webhook) is simply absent.\n * Returns the SAME sink instances the real-time fan-out uses, so the reconciler\n * shares ONE immudb connection with the live write path.\n */\n public getReconcilableSinks(): Array<AuditLogSink & AuditReconcileCheckpointStore> {\n return this.ensureResolved()\n .map((entry) => entry.sink)\n .filter(\n (sink): sink is AuditLogSink & AuditReconcileCheckpointStore =>\n typeof (sink as Partial<AuditReconcileCheckpointStore>).getAuditReconcileCheckpoint === 'function' &&\n typeof (sink as Partial<AuditReconcileCheckpointStore>).setAuditReconcileCheckpoint === 'function',\n );\n }\n\n /**\n * The resolved audit sinks that ALSO support cryptographic VERIFICATION\n * ({@link AuditLogVerification}) — i.e. can prove a recorded event is present +\n * untampered (immudb inclusion proofs). This is an EXTERNAL-AUDITOR read path,\n * resolved SEPARATELY from the write fan-out; a sink whose technology can't prove\n * non-tampering (a fire-and-forget SIEM webhook) is simply absent. Returns the\n * SAME sink instances the fan-out uses, sharing their live connection.\n */\n public getVerifiableSinks(): Array<AuditLogSink & AuditLogVerification> {\n return this.ensureResolved()\n .map((entry) => entry.sink)\n .filter(\n (sink): sink is AuditLogSink & AuditLogVerification =>\n typeof (sink as Partial<AuditLogVerification>).verifyAuditEvent === 'function',\n );\n }\n\n /**\n * Fan the event out to EVERY resolved sink, isolating per-sink failures so one\n * never affects the others (each destination is independent — F7), and NEVER\n * throwing onto the caller (fire-and-forget from the business op).\n */\n public async recordAuditEvent(event: AuditLogEventEmission): Promise<void> {\n const sinks = this.ensureResolved();\n if (sinks.length === 0) {\n return;\n }\n await Promise.all(\n sinks.map(async ({ ref, sink }) => {\n try {\n await sink.recordAuditEvent(event);\n } catch (err) {\n // F6 (Phase 5): a sink failing mid-operation must be OBSERVABLE, not just\n // a swallowed log line — emit a metric so a silently-failing audit sink\n // surfaces on the observability layer (→ alert). Still fire-and-forget:\n // the throw never reaches the business-op path.\n this.metricsService.recordAuditSinkFailure({ providerRef: ref });\n console.error('[audit] provider sink failed (non-fatal)', {\n providerRef: ref,\n ...projectCaughtErrorLogFields(err),\n });\n }\n }),\n );\n }\n\n /** Drain every already-resolved sink on shutdown (best-effort). */\n public async shutdown(): Promise<void> {\n if (this.resolvedSinks === undefined) {\n return;\n }\n await Promise.all(\n this.resolvedSinks.map(async ({ sink }) => {\n try {\n await sink.shutdown?.();\n } catch {\n // best-effort drain\n }\n }),\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"composite-audit-log-sink.backend.js","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/composite-audit-log-sink.backend.ts"],"names":[],"mappings":"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","sourcesContent":["import { injectable, inject } from 'inversify';\nimport { EngineCapability } from '@wildo-ai/saas-models';\nimport type {\n AuditLogSink,\n AuditLogEventEmission,\n AuditReconcileCheckpointStore,\n AuditLogVerification,\n} from '@wildo-ai/saas-models';\n/*\n * `/backend-runtime`, not `/backend` (#330). The two barrels expose the same builder; `/backend` also\n * re-exports the engine's EAGERLY composed provider catalogue, and ES module semantics mean that one\n * value import evaluates all twenty-two provider modules — six of them pulling an `@ai-sdk/*` client\n * — into whatever process imports this file. This file is in every backend's boot graph.\n */\nimport { buildAuditLogSinkFromModule } from '@wildo-ai/external-connectors-private/backend-runtime';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\nimport type { BackendProviderRegistryBackendService } from '~wildo-backend-lib/external-providers/services/backend-provider-registry.backend.service';\nimport type { MetricsService } from '~wildo-backend-lib/monitoring/observability/services/metrics.service';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\n\n/**\n * A resolved audit sink paired with the provider ref it was built from. Keeping\n * the ref lets failure metrics + logs name the offending provider (immudb, a\n * SIEM, …) instead of an anonymous index.\n */\ninterface ResolvedAuditSink {\n ref: string;\n sink: AuditLogSink;\n}\n\n/**\n * Engine-side `AuditLogSink` that fans EVERY audit event out to ALL providers\n * declaring `EngineCapability.COMPLIANCE_AUDIT_TRAIL` (a FAN_OUT capability),\n * resolved LAZILY from the app's `defineSaaSProviders` config.\n *\n * This is the Layer-2 provider fan-out — layered ON TOP of the always-on Layer-1\n * database audit store (`AuditLogsBackendService`). It is NOT the authoritative\n * store; a backend with zero audit providers keeps this a byte-identical no-op.\n *\n * **Why lazy.** The selection-aware registry only knows the declared providers\n * after `initialize()` (during startup, after the DI container is built), and\n * `AuditLogsBackendService` caches this reference at construction. So this object\n * is bound EAGERLY (a stable reference) but resolves providers on first use — by\n * which point (an actual audit event) the registry is initialized. Mirrors\n * `LlmObservabilityAgentCallTraceSink` / `EmailBackendService`.\n *\n * **Delivery.** Every resolved sink receives every event; a single sink's failure\n * is ISOLATED and never thrown onto the caller (the business-op path — F7). A\n * failure is ALSO made OBSERVABLE via `MetricsService.recordAuditSinkFailure`\n * (F6): fire-and-forget is correct (audit must never break the business op), but\n * a silently-failing sink must not masquerade as a healthy pipeline — the metric\n * lets \"we think we're auditing but we aren't\" surface on the observability layer\n * (→ an alert via the alerting workstream), not just a swallowed log line. This\n * honours the `AuditLogSink` contract (at-least-once per sink, non-blocking) —\n * the sinks own their own durable buffering + retry.\n *\n * Each resolved sink is kept paired with the provider ref it was built from, so\n * the completeness reconciler ({@link getReconcilableSinks}) and external-auditor\n * verification ({@link getVerifiableSinks}) can narrow to the sinks supporting\n * those optional capabilities.\n */\n@injectable()\nexport class CompositeAuditLogSink implements AuditLogSink {\n /** `undefined` = not yet resolved; else the (possibly empty) resolved sink list. */\n private resolvedSinks: ResolvedAuditSink[] | undefined = undefined;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService)\n private readonly externalProvidersRegistry: ExternalProvidersRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.BackendProviderRegistryService)\n private readonly backendProviderRegistry: BackendProviderRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.MetricsService)\n private readonly metricsService: MetricsService,\n ) {}\n\n /**\n * Resolve (once) every declared audit-provider sink. Caches the result,\n * including an empty list. If the registry is not yet initialized (a call before\n * startup completes), the attempt is NOT cached so a later call retries.\n */\n private ensureResolved(): ResolvedAuditSink[] {\n if (this.resolvedSinks !== undefined) {\n return this.resolvedSinks;\n }\n // Expected pre-startup window: the selection-aware registry isn't populated\n // until initialize() runs. Stay unresolved (retry on the next event) WITHOUT\n // logging — this is normal boot ordering, not a fault.\n if (!this.externalProvidersRegistry.isReady()) {\n return [];\n }\n try {\n const providerRefs = this.externalProvidersRegistry.getResolvedProviderRefsForCapability(\n EngineCapability.COMPLIANCE_AUDIT_TRAIL,\n );\n const sinks: ResolvedAuditSink[] = [];\n for (const providerRef of providerRefs) {\n const module = this.backendProviderRegistry.getProvider(providerRef);\n if (!module) {\n continue;\n }\n // Thread a tamper-metric hook bound to this provider ref: a sink that PROVES its store was\n // rolled back/tampered (immudb's durable-state consistency proof) surfaces on the distinct\n // `audit_tamper_detected_total{provider}` counter. The sink cannot import `MetricsService`\n // (dependency direction), so this callback is how the signal crosses the wall.\n const sink = buildAuditLogSinkFromModule(\n module,\n console,\n () => this.metricsService.recordAuditTamperDetected({ providerRef }),\n // Assurance DEGRADATION (ephemeral / corrupt anchor / un-pinned identity change / per-op proof\n // failure) — distinct `audit_integrity_assurance_degraded_total{provider,reason}`, non-latching.\n (reason) => this.metricsService.recordAuditIntegrityAssuranceDegraded({ providerRef, reason }),\n );\n if (sink) {\n sinks.push({ ref: providerRef, sink });\n }\n }\n this.resolvedSinks = sinks;\n return sinks;\n } catch (err) {\n // Post-init resolution fault (a mis-projected registry, a throwing module\n // factory) — NOT the expected pre-init path (guarded above). Do NOT cache\n // (so a later event retries) and SURFACE it: a silently-failing audit\n // pipeline masquerading as \"no providers declared\" is exactly the audit\n // black hole this guards against.\n // `projectCaughtErrorLogFields`, not an `instanceof Error` ternary: a\n // `WildoError_Backend` is a plain object, so the ternary would render the very\n // fault this guard exists to surface as the literal `'[object Object]'`.\n console.error(\n '[audit] failed to resolve provider sinks (non-fatal, will retry)',\n projectCaughtErrorLogFields(err),\n );\n return [];\n }\n }\n\n /** Whether any audit provider is declared + configured. */\n public isActive(): boolean {\n return this.ensureResolved().length > 0;\n }\n\n /**\n * The resolved audit sinks that ALSO support reconcile-checkpointing\n * ({@link AuditReconcileCheckpointStore}) — i.e. can persist the completeness\n * reconciler's high-water mark in their own store (immudb). The reconciler drives\n * these per-sink (get checkpoint → replay DB events since it → set checkpoint); a\n * sink that can't checkpoint (a fire-and-forget SIEM webhook) is simply absent.\n * Returns the SAME sink instances the real-time fan-out uses, so the reconciler\n * shares ONE immudb connection with the live write path.\n */\n public getReconcilableSinks(): Array<AuditLogSink & AuditReconcileCheckpointStore> {\n return this.ensureResolved()\n .map((entry) => entry.sink)\n .filter(\n (sink): sink is AuditLogSink & AuditReconcileCheckpointStore =>\n typeof (sink as Partial<AuditReconcileCheckpointStore>).getAuditReconcileCheckpoint === 'function' &&\n typeof (sink as Partial<AuditReconcileCheckpointStore>).setAuditReconcileCheckpoint === 'function',\n );\n }\n\n /**\n * The resolved audit sinks that ALSO support cryptographic VERIFICATION\n * ({@link AuditLogVerification}) — i.e. can prove a recorded event is present +\n * untampered (immudb inclusion proofs). This is an EXTERNAL-AUDITOR read path,\n * resolved SEPARATELY from the write fan-out; a sink whose technology can't prove\n * non-tampering (a fire-and-forget SIEM webhook) is simply absent. Returns the\n * SAME sink instances the fan-out uses, sharing their live connection.\n */\n public getVerifiableSinks(): Array<AuditLogSink & AuditLogVerification> {\n return this.ensureResolved()\n .map((entry) => entry.sink)\n .filter(\n (sink): sink is AuditLogSink & AuditLogVerification =>\n typeof (sink as Partial<AuditLogVerification>).verifyAuditEvent === 'function',\n );\n }\n\n /**\n * Fan the event out to EVERY resolved sink, isolating per-sink failures so one\n * never affects the others (each destination is independent — F7), and NEVER\n * throwing onto the caller (fire-and-forget from the business op).\n */\n public async recordAuditEvent(event: AuditLogEventEmission): Promise<void> {\n const sinks = this.ensureResolved();\n if (sinks.length === 0) {\n return;\n }\n await Promise.all(\n sinks.map(async ({ ref, sink }) => {\n try {\n await sink.recordAuditEvent(event);\n } catch (err) {\n // F6 (Phase 5): a sink failing mid-operation must be OBSERVABLE, not just\n // a swallowed log line — emit a metric so a silently-failing audit sink\n // surfaces on the observability layer (→ alert). Still fire-and-forget:\n // the throw never reaches the business-op path.\n this.metricsService.recordAuditSinkFailure({ providerRef: ref });\n console.error('[audit] provider sink failed (non-fatal)', {\n providerRef: ref,\n ...projectCaughtErrorLogFields(err),\n });\n }\n }),\n );\n }\n\n /** Drain every already-resolved sink on shutdown (best-effort). */\n public async shutdown(): Promise<void> {\n if (this.resolvedSinks === undefined) {\n return;\n }\n await Promise.all(\n this.resolvedSinks.map(async ({ sink }) => {\n try {\n await sink.shutdown?.();\n } catch {\n // best-effort drain\n }\n }),\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ResourceCustomServiceImplementationFactory } from '../../../base-classes/services/services/resource-operation-custom-implementation.factory.backend';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the postfix invalidation on the ORGANIZATION SIEM-export-config CREATE and UPDATE.
|
|
4
|
+
*
|
|
5
|
+
* The handler is synchronous and cannot fail. `invalidateSiemConfig` drops a map entry and then kicks a
|
|
6
|
+
* fire-and-forget Redis publish that swallows its own error — so unlike the Redis-backed feature-cache
|
|
7
|
+
* equivalent, which awaits its `del`, there is still nothing here to await and no error path. That is a
|
|
8
|
+
* deliberate property of `invalidateSiemConfig`, not an accident of it: a broadcast that fails leaves
|
|
9
|
+
* the other replicas exactly where the lease already puts them, and refusing a configuration write to
|
|
10
|
+
* protect a cache would invert the priority.
|
|
11
|
+
* A `logger.warn` on an unresolvable organization id keeps the gap observable rather than silent:
|
|
12
|
+
* failing the write would be the wrong trade, because refusing a config edit to protect a cache
|
|
13
|
+
* inverts the priority, but a silently un-invalidated entry is the exact defect this file fixes.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSiemExportConfigCacheInvalidationFactories(): ResourceCustomServiceImplementationFactory[];
|
|
16
|
+
//# sourceMappingURL=siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.ts"],"names":[],"mappings":"AAoEA,OAAO,EAEL,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAkDpH;;;;;;;;;;;;GAYG;AACH,wBAAgB,gDAAgD,IAAI,0CAA0C,EAAE,CAuC/G"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postfix-hook custom-service implementation that drops an organization's cached SIEM export
|
|
3
|
+
* config after an engine-routed write to `ORGANIZATION_SIEM_EXPORT_CONFIG`.
|
|
4
|
+
*
|
|
5
|
+
* Without this, `AuditEventDispatcherBackendService` served a stale config for up to
|
|
6
|
+
* `SIEM_CONFIG_REFRESH_AFTER_MS` with no invalidation of any kind, so an organization that ENABLED its
|
|
7
|
+
* SIEM sink kept resolving the cached `null` and had its authenticated audit events routed to no sink
|
|
8
|
+
* for that window. Audit events are not replayed, so those deliveries were lost rather than delayed.
|
|
9
|
+
*
|
|
10
|
+
* **The "N independent windows" this file's first revision described is CLOSED.** That revision noted
|
|
11
|
+
* the window was PER PROCESS because the cache is an in-process `Map`, and stopped there — which left
|
|
12
|
+
* the hook correct for exactly one replica and inert for the rest of a real deployment.
|
|
13
|
+
* `invalidateSiemConfig` now drops the local entry AND publishes the organization id on a Redis channel
|
|
14
|
+
* every replica subscribes to, so an engine-routed write converges fleet-wide in milliseconds. Read that
|
|
15
|
+
* method's JSDoc for the broadcast, and `SIEM_CONFIG_REFRESH_AFTER_MS` for the lease that still carries
|
|
16
|
+
* everything the broadcast cannot reach.
|
|
17
|
+
*
|
|
18
|
+
* ## Why the hook sits on the RESOURCE and not on the config service
|
|
19
|
+
*
|
|
20
|
+
* `AuthOrganizationConfigurationService.saveSiemExportConfig` is the obvious call site and is only
|
|
21
|
+
* ONE of the writers: the config is an ordinary resource, so an update also lands through
|
|
22
|
+
* `ServicesRegistryHandler.update` on `organizationSiemExportConfig` directly. Hooking the service
|
|
23
|
+
* would have applied the invariant at one of two sites — the shape
|
|
24
|
+
* `.claude/rules/invariant-call-site-enumeration.md` records twenty-odd times. The resource
|
|
25
|
+
* operation is the chokepoint both writers pass through, because `saveSiemExportConfig` dispatches
|
|
26
|
+
* its own write via `ServicesRegistryHandler`.
|
|
27
|
+
*
|
|
28
|
+
* ## Coverage matrix
|
|
29
|
+
*
|
|
30
|
+
* | Operation | Variant | Covered | Why |
|
|
31
|
+
* |-----------|------------------|---------|-----|
|
|
32
|
+
* | `CREATE` | `INTERNAL_CALL` | ✅ | The lazy `createAsSystem` materialisation on the userless login path, and the first real configuration. Service tier, so a postfix hook is reachable. |
|
|
33
|
+
* | `UPDATE` | `INTERNAL_CALL` | ✅ | Every edit, including `saveSiemExportConfig`. Service tier. |
|
|
34
|
+
* | `DELETE` | `REPOSITORY_ONLY`| ❌ | Deliberate, twice over: `doOperation` throws on `REPOSITORY_ONLY`, so the service tier where custom implementations run is unreachable BY CONSTRUCTION and a registration here would fail startup; and its only caller is the `onParentDelete` cascade, which fires when the owning organization is itself being hard-deleted — nothing dispatches audit events for a deleted tenant, so the entry is moot and TTL-expires. |
|
|
35
|
+
* | `READ` | `API_CALL` | ❌ | Reads do not stale a cache. |
|
|
36
|
+
*
|
|
37
|
+
* **`APPLICATION_SIEM_EXPORT_CONFIG` is deliberately NOT registered.** The dispatcher's cache is
|
|
38
|
+
* keyed by `organizationId` and it only ever loads the ORGANIZATION variant
|
|
39
|
+
* (`loadSiemExportConfig(ec, ORGANIZATION, orgId)`), because SIEM fan-out is per authenticated
|
|
40
|
+
* tenant. The APPLICATION variant is settable and inert — no producer emits app-scoped deliveries —
|
|
41
|
+
* so there is no app-scoped cache entry to invalidate. When an app-scoped producer lands, it gets
|
|
42
|
+
* its own cache and its own registration in the same change.
|
|
43
|
+
*
|
|
44
|
+
* **The framework default-seed is also not covered, and does not need to be.**
|
|
45
|
+
* `organizationSiemExportConfigDefaultSeed` writes a DISABLED default at the repository tier during
|
|
46
|
+
* organization creation, before the organization can have raised an audit event, so there is no
|
|
47
|
+
* entry in the map to stale.
|
|
48
|
+
*
|
|
49
|
+
* ## What no hook on this tier can ever cover — and who relies on it today
|
|
50
|
+
*
|
|
51
|
+
* Repository-direct writes and raw database writes never reach the service tier, so they raise no
|
|
52
|
+
* postfix hook and produce no broadcast. This is not hypothetical: `examples/wonder-todos/e2e/adapter.ts`
|
|
53
|
+
* (`case 'siem'`) repoints an organization's export config with
|
|
54
|
+
* `upsertOrganizationSingleton('organizationSiemExportConfig', …)`, straight at the store. Its own
|
|
55
|
+
* comment records the consequence — the lane works *"because a freshly provisioned org has a cold
|
|
56
|
+
* config cache"*, i.e. by ORDERING itself before the organization's first audited action rather than by
|
|
57
|
+
* anything invalidating.
|
|
58
|
+
*
|
|
59
|
+
* For that class of write the LEASE is the entire guarantee, which is why
|
|
60
|
+
* `SIEM_CONFIG_REFRESH_AFTER_MS` states its number, its arithmetic and its reason rather than being an
|
|
61
|
+
* incidental five minutes. Do not read this file as "engine writes are covered, the rest is someone
|
|
62
|
+
* else's problem": the two mechanisms are one guarantee, and the lease is the half that has no hook.
|
|
63
|
+
*/
|
|
64
|
+
import { CoreResourceOperation, CoreResourceType, ResourceOperationVariantType, } from '@wildo-ai/saas-models';
|
|
65
|
+
import { createResourceCustomServiceImplementation, } from '../../../base-classes/services/services/resource-operation-custom-implementation.factory.backend.js';
|
|
66
|
+
import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
|
|
67
|
+
/** The operations whose writes can stale the dispatcher's cache. See the coverage matrix above. */
|
|
68
|
+
const INVALIDATING_OPERATIONS = [
|
|
69
|
+
CoreResourceOperation.CREATE,
|
|
70
|
+
CoreResourceOperation.UPDATE,
|
|
71
|
+
];
|
|
72
|
+
const INTERNAL_DEFAULT_PATH = {
|
|
73
|
+
variantType: ResourceOperationVariantType.INTERNAL_CALL,
|
|
74
|
+
isOperationDefault: true,
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Resolve the organization whose cache entry must go, with a three-tier fallback.
|
|
78
|
+
*
|
|
79
|
+
* 1. **The postfix result** — the persisted row. CREATE and UPDATE both return it, and it carries
|
|
80
|
+
* `organizationId` (injected by the polymorphism engine), so this is the normal path.
|
|
81
|
+
* 2. **`utils.currentObject`** — fetched by the framework before a non-CREATE custom impl runs.
|
|
82
|
+
* Load-bearing when an implementation returns something other than the row.
|
|
83
|
+
* 3. **`executionContext.organizationId`** — the scope the request runs under.
|
|
84
|
+
*
|
|
85
|
+
* Mirrors `resolveOrgIdsForInvalidation` in
|
|
86
|
+
* `scope-features-cache-invalidation.custom-impl.backend.service.ts`; see that file for the
|
|
87
|
+
* reasoning behind each tier.
|
|
88
|
+
*/
|
|
89
|
+
function resolveOrganizationId(result, utils, executionContext) {
|
|
90
|
+
const fromResult = result != null && typeof result === 'object' && 'organizationId' in result
|
|
91
|
+
? result.organizationId
|
|
92
|
+
: undefined;
|
|
93
|
+
if (fromResult)
|
|
94
|
+
return fromResult;
|
|
95
|
+
const fromCurrent = utils.currentObject?.organizationId;
|
|
96
|
+
if (fromCurrent)
|
|
97
|
+
return fromCurrent;
|
|
98
|
+
return executionContext.organizationId ?? undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Registers the postfix invalidation on the ORGANIZATION SIEM-export-config CREATE and UPDATE.
|
|
102
|
+
*
|
|
103
|
+
* The handler is synchronous and cannot fail. `invalidateSiemConfig` drops a map entry and then kicks a
|
|
104
|
+
* fire-and-forget Redis publish that swallows its own error — so unlike the Redis-backed feature-cache
|
|
105
|
+
* equivalent, which awaits its `del`, there is still nothing here to await and no error path. That is a
|
|
106
|
+
* deliberate property of `invalidateSiemConfig`, not an accident of it: a broadcast that fails leaves
|
|
107
|
+
* the other replicas exactly where the lease already puts them, and refusing a configuration write to
|
|
108
|
+
* protect a cache would invert the priority.
|
|
109
|
+
* A `logger.warn` on an unresolvable organization id keeps the gap observable rather than silent:
|
|
110
|
+
* failing the write would be the wrong trade, because refusing a config edit to protect a cache
|
|
111
|
+
* inverts the priority, but a silently un-invalidated entry is the exact defect this file fixes.
|
|
112
|
+
*/
|
|
113
|
+
export function createSiemExportConfigCacheInvalidationFactories() {
|
|
114
|
+
return INVALIDATING_OPERATIONS.map((operationIdentifier) => (_rr, container) => {
|
|
115
|
+
const dispatcher = container.get(SAAS_SERVICE_TYPES.AuditEventDispatcherService);
|
|
116
|
+
return createResourceCustomServiceImplementation({
|
|
117
|
+
operationPath: {
|
|
118
|
+
resourceIdentifier: CoreResourceType.ORGANIZATION_SIEM_EXPORT_CONFIG,
|
|
119
|
+
operationIdentifier,
|
|
120
|
+
...INTERNAL_DEFAULT_PATH,
|
|
121
|
+
},
|
|
122
|
+
handlers: {
|
|
123
|
+
postfixCoreOperations: async (_id, res, executionContext, operationPath, utils) => {
|
|
124
|
+
const organizationId = resolveOrganizationId(res, utils, executionContext);
|
|
125
|
+
if (!organizationId) {
|
|
126
|
+
utils.logger.warn('Could not resolve organizationId for SIEM export config cache invalidation — the dispatcher may serve a stale config for up to its TTL', {
|
|
127
|
+
operationIdentifier: String(operationPath.operationIdentifier),
|
|
128
|
+
resourceIdentifier: operationPath.resourceIdentifier,
|
|
129
|
+
rowId: _id,
|
|
130
|
+
});
|
|
131
|
+
return res;
|
|
132
|
+
}
|
|
133
|
+
dispatcher.invalidateSiemConfig(organizationId);
|
|
134
|
+
return res;
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=siem-export-config-cache-invalidation.custom-impl.backend.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siem-export-config-cache-invalidation.custom-impl.backend.service.js","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yCAAyC,GAE1C,MAAM,4GAA4G,CAAC;AAEpH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAKpF,mGAAmG;AACnG,MAAM,uBAAuB,GAAG;IAC9B,qBAAqB,CAAC,MAAM;IAC5B,qBAAqB,CAAC,MAAM;CACpB,CAAC;AAEX,MAAM,qBAAqB,GAAG;IAC5B,WAAW,EAAE,4BAA4B,CAAC,aAAa;IACvD,kBAAkB,EAAE,IAAI;CAChB,CAAC;AAIX;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CAC5B,MAAe,EACf,KAAmD,EACnD,gBAAuC;IAEvC,MAAM,UAAU,GACd,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,gBAAgB,IAAI,MAAM;QACxE,CAAC,CAAE,MAAgC,CAAC,cAAc;QAClD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,WAAW,GAAI,KAAK,CAAC,aAAmD,EAAE,cAAc,CAAC;IAC/F,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,OAAO,gBAAgB,CAAC,cAAc,IAAI,SAAS,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gDAAgD;IAC9D,OAAO,uBAAuB,CAAC,GAAG,CAChC,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;QAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAC9B,kBAAkB,CAAC,2BAA2B,CAC/C,CAAC;QACF,OAAO,yCAAyC,CAAC;YAC/C,aAAa,EAAE;gBACb,kBAAkB,EAAE,gBAAgB,CAAC,+BAA+B;gBACpE,mBAAmB;gBACnB,GAAG,qBAAqB;aACzB;YACD,QAAQ,EAAE;gBACR,qBAAqB,EAAE,KAAK,EAC1B,GAAuB,EACvB,GAAY,EACZ,gBAAuC,EACvC,aAA4D,EAC5D,KAAmD,EACjC,EAAE;oBACpB,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;oBAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,wIAAwI,EACxI;4BACE,mBAAmB,EAAE,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC;4BAC9D,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;4BACpD,KAAK,EAAE,GAAG;yBACX,CACF,CAAC;wBACF,OAAO,GAAG,CAAC;oBACb,CAAC;oBACD,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;oBAChD,OAAO,GAAG,CAAC;gBACb,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Postfix-hook custom-service implementation that drops an organization's cached SIEM export\n * config after an engine-routed write to `ORGANIZATION_SIEM_EXPORT_CONFIG`.\n *\n * Without this, `AuditEventDispatcherBackendService` served a stale config for up to\n * `SIEM_CONFIG_REFRESH_AFTER_MS` with no invalidation of any kind, so an organization that ENABLED its\n * SIEM sink kept resolving the cached `null` and had its authenticated audit events routed to no sink\n * for that window. Audit events are not replayed, so those deliveries were lost rather than delayed.\n *\n * **The \"N independent windows\" this file's first revision described is CLOSED.** That revision noted\n * the window was PER PROCESS because the cache is an in-process `Map`, and stopped there — which left\n * the hook correct for exactly one replica and inert for the rest of a real deployment.\n * `invalidateSiemConfig` now drops the local entry AND publishes the organization id on a Redis channel\n * every replica subscribes to, so an engine-routed write converges fleet-wide in milliseconds. Read that\n * method's JSDoc for the broadcast, and `SIEM_CONFIG_REFRESH_AFTER_MS` for the lease that still carries\n * everything the broadcast cannot reach.\n *\n * ## Why the hook sits on the RESOURCE and not on the config service\n *\n * `AuthOrganizationConfigurationService.saveSiemExportConfig` is the obvious call site and is only\n * ONE of the writers: the config is an ordinary resource, so an update also lands through\n * `ServicesRegistryHandler.update` on `organizationSiemExportConfig` directly. Hooking the service\n * would have applied the invariant at one of two sites — the shape\n * `.claude/rules/invariant-call-site-enumeration.md` records twenty-odd times. The resource\n * operation is the chokepoint both writers pass through, because `saveSiemExportConfig` dispatches\n * its own write via `ServicesRegistryHandler`.\n *\n * ## Coverage matrix\n *\n * | Operation | Variant | Covered | Why |\n * |-----------|------------------|---------|-----|\n * | `CREATE` | `INTERNAL_CALL` | ✅ | The lazy `createAsSystem` materialisation on the userless login path, and the first real configuration. Service tier, so a postfix hook is reachable. |\n * | `UPDATE` | `INTERNAL_CALL` | ✅ | Every edit, including `saveSiemExportConfig`. Service tier. |\n * | `DELETE` | `REPOSITORY_ONLY`| ❌ | Deliberate, twice over: `doOperation` throws on `REPOSITORY_ONLY`, so the service tier where custom implementations run is unreachable BY CONSTRUCTION and a registration here would fail startup; and its only caller is the `onParentDelete` cascade, which fires when the owning organization is itself being hard-deleted — nothing dispatches audit events for a deleted tenant, so the entry is moot and TTL-expires. |\n * | `READ` | `API_CALL` | ❌ | Reads do not stale a cache. |\n *\n * **`APPLICATION_SIEM_EXPORT_CONFIG` is deliberately NOT registered.** The dispatcher's cache is\n * keyed by `organizationId` and it only ever loads the ORGANIZATION variant\n * (`loadSiemExportConfig(ec, ORGANIZATION, orgId)`), because SIEM fan-out is per authenticated\n * tenant. The APPLICATION variant is settable and inert — no producer emits app-scoped deliveries —\n * so there is no app-scoped cache entry to invalidate. When an app-scoped producer lands, it gets\n * its own cache and its own registration in the same change.\n *\n * **The framework default-seed is also not covered, and does not need to be.**\n * `organizationSiemExportConfigDefaultSeed` writes a DISABLED default at the repository tier during\n * organization creation, before the organization can have raised an audit event, so there is no\n * entry in the map to stale.\n *\n * ## What no hook on this tier can ever cover — and who relies on it today\n *\n * Repository-direct writes and raw database writes never reach the service tier, so they raise no\n * postfix hook and produce no broadcast. This is not hypothetical: `examples/wonder-todos/e2e/adapter.ts`\n * (`case 'siem'`) repoints an organization's export config with\n * `upsertOrganizationSingleton('organizationSiemExportConfig', …)`, straight at the store. Its own\n * comment records the consequence — the lane works *\"because a freshly provisioned org has a cold\n * config cache\"*, i.e. by ORDERING itself before the organization's first audited action rather than by\n * anything invalidating.\n *\n * For that class of write the LEASE is the entire guarantee, which is why\n * `SIEM_CONFIG_REFRESH_AFTER_MS` states its number, its arithmetic and its reason rather than being an\n * incidental five minutes. Do not read this file as \"engine writes are covered, the rest is someone\n * else's problem\": the two mechanisms are one guarantee, and the lease is the half that has no hook.\n */\nimport {\n CoreResourceOperation,\n CoreResourceType,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport {\n createResourceCustomServiceImplementation,\n type ResourceCustomServiceImplementationFactory,\n} from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport { AuditEventDispatcherBackendService } from '~wildo-backend-lib/compliance/audit-trails/services/audit-event-dispatcher.backend.service';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { ResourceOperation_CustomImplementation_Utils } from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation-base.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport type { ResourceConfiguration_OperationPath } from '@wildo-ai/saas-models';\n\n/** The operations whose writes can stale the dispatcher's cache. See the coverage matrix above. */\nconst INVALIDATING_OPERATIONS = [\n CoreResourceOperation.CREATE,\n CoreResourceOperation.UPDATE,\n] as const;\n\nconst INTERNAL_DEFAULT_PATH = {\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isOperationDefault: true,\n} as const;\n\ntype RowWithOrganizationId = { organizationId?: string };\n\n/**\n * Resolve the organization whose cache entry must go, with a three-tier fallback.\n *\n * 1. **The postfix result** — the persisted row. CREATE and UPDATE both return it, and it carries\n * `organizationId` (injected by the polymorphism engine), so this is the normal path.\n * 2. **`utils.currentObject`** — fetched by the framework before a non-CREATE custom impl runs.\n * Load-bearing when an implementation returns something other than the row.\n * 3. **`executionContext.organizationId`** — the scope the request runs under.\n *\n * Mirrors `resolveOrgIdsForInvalidation` in\n * `scope-features-cache-invalidation.custom-impl.backend.service.ts`; see that file for the\n * reasoning behind each tier.\n */\nfunction resolveOrganizationId(\n result: unknown,\n utils: ResourceOperation_CustomImplementation_Utils,\n executionContext: ExecutionContext<any>,\n): string | undefined {\n const fromResult =\n result != null && typeof result === 'object' && 'organizationId' in result\n ? (result as RowWithOrganizationId).organizationId\n : undefined;\n if (fromResult) return fromResult;\n\n const fromCurrent = (utils.currentObject as RowWithOrganizationId | undefined)?.organizationId;\n if (fromCurrent) return fromCurrent;\n\n return executionContext.organizationId ?? undefined;\n}\n\n/**\n * Registers the postfix invalidation on the ORGANIZATION SIEM-export-config CREATE and UPDATE.\n *\n * The handler is synchronous and cannot fail. `invalidateSiemConfig` drops a map entry and then kicks a\n * fire-and-forget Redis publish that swallows its own error — so unlike the Redis-backed feature-cache\n * equivalent, which awaits its `del`, there is still nothing here to await and no error path. That is a\n * deliberate property of `invalidateSiemConfig`, not an accident of it: a broadcast that fails leaves\n * the other replicas exactly where the lease already puts them, and refusing a configuration write to\n * protect a cache would invert the priority.\n * A `logger.warn` on an unresolvable organization id keeps the gap observable rather than silent:\n * failing the write would be the wrong trade, because refusing a config edit to protect a cache\n * inverts the priority, but a silently un-invalidated entry is the exact defect this file fixes.\n */\nexport function createSiemExportConfigCacheInvalidationFactories(): ResourceCustomServiceImplementationFactory[] {\n return INVALIDATING_OPERATIONS.map(\n (operationIdentifier) => (_rr, container) => {\n const dispatcher = container.get<AuditEventDispatcherBackendService>(\n SAAS_SERVICE_TYPES.AuditEventDispatcherService,\n );\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATION_SIEM_EXPORT_CONFIG,\n operationIdentifier,\n ...INTERNAL_DEFAULT_PATH,\n },\n handlers: {\n postfixCoreOperations: async (\n _id: string | undefined,\n res: unknown,\n executionContext: ExecutionContext<any>,\n operationPath: ResourceConfiguration_OperationPath<any, any>,\n utils: ResourceOperation_CustomImplementation_Utils,\n ): Promise<unknown> => {\n const organizationId = resolveOrganizationId(res, utils, executionContext);\n if (!organizationId) {\n utils.logger.warn(\n 'Could not resolve organizationId for SIEM export config cache invalidation — the dispatcher may serve a stale config for up to its TTL',\n {\n operationIdentifier: String(operationPath.operationIdentifier),\n resourceIdentifier: operationPath.resourceIdentifier,\n rowId: _id,\n },\n );\n return res;\n }\n dispatcher.invalidateSiemConfig(organizationId);\n return res;\n },\n },\n });\n },\n );\n}\n"]}
|
package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts
CHANGED
|
@@ -230,8 +230,50 @@ export declare class SIEMWebhookDeliveryBackendService {
|
|
|
230
230
|
private _buildHeaders;
|
|
231
231
|
/**
|
|
232
232
|
* Send HTTP POST to the SIEM webhook endpoint.
|
|
233
|
+
*
|
|
234
|
+
* ## Why this is not a plain `fetch`
|
|
235
|
+
*
|
|
236
|
+
* `webhookUrl` is TENANT-authored: an organization administrator types it, and this worker POSTs
|
|
237
|
+
* to it holding the deployment's own network position. That is the fifth of the five outbound
|
|
238
|
+
* target classes `security/ssrf/outbound-target-guard.backend.utils.ts` was written for — its
|
|
239
|
+
* header names "SIEM collectors" explicitly — and it was the one class that never called it. A
|
|
240
|
+
* `webhookUrl` of `http://169.254.169.254/latest/meta-data/iam/security-credentials/` was
|
|
241
|
+
* delivered to, with the tenant's own auth headers attached, and the response body came back
|
|
242
|
+
* inside the thrown error's message.
|
|
243
|
+
*
|
|
244
|
+
* {@link pinnedOutboundFetch} closes three separate holes here, not one:
|
|
245
|
+
*
|
|
246
|
+
* 1. **No classification at all.** The shape check now refuses a literal internal address and a
|
|
247
|
+
* reserved special-use hostname before anything leaves the process.
|
|
248
|
+
* 2. **Check-then-connect.** The address is classified inside the connection's `lookup` hook, so a
|
|
249
|
+
* name that answers public to a validator and private to the socket never gets one.
|
|
250
|
+
* 3. **Redirects.** The old call omitted `redirect: 'error'`, so even a perfect check would have
|
|
251
|
+
* been walked past by a collector answering `302 Location: http://169.254.169.254/`. This
|
|
252
|
+
* client cannot follow a redirect at all — a 302 arrives as a 302 and fails the `ok` test
|
|
253
|
+
* below, landing in the retry/DLQ path like any other bad response.
|
|
254
|
+
*
|
|
255
|
+
* ## The behaviour change, stated rather than discovered
|
|
256
|
+
*
|
|
257
|
+
* A collector that today answers a redirect stops being followed and starts failing. That is
|
|
258
|
+
* deliberate: a redirect is precisely how the guard is bypassed, and a SIEM endpoint that needs
|
|
259
|
+
* one should be reconfigured to its final address. A collector on a PRIVATE network keeps working
|
|
260
|
+
* only when the operator has declared
|
|
261
|
+
* `auditTrail.allowPrivateNetworkSiemCollectors` — see {@link _admitsPrivateNetworkCollectors}.
|
|
233
262
|
*/
|
|
234
263
|
private _sendHttpPost;
|
|
264
|
+
/**
|
|
265
|
+
* Has the DEPLOYMENT OPERATOR declared that SIEM collectors may sit on a private network?
|
|
266
|
+
*
|
|
267
|
+
* Read from the application configuration, never from the SIEM config row. The row is authored by
|
|
268
|
+
* an organization administrator — the same party that supplies the URL — so a flag there would let
|
|
269
|
+
* the attacker disarm the guard aimed at them. The operator declares the network posture; the
|
|
270
|
+
* tenant chooses a destination within it.
|
|
271
|
+
*
|
|
272
|
+
* Absent reads as `false`. The field is deliberately un-defaulted in
|
|
273
|
+
* {@link AuditTrailConfigSchema} so that an application which never authored the block gets the
|
|
274
|
+
* refusing posture by doing nothing.
|
|
275
|
+
*/
|
|
276
|
+
private _admitsPrivateNetworkCollectors;
|
|
235
277
|
private _isCircuitOpen;
|
|
236
278
|
private _recordSuccess;
|
|
237
279
|
private _recordFailure;
|
package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siem-webhook-delivery.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/siem-webhook-delivery.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,kBAAkB,CAAC;AAI1B,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,yCAAyC,EAAE,MAAM,qGAAqG,CAAC;AAChK,OAAO,EAAE,qCAAqC,EAAE,MAAM,+EAA+E,CAAC;AACtI,OAAO,EACL,KAAK,0BAA0B,EAU/B,aAAa,
|
|
1
|
+
{"version":3,"file":"siem-webhook-delivery.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/compliance/audit-trails/services/siem-webhook-delivery.backend.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,15 +34,19 @@ import { AppConfigurationService } from '../../../config/services/app-configurat
|
|
|
34
34
|
import { AuditEventDispatcherBackendService } from './audit-event-dispatcher.backend.service.js';
|
|
35
35
|
import { RepositoriesRegistryHandlerBackendService } from '../../../base-classes/services/repositories/repositories-registry-handler.backend.service.js';
|
|
36
36
|
import { ExecutionContextCreatorBackendService } from '../../../runtime/services/execution-context-creator.backend.service.js';
|
|
37
|
-
import { CoreResourceType, CoreResourceOperation, CORE_APP_ROLES, ResourcePrimaryScope, WildoHeaderKeys, SiemDeliveryDlqStatus, SIEMEventFormat, AuthScopeType, coreResourceShared_FieldIdentifier, } from '@wildo-ai/saas-models';
|
|
37
|
+
import { CoreResourceType, CoreResourceOperation, CORE_APP_ROLES, ResourcePrimaryScope, WildoHeaderKeys, SiemDeliveryDlqStatus, SIEMEventFormat, AuthScopeType, coreResourceShared_FieldIdentifier, SIEM_DELIVERY_RELIABILITY_CONTRACT, SIEM_CIRCUIT_BREAKER_COOLDOWN_MS, } from '@wildo-ai/saas-models';
|
|
38
38
|
import { CEF_PROJECTION, LEEF_PROJECTION, cefAgentSeverityHeaderValue, SiemFieldProjectionKind, } from './utils/siem-projection-contract.backend.utils.js';
|
|
39
39
|
import { buildOcsfEvent } from './utils/siem-ocsf-projection.backend.utils.js';
|
|
40
40
|
import { CEF_HEADER_MAX_CHARACTERS, CEF_MAX_CHARACTERS, LEEF_HEADER_MAX_CHARACTERS, LEEF_MAX_CHARACTERS, LEEF_TAB_DELIMITER_HEADER_VALUE, } from './utils/siem-dictionary.backend.utils.js';
|
|
41
41
|
import { describeCaughtError, projectCaughtErrorLogFields, } from '../../../errors/utils/error-log-level-classification.backend.utils.js';
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
import { pinnedOutboundFetch } from '../../../security/ssrf/pinned-outbound-fetch.backend.utils.js';
|
|
43
|
+
/**
|
|
44
|
+
* Circuit-breaker bounds come from `SIEM_DELIVERY_RELIABILITY_CONTRACT`, which the customer
|
|
45
|
+
* documentation also projects: what an operator is told about a paused destination is what this
|
|
46
|
+
* service applies.
|
|
47
|
+
*/
|
|
48
|
+
const CIRCUIT_BREAKER_THRESHOLD = SIEM_DELIVERY_RELIABILITY_CONTRACT.circuitBreakerFailureThreshold;
|
|
49
|
+
const CIRCUIT_BREAKER_COOLDOWN_MS = SIEM_CIRCUIT_BREAKER_COOLDOWN_MS;
|
|
46
50
|
/** Prefix for encrypted credentials (H6) */
|
|
47
51
|
const ENCRYPTED_CREDENTIAL_PREFIX = 'encrypted:aes-256-gcm:';
|
|
48
52
|
/** HKDF-like domain separator for SIEM encryption key derivation */
|
|
@@ -599,16 +603,56 @@ let SIEMWebhookDeliveryBackendService = class SIEMWebhookDeliveryBackendService
|
|
|
599
603
|
}
|
|
600
604
|
/**
|
|
601
605
|
* Send HTTP POST to the SIEM webhook endpoint.
|
|
606
|
+
*
|
|
607
|
+
* ## Why this is not a plain `fetch`
|
|
608
|
+
*
|
|
609
|
+
* `webhookUrl` is TENANT-authored: an organization administrator types it, and this worker POSTs
|
|
610
|
+
* to it holding the deployment's own network position. That is the fifth of the five outbound
|
|
611
|
+
* target classes `security/ssrf/outbound-target-guard.backend.utils.ts` was written for — its
|
|
612
|
+
* header names "SIEM collectors" explicitly — and it was the one class that never called it. A
|
|
613
|
+
* `webhookUrl` of `http://169.254.169.254/latest/meta-data/iam/security-credentials/` was
|
|
614
|
+
* delivered to, with the tenant's own auth headers attached, and the response body came back
|
|
615
|
+
* inside the thrown error's message.
|
|
616
|
+
*
|
|
617
|
+
* {@link pinnedOutboundFetch} closes three separate holes here, not one:
|
|
618
|
+
*
|
|
619
|
+
* 1. **No classification at all.** The shape check now refuses a literal internal address and a
|
|
620
|
+
* reserved special-use hostname before anything leaves the process.
|
|
621
|
+
* 2. **Check-then-connect.** The address is classified inside the connection's `lookup` hook, so a
|
|
622
|
+
* name that answers public to a validator and private to the socket never gets one.
|
|
623
|
+
* 3. **Redirects.** The old call omitted `redirect: 'error'`, so even a perfect check would have
|
|
624
|
+
* been walked past by a collector answering `302 Location: http://169.254.169.254/`. This
|
|
625
|
+
* client cannot follow a redirect at all — a 302 arrives as a 302 and fails the `ok` test
|
|
626
|
+
* below, landing in the retry/DLQ path like any other bad response.
|
|
627
|
+
*
|
|
628
|
+
* ## The behaviour change, stated rather than discovered
|
|
629
|
+
*
|
|
630
|
+
* A collector that today answers a redirect stops being followed and starts failing. That is
|
|
631
|
+
* deliberate: a redirect is precisely how the guard is bypassed, and a SIEM endpoint that needs
|
|
632
|
+
* one should be reconfigured to its final address. A collector on a PRIVATE network keeps working
|
|
633
|
+
* only when the operator has declared
|
|
634
|
+
* `auditTrail.allowPrivateNetworkSiemCollectors` — see {@link _admitsPrivateNetworkCollectors}.
|
|
602
635
|
*/
|
|
603
636
|
async _sendHttpPost(url, body, headers, timeoutMs) {
|
|
604
637
|
const controller = new AbortController();
|
|
605
638
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
606
639
|
try {
|
|
607
|
-
const response = await
|
|
640
|
+
const response = await pinnedOutboundFetch(url, {
|
|
608
641
|
method: 'POST',
|
|
609
642
|
headers,
|
|
610
643
|
body,
|
|
611
644
|
signal: controller.signal,
|
|
645
|
+
/**
|
|
646
|
+
* BOTH schemes, unlike CIMD's https-only policy, and the asymmetry is deliberate rather than
|
|
647
|
+
* an oversight. `webhookUrl` is authored configuration that predates this guard and `http:`
|
|
648
|
+
* collectors exist in the field on trusted internal networks; refusing plaintext here would
|
|
649
|
+
* silently stop delivering security events for those deployments, which is a worse security
|
|
650
|
+
* outcome than the transport weakness it would remove. Narrowing this to `https:` is a
|
|
651
|
+
* separate, operator-visible decision with its own migration — not a side effect of adding
|
|
652
|
+
* an SSRF guard.
|
|
653
|
+
*/
|
|
654
|
+
admittedProtocols: ['https:', 'http:'],
|
|
655
|
+
admitPrivateAddresses: this._admitsPrivateNetworkCollectors(),
|
|
612
656
|
});
|
|
613
657
|
if (!response.ok) {
|
|
614
658
|
const responseText = await response.text().catch(() => '');
|
|
@@ -619,6 +663,21 @@ let SIEMWebhookDeliveryBackendService = class SIEMWebhookDeliveryBackendService
|
|
|
619
663
|
clearTimeout(timeoutId);
|
|
620
664
|
}
|
|
621
665
|
}
|
|
666
|
+
/**
|
|
667
|
+
* Has the DEPLOYMENT OPERATOR declared that SIEM collectors may sit on a private network?
|
|
668
|
+
*
|
|
669
|
+
* Read from the application configuration, never from the SIEM config row. The row is authored by
|
|
670
|
+
* an organization administrator — the same party that supplies the URL — so a flag there would let
|
|
671
|
+
* the attacker disarm the guard aimed at them. The operator declares the network posture; the
|
|
672
|
+
* tenant chooses a destination within it.
|
|
673
|
+
*
|
|
674
|
+
* Absent reads as `false`. The field is deliberately un-defaulted in
|
|
675
|
+
* {@link AuditTrailConfigSchema} so that an application which never authored the block gets the
|
|
676
|
+
* refusing posture by doing nothing.
|
|
677
|
+
*/
|
|
678
|
+
_admitsPrivateNetworkCollectors() {
|
|
679
|
+
return this.appConfigService.config?.auditTrail?.allowPrivateNetworkSiemCollectors === true;
|
|
680
|
+
}
|
|
622
681
|
// ─────────────────────────────────────────────────────────────
|
|
623
682
|
// Circuit Breaker
|
|
624
683
|
// ─────────────────────────────────────────────────────────────
|