@wildo-ai/saas-backend-lib 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/__tests__/fixture-deep-partial.d.ts.map +1 -1
- package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
- package/dist/esm/__tests__/setup.d.ts.map +1 -1
- package/dist/esm/__tests__/test-container.d.ts.map +1 -1
- package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +210 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +220 -25
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +191 -26
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +106 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +266 -20
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +34 -3
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +571 -45
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
- package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +475 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
- package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +70 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +98 -2
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +21 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +109 -2
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +310 -29
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
- package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +350 -10
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +562 -10
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +52 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/index.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +145 -49
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +71 -76
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +37 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +69 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
- package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
- package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
- package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +306 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +379 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +235 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +181 -100
- package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +413 -7
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +684 -45
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +84 -5
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
- package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
- package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +21 -13
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +260 -36
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
- package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +202 -17
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +175 -13
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
- package/dist/esm/files/services/files.backend.service.d.ts +68 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +177 -5
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +52 -11
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
- package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
- package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +179 -8
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +436 -34
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +132 -6
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +467 -49
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +50 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +270 -20
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +371 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +17 -4
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
- package/dist/esm/index.d.ts +11 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +31 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts +10 -0
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +126 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +20 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +22 -3
- package/dist/esm/inject/models/service-types.js.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.js +70 -3
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
- package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +24 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +313 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +389 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +102 -5
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +222 -70
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
- package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js +1 -4
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js +1 -4
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts +3 -3
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js +26 -4
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
- package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts +9 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +81 -9
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/models/index.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
- package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
- package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +83 -5
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +121 -6
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
- package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +191 -1
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +287 -89
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
- package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +113 -4
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
- package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +30 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +197 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +384 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +260 -27
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +70 -4
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +339 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
- package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +37 -124
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +133 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +137 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +134 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +152 -5
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +146 -8
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +328 -29
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +299 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +953 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +99 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +210 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +423 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +282 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +125 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +123 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +214 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +430 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +98 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
- package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
- package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
- package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +11 -9
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-population.backend.service.js","sourceRoot":"","sources":["../../../../../src/resources/services/resource-population.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resource Population Backend Service\n *\n * Handles population of related resources based on DataMode and contextPolicy.\n * Orchestrates fetching of parent/child resources for API responses.\n *\n * Key responsibilities:\n * - Analyze schema for context needs (needsObjectContext, needsUserContext)\n * - Fetch computation context for virtual fields (temporary, not in response)\n * - Populate for SUMMARY mode (isSummaryField({ populate: true }) FKs)\n * - Populate for CONTEXT mode (based on contextPolicy from relationships)\n *\n * Population Modes:\n *\n * 1. SUMMARY Mode:\n * - Populates FK fields marked with isSummaryField({ populate: true })\n * - Fetched parents return their own summary fields\n * - Used for LIST/SEARCH responses where minimal related data is needed\n *\n * 2. CONTEXT Mode:\n * - Uses contextPolicy from ResourceRelationship definitions\n * - Respects operation-specific overrides (e.g., disable on LIST for performance)\n * - Supports depth control and object mode (ID_ONLY, SUMMARY, FULL)\n *\n * 3. Computation Context (internal, not in response):\n * - Fetched only when virtual fields declare needsObjectContext: true\n * - Provides parent/child data to virtual field calculate() functions\n * - Never included in API response (stripped after virtual computation)\n *\n * Performance Optimization:\n * - Context needs are analyzed once per resource type and cached\n * - If no virtuals require context, expensive context fetching is skipped entirely\n * - Batch population for lists (TODO: optimize with bulk queries)\n */\n\nimport { injectable, inject, Container } from 'inversify';\nimport {\n ResourceType,\n ResourceRelationship,\n ResourceRelationshipCardinality,\n ResourcesConfigNamingUtils,\n getAllVariantSchemas,\n resolveSchemaForObject,\n analyzeOperationContextNeeds,\n DataMode,\n CoreResourceOperation,\n getParentDirectionRelationships,\n getChildDirectionRelationships,\n isOneToOneCardinality,\n PersistenceAdapter,\n} from '@wildo-ai/saas-models';\nimport { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport {\n getZodObjectShape,\n isForeignKeyField,\n isSummaryField,\n getSummaryFieldParams,\n isVirtualField,\n virtualFieldNeedsObjectContext,\n virtualFieldNeedsUserContext\n} from '@wildo-ai/zod-decorators';\nimport { z } from 'zod';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { ResourcesRegistryBackendService } from './resources-registry.backend.service';\nimport type { RepositoriesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/repositories/repositories-registry-handler.backend.service';\nimport {\n ResourceContextBackendService,\n ResourceContextFailureMode,\n} from './resource-context.backend.service';\nimport type { ServicesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/services/services-registry-handler.backend.service';\nimport { FilePopulationBackendService, FilePopulationOptions } from '~wildo-backend-lib/files/services/file-population.backend.service';\nimport { RepositoryOptions, ServiceOptions } from '~wildo-backend-lib/base-classes/models/repositories.backend.schemas';\nimport { ExecutionContextCreatorBackendService } from '~wildo-backend-lib/runtime/services/execution-context-creator.backend.service';\n\n// =============================================================================\n// TYPE DEFINITIONS\n// =============================================================================\n\n/**\n * Analysis of what context a resource needs.\n *\n * EFFICIENCY RULES:\n * - needsObjectContext is ONLY true if at least one virtual has needsObjectContext: true\n * - needsUserContext is ONLY true if at least one virtual has needsUserContext: true\n * - If both are false, NO context fetching occurs (fast path)\n * - This analysis is cached per resource type for performance\n */\nexport interface ContextNeedsAnalysis {\n /**\n * True ONLY if at least one virtual field declares needsObjectContext: true.\n * When false, skip expensive context fetching entirely.\n */\n needsObjectContext: boolean;\n\n /**\n * True ONLY if at least one virtual field declares needsUserContext: true.\n * When false, skip user context resolution.\n */\n needsUserContext: boolean;\n\n /** FK fields that should be populated in response (isSummaryField({ populate: true })) */\n responsePopulationFields: Set<string>;\n}\n\n/**\n * Temporary context used for virtual field computation.\n * NOT included in response.\n */\nexport interface ComputationContext {\n /**\n * Full object context (parents AND children).\n * Same structure as objectContext passed to virtual calculate().\n */\n objectContext?: {\n parents?: Record<string, any>;\n children?: Record<string, any>;\n };\n\n /** User context */\n userContext?: any;\n}\n\n/**\n * Controls whether object-context assembly may degrade to an empty context.\n *\n * Virtual-field rendering is intentionally fault tolerant. Authorization and\n * mutation invariants are not: treating a failed relationship read as \"there\n * are no related objects\" would evaluate business policy against invented\n * state.\n */\nexport enum ComputationContextFailureMode {\n FAULT_TOLERANT = 'fault-tolerant',\n PROPAGATE = 'propagate',\n}\n\n// =============================================================================\n// SERVICE IMPLEMENTATION\n// =============================================================================\n\n@injectable()\nexport class ResourcePopulationBackendService {\n\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n // Cache for context needs analysis per resource type\n private contextNeedsCache: Map<ResourceType, ContextNeedsAnalysis> = new Map();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private logger: LoggerService,\n\n @inject(SAAS_SERVICE_TYPES.ResourceRegistryService)\n private resourcesRegistry: ResourcesRegistryBackendService,\n\n @inject(SAAS_SERVICE_TYPES.RepositoriesRegistryHandlerService)\n private repositoriesRegistry: RepositoriesRegistryHandlerBackendService,\n\n @inject(SAAS_SERVICE_TYPES.ResourceContextService)\n private resourceContextService: ResourceContextBackendService,\n\n // Container for lazy resolution of ServicesRegistryHandlerService to break circular dependency\n @inject('Container') private container: Container,\n\n @inject(SAAS_SERVICE_TYPES.FilePopulationService)\n private filePopulationService: FilePopulationBackendService,\n\n @inject(SAAS_SERVICE_TYPES.ExecutionContextCreatorBackendService)\n private executionContextCreator: ExecutionContextCreatorBackendService,\n ) {\n this.logDebug = this.logger.debugByType('ResourcePopulationBackendService');\n this.logger.setDebugTypeLogging('ResourcePopulationBackendService', false);\n\n this.logDebug('Resource population service created');\n }\n\n /** One log per (resourceType, field) for the D10 skip — a per-id warn storm is the failure mode the guard exists to remove. */\n private readonly loggedHttpApiPopulationSkips = new Set<string>();\n\n /**\n * ETL decision D10 (slice 1, recorded deviation on the plan): FK population across an HTTP-API\n * boundary is SKIPPED entirely — the per-relationship opt-in surface lands together with\n * cross-boundary FK support (paper A, gate G1), which registration currently refuses anyway.\n * Consulted at BOTH fetch sites (single-item and list fan-out), enumerated per\n * `invariant-call-site-enumeration.md`. The skip must run BEFORE fetching: the fetch paths\n * swallow failures, so an unguarded remote target would silently half-populate rows.\n */\n private skipHttpApiParentPopulation(parentType: string, resourceType: string, field: string): boolean {\n let parentConfiguration: { persistenceAdapter?: string } | undefined;\n try {\n parentConfiguration = this.resourcesRegistry.tryGetResourceConfiguration(parentType as never) as\n | { persistenceAdapter?: string }\n | undefined;\n } catch {\n return false; // unresolvable parent config — the ordinary fetch path reports it\n }\n if (parentConfiguration?.persistenceAdapter !== PersistenceAdapter.HTTP_API) {\n return false;\n }\n const logKey = `${resourceType}.${field}`;\n if (!this.loggedHttpApiPopulationSkips.has(logKey)) {\n this.loggedHttpApiPopulationSkips.add(logKey);\n this.logger.info(\n `FK population of '${field}' on '${resourceType}' targets HTTP_API-backed '${parentType}' and is skipped (ETL D10, slice 1: no population across a remote boundary). The FK value itself is served; consumers resolve the parent explicitly.`,\n );\n }\n return true;\n }\n\n /**\n * Lazy getter for ServicesRegistryHandlerService to break circular dependency\n * ServicesRegistryHandlerService depends on ResourcePopulationService, so we resolve it lazily\n */\n private getServicesRegistry(): ServicesRegistryHandlerBackendService {\n return this.container.get<ServicesRegistryHandlerBackendService>(SAAS_SERVICE_TYPES.ServicesRegistryHandlerService);\n }\n\n /**\n * Analyze schema to determine what context is needed.\n * Returns computation needs (for virtuals, enabledCondition, basicPrefixOperation) and response population (for API response).\n *\n * EFFICIENCY: Only returns needsObjectContext: true if at least one virtual\n * field, enabledCondition, or basicPrefixOperation explicitly declares needsObjectContext: true.\n * This avoids expensive context fetching when not required.\n */\n analyzeContextNeeds(resourceType: ResourceType): ContextNeedsAnalysis {\n // Check cache first\n if (this.contextNeedsCache.has(resourceType)) {\n return this.contextNeedsCache.get(resourceType)!;\n }\n\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n if (!resourceConfig) {\n const result: ContextNeedsAnalysis = {\n needsObjectContext: false,\n needsUserContext: false,\n responsePopulationFields: new Set(),\n };\n return result;\n }\n\n // Get ALL variant schemas (base + inherited) to analyze comprehensively\n // This ensures we don't miss virtual fields only defined in inherited schemas\n const allSchemas = getAllVariantSchemas(\n resourceConfig.mainSchema,\n resourceConfig.inheritenceSchemaDefinition\n );\n\n let needsObjectContext = false;\n let needsUserContext = false;\n const responsePopulationFields = new Set<string>();\n\n // Analyze each schema variant\n for (const [, schema] of allSchemas) {\n const shape = getZodObjectShape(schema);\n if (!shape) continue;\n\n // Analyze each field in this variant\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n const typedSchema = fieldSchema as z.ZodTypeAny;\n\n // Check for virtual fields with context needs\n if (isVirtualField(typedSchema)) {\n if (virtualFieldNeedsObjectContext(typedSchema)) {\n needsObjectContext = true;\n }\n if (virtualFieldNeedsUserContext(typedSchema)) {\n needsUserContext = true;\n }\n }\n\n // Check for FK fields with isSummaryField({ populate: true })\n if (isForeignKeyField(typedSchema) && isSummaryField(typedSchema)) {\n const summaryParams = getSummaryFieldParams(typedSchema);\n if (summaryParams?.populate) {\n responsePopulationFields.add(fieldName);\n }\n }\n }\n }\n\n // Analyze operations for enabledCondition and basicPrefixOperation context needs\n if (resourceConfig.operations) {\n for (const operation of resourceConfig.operations) {\n const operationNeeds = analyzeOperationContextNeeds(operation as any);\n if (operationNeeds.needsObjectContext) {\n needsObjectContext = true;\n }\n if (operationNeeds.needsUserContext) {\n needsUserContext = true;\n }\n }\n }\n\n const result: ContextNeedsAnalysis = {\n needsObjectContext,\n needsUserContext,\n responsePopulationFields,\n };\n\n // Cache the result\n this.contextNeedsCache.set(resourceType, result);\n\n this.logDebug(`Analyzed context needs for ${resourceType}`, {\n needsObjectContext,\n needsUserContext,\n responsePopulationFieldsCount: responsePopulationFields.size,\n });\n\n return result;\n }\n\n /**\n * Fetch computation context for virtual fields.\n * This is TEMPORARY - only used for virtual computation, not returned in response.\n */\n async fetchComputationContext<T extends Record<string, any>>(\n resourceType: ResourceType,\n data: T,\n needs: ContextNeedsAnalysis,\n executionContext: ExecutionContext<any>,\n repositoryOptions?: RepositoryOptions,\n failureMode: ComputationContextFailureMode =\n ComputationContextFailureMode.FAULT_TOLERANT,\n ): Promise<ComputationContext> {\n const result: ComputationContext = {};\n\n // Fetch object context (parents + children) if needed\n if (needs.needsObjectContext) {\n try {\n // Extract resource ID from data\n const resourceId = data._id?.toString() || data.id;\n if (!resourceId) {\n if (failureMode === ComputationContextFailureMode.PROPAGATE) {\n throw new Error(\n `Cannot fetch authoritative object context for ${resourceType}: missing resource ID`,\n );\n }\n this.logger.warn(`Cannot fetch object context for ${resourceType}: missing resource ID`);\n result.objectContext = { parents: {}, children: {} };\n } else {\n const resourceContext = await this.resourceContextService.buildContext(\n resourceType,\n resourceId,\n data,\n {\n parentDepth: 1,\n childDepth: 0,\n executionContext,\n repositoryOptions,\n failureMode:\n failureMode === ComputationContextFailureMode.PROPAGATE\n ? ResourceContextFailureMode.PROPAGATE\n : ResourceContextFailureMode.FAULT_TOLERANT,\n }\n );\n\n result.objectContext = {\n parents: resourceContext.parents,\n children: resourceContext.children,\n };\n }\n } catch (error) {\n if (failureMode === ComputationContextFailureMode.PROPAGATE) {\n throw error;\n }\n this.logger.warn(`Failed to fetch object context for ${resourceType}`, {\n ...projectCaughtErrorLogFields(error),\n });\n // Don't fail - virtual fields should be fault-tolerant\n result.objectContext = { parents: {}, children: {} };\n }\n }\n\n // Fetch user context if needed\n if (needs.needsUserContext) {\n // User context comes from execution context initiatorIds\n result.userContext = executionContext.initiatorIds || undefined;\n }\n\n return result;\n }\n\n /**\n * Populate for SUMMARY mode.\n * Uses isSummaryField({ populate: true }) FKs.\n * Parents are fetched with THEIR summary fields.\n * Does NOT include computation-only context.\n */\n async populateForSummary<T extends Record<string, any>>(\n resourceType: ResourceType,\n data: T,\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<T & Record<string, any>> {\n const needs = this.analyzeContextNeeds(resourceType);\n\n if (needs.responsePopulationFields.size === 0) {\n // No fields to populate\n return data;\n }\n\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n if (!resourceConfig) {\n return data;\n }\n\n let result = { ...data } as T & Record<string, any>;\n\n // Populate each FK field that has isSummaryField({ populate: true })\n for (const fkField of needs.responsePopulationFields) {\n const fkValue = data[fkField];\n if (!fkValue) continue;\n\n // Determine the populated field name (todoListId -> todoList)\n const populatedFieldName = ResourcesConfigNamingUtils.extractBaseName(fkField);\n\n // Find the relationship for this FK (includes selfRelationships for tree-structured FKs)\n const relationship = this.findRelationshipForField(\n getParentDirectionRelationships(resourceConfig.resourceRelationships),\n fkField\n );\n\n if (!relationship) {\n this.logDebug(`No relationship found for FK field: ${fkField}`);\n continue;\n }\n\n // Fetch the parent resource with its summary fields\n const parentType = relationship.resourceType1 === resourceType\n ? relationship.resourceType2\n : relationship.resourceType1;\n\n // ETL D10 guard, site 1 of 2 (enumerated per invariant-call-site-enumeration): population\n // against an HTTP_API-backed parent is one REMOTE call per row, and this method's own catch\n // SWALLOWS failures — a rate-limited target would silently half-populate rows behind a warn\n // storm. Skipped BEFORE fetching, one legible log per (resourceType, field), never per id.\n if (this.skipHttpApiParentPopulation(parentType, resourceType as string, fkField)) {\n continue;\n }\n\n try {\n // Build relationship context to track how we're accessing the parent\n const relationshipContext: import('@wildo-ai/saas-models').ExecutionContext_RelationshipContext = {\n resourceType: resourceType as string, // Current resource type\n relationshipField: fkField, // FK field on current resource\n resourceId: data._id?.toString() || data.id, // Current resource ID\n };\n\n // Create sub-call context with correct operation for parent READ\n const subContext = await this.executionContextCreator.createForSubCall(\n executionContext,\n parentType,\n CoreResourceOperation.READ,\n { dataMode: DataMode.SUMMARY },\n fkValue,\n relationshipContext\n );\n\n // Use service layer to read parent with SUMMARY mode\n // This ensures parents get full service processing (virtual fields, summary extraction, etc.)\n // in SUMMARY mode, matching the behavior described in the class documentation\n const parentData = await this.getServicesRegistry().read(\n parentType,\n subContext,\n fkValue,\n { dataMode: DataMode.SUMMARY }\n );\n\n if (parentData) {\n (result as Record<string, any>)[populatedFieldName] = parentData;\n }\n } catch (error) {\n this.logger.warn(`Failed to populate ${populatedFieldName} for ${resourceType}`, {\n fkField,\n fkValue,\n ...projectCaughtErrorLogFields(error),\n });\n // Continue with other fields - don't fail the whole operation\n }\n }\n\n // Populate file fields after FK population\n const populateFiles = options?.populateFiles !== false; // default: true\n if (populateFiles) {\n const populatedWithFiles = await this.filePopulationService.populateFileFields(\n result,\n resourceType,\n executionContext,\n { populateFiles: true },\n repositoryOptions\n );\n result = populatedWithFiles as T & Record<string, any>;\n }\n\n return result;\n }\n\n /**\n * Populate for CONTEXT mode.\n * Uses contextPolicy from relationships.\n */\n async populateForContext<T extends Record<string, any>>(\n resourceType: ResourceType,\n data: T,\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<T & Record<string, any>> {\n // Use ResourceContextBackendService for full context population\n try {\n // Extract resource ID from data\n const resourceId = data._id?.toString() || data.id;\n if (!resourceId) {\n this.logger.warn(`Cannot populate context for ${resourceType}: missing resource ID`);\n return data;\n }\n\n // Pass operation to buildContext for proper contextPolicy resolution\n // The operation determines which operationOverrides apply (e.g., objectMode: FULL on READ)\n const operation = executionContext?.operation?.operationIdentifier as CoreResourceOperation | undefined;\n\n this.logDebug(`[populateForContext] Starting for ${resourceType}:${resourceId}`, {\n operation,\n hasExecutionContext: !!executionContext,\n operationIdentifier: executionContext?.operation?.operationIdentifier,\n variantKey: executionContext?.operation?.variantKey,\n });\n\n const resourceContext = await this.resourceContextService.buildContext(\n resourceType,\n resourceId,\n data,\n { executionContext, operation }\n );\n\n this.logDebug(`[populateForContext] buildContext returned`, {\n resourceType,\n hasParents: !!resourceContext.parents,\n parentKeys: resourceContext.parents ? Object.keys(resourceContext.parents) : [],\n hasChildren: !!resourceContext.children,\n childKeys: resourceContext.children ? Object.keys(resourceContext.children) : [],\n childrenCounts: resourceContext.children\n ? Object.entries(resourceContext.children).map(([k, v]) => `${k}:${(v as any[]).length}`)\n : [],\n });\n\n let result = { ...data } as T & Record<string, any>;\n\n // Merge parents into result\n // Parents are ResourceContextItem[] - extract .data from each\n // For parents, typically there's one item (1:1 relationship), so we extract the first item's data\n if (resourceContext.parents) {\n for (const [key, items] of Object.entries(resourceContext.parents)) {\n if (Array.isArray(items) && items.length > 0) {\n // For parent relationships (typically 1:1), use the first item's data directly\n // If there are multiple parents of the same type (unusual), take the first\n (result as Record<string, any>)[key] = items[0]?.data;\n }\n }\n }\n\n // Merge children into result\n // Children are ResourceContextItem[] - extract .data from each\n // For 1:1 relationships, return single object with singularized key\n // For 1:many relationships, return array with plural key\n if (resourceContext.children) {\n for (const [key, items] of Object.entries(resourceContext.children)) {\n this.logDebug(`[populateForContext] Processing child key=${key}, itemsCount=${items?.length || 0}`);\n\n if (Array.isArray(items) && items.length > 0) {\n // Check cardinality from the first item to determine if 1:1 or 1:many\n const cardinality = items[0]?.cardinality;\n const isOneToOne = cardinality === ResourceRelationshipCardinality.ONE ||\n cardinality === ResourceRelationshipCardinality.ZERO_OR_ONE;\n\n // Use singularized key for 1:1 relationships\n // e.g., 'userSelfProfiles' -> 'userSelfProfile', but 'organizationMembers' stays as-is\n const fieldKey = isOneToOne\n ? ResourcesConfigNamingUtils.singularize(key)\n : key;\n\n this.logDebug(`[populateForContext] Child ${key}: cardinality=${cardinality}, isOneToOne=${isOneToOne}, fieldKey=${fieldKey}`);\n\n if (isOneToOne) {\n // 1:1 relationship: return single object with singularized key\n (result as Record<string, any>)[fieldKey] = items[0]?.data;\n } else {\n // 1:many relationship: return array with plural key\n (result as Record<string, any>)[fieldKey] = items.map(item => item?.data).filter(Boolean);\n }\n } else if (Array.isArray(items)) {\n // Empty result. Cardinality CANNOT be read from items (there are none),\n // so resolve it from the relationship config. A 1:1 child with no row\n // must be OMITTED: the contextDto types a 1:1 embed as an OPTIONAL single\n // `z.record` (see `addRelationshipPlaceholders`), so writing `[]` fails\n // output validation with \"expected record, received array\" — the exact\n // crash for a freshly-created user whose 1:1 `userSelfPreferences` row does\n // not exist yet. A 1:many child stays an empty array (its contextDto\n // placeholder is `z.array(...).optional()`, and consumers expect an array,\n // not an absent field). If the relationship can't be resolved, fall back to\n // the historical `[]` behaviour.\n const emptyChildRelationship = this.findContextChildRelationship(resourceType, key);\n const emptyIsOneToOne = emptyChildRelationship\n ? isOneToOneCardinality(emptyChildRelationship.cardinality2)\n : false;\n this.logDebug(`[populateForContext] Child ${key}: empty items array (isOneToOne=${emptyIsOneToOne})`);\n if (!emptyIsOneToOne) {\n (result as Record<string, any>)[key] = [];\n }\n // 1:1 with no row → leave the field absent (optional single record in contextDto)\n }\n }\n }\n\n // Populate file fields after context population\n const populateFiles = options?.populateFiles !== false; // default: true\n if (populateFiles) {\n const populatedWithFiles = await this.filePopulationService.populateFileFields(\n result,\n resourceType,\n executionContext,\n { populateFiles: true },\n repositoryOptions\n );\n result = populatedWithFiles as T & Record<string, any>;\n }\n\n return result;\n } catch (error) {\n this.logger.warn(`Failed to populate context for ${resourceType}`, {\n ...projectCaughtErrorLogFields(error),\n });\n return data;\n }\n }\n\n /**\n * Batch populate for lists (SUMMARY mode).\n * Optimized: Collects unique FK values, batch fetches parents, then distributes to items.\n */\n async populateListForSummary<T extends Record<string, any>>(\n resourceType: ResourceType,\n items: T[],\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<T[]> {\n const needs = this.analyzeContextNeeds(resourceType);\n\n if (needs.responsePopulationFields.size === 0 || items.length === 0) {\n return items;\n }\n\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n if (!resourceConfig) {\n return items;\n }\n\n // Step 1: Collect unique FK values per field\n const fkValuesByField = new Map<string, Set<string>>();\n for (const field of needs.responsePopulationFields) {\n fkValuesByField.set(field, new Set());\n }\n\n for (const item of items) {\n for (const field of needs.responsePopulationFields) {\n const value = item[field];\n if (value) {\n const id = typeof value === 'string' ? value : (value._id?.toString() || value.id?.toString() || String(value));\n if (id) {\n fkValuesByField.get(field)!.add(id);\n }\n }\n }\n }\n\n // Step 2: Batch fetch all parents, grouped by field\n const fetchedParentsByField = new Map<string, Map<string, any>>();\n\n for (const [field, fkValues] of fkValuesByField.entries()) {\n if (fkValues.size === 0) continue;\n\n // Find the relationship for this FK (includes selfRelationships for tree-structured FKs)\n const relationship = this.findRelationshipForField(\n getParentDirectionRelationships(resourceConfig.resourceRelationships),\n field\n );\n\n if (!relationship) {\n this.logDebug(`No relationship found for FK field: ${field}`);\n continue;\n }\n\n // Determine parent resource type\n const parentType = relationship.resourceType1 === resourceType\n ? relationship.resourceType2\n : relationship.resourceType1;\n\n // ETL D10 guard, site 2 of 2: the list path fans out one PARALLEL remote read per unique\n // parent id, unbounded — the exact N+1-against-a-remote-API shape the decision forbids.\n if (this.skipHttpApiParentPopulation(parentType, resourceType as string, field)) {\n continue;\n }\n\n try {\n // Batch fetch all parents using parallel individual reads via service layer\n // Using service layer ensures parents get full service processing (virtual fields, summary extraction, etc.)\n // in SUMMARY mode, matching the behavior described in the class documentation\n const parentIds = Array.from(fkValues);\n const parentsMap = new Map<string, any>();\n\n // Use Promise.all for parallel individual reads\n await Promise.all(\n parentIds.map(async (id) => {\n try {\n // Build relationship context (we don't have specific item ID here, using field info)\n const relationshipContext: import('@wildo-ai/saas-models').ExecutionContext_RelationshipContext = {\n resourceType: resourceType as string, // Current resource type\n relationshipField: field, // FK field on current resource\n resourceId: id, // Parent ID being fetched\n };\n\n // Create sub-call context with correct operation for parent READ\n const subContext = await this.executionContextCreator.createForSubCall(\n executionContext,\n parentType,\n CoreResourceOperation.READ,\n { dataMode: DataMode.SUMMARY },\n id,\n relationshipContext\n );\n\n const parent = await this.getServicesRegistry().read(\n parentType,\n subContext,\n id,\n { dataMode: DataMode.SUMMARY }\n );\n if (parent) {\n const parentRecord = parent as Record<string, any>;\n const parentId = parentRecord._id?.toString() || parentRecord.id?.toString() || id;\n parentsMap.set(parentId, parent);\n }\n } catch (error) {\n // Skip failed reads - don't fail entire operation\n this.logDebug(`Failed to read parent ${parentType}:${id}`, {\n error: describeCaughtError(error)\n });\n }\n })\n );\n\n fetchedParentsByField.set(field, parentsMap);\n } catch (error) {\n this.logger.warn(`Failed to batch fetch parents for field ${field}`, {\n parentType,\n ...projectCaughtErrorLogFields(error),\n });\n // Continue with other fields\n }\n }\n\n // Step 3: Distribute fetched parents to items\n const results: (T & Record<string, any>)[] = [];\n for (const item of items) {\n const result = { ...item } as T & Record<string, any>;\n\n for (const field of needs.responsePopulationFields) {\n const fkValue = item[field];\n if (!fkValue) continue;\n\n const fkId = typeof fkValue === 'string' ? fkValue : (fkValue._id?.toString() || fkValue.id?.toString() || String(fkValue));\n const parentsMap = fetchedParentsByField.get(field);\n\n if (parentsMap && fkId) {\n const parent = parentsMap.get(fkId);\n if (parent) {\n const populatedFieldName = ResourcesConfigNamingUtils.extractBaseName(field);\n (result as Record<string, any>)[populatedFieldName] = parent;\n }\n }\n }\n\n results.push(result);\n }\n\n // Populate file fields after FK population\n const populateFiles = options?.populateFiles !== false; // default: true\n if (populateFiles) {\n const populatedWithFiles = await this.filePopulationService.populateFileFields(\n results,\n resourceType,\n executionContext,\n { populateFiles: true },\n repositoryOptions\n );\n return populatedWithFiles as T[];\n }\n\n return results;\n }\n\n /**\n * Batch populate for lists (CONTEXT mode).\n */\n async populateListForContext<T extends Record<string, any>>(\n resourceType: ResourceType,\n dataList: T[],\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<(T & Record<string, any>)[]> {\n if (dataList.length === 0) {\n return dataList;\n }\n\n // TODO: Implement batch optimization\n\n // For now, populate each item individually (less optimal)\n const results: (T & Record<string, any>)[] = [];\n for (const item of dataList) {\n const populated = await this.populateForContext(resourceType, item, executionContext, options, repositoryOptions);\n results.push(populated);\n }\n\n // File population is already handled in populateForContext\n return results;\n }\n\n // =============================================================================\n // PRIVATE HELPERS\n // =============================================================================\n\n /**\n * Find the relationship that corresponds to a given FK field.\n * Uses the allResourceFieldIdentifiers map for lookup instead of string manipulation.\n */\n private findRelationshipForField(\n relationships: ResourceRelationship[],\n fkField: string\n ): ResourceRelationship | undefined {\n const fieldIdentifiers = this.resourcesRegistry.getAllResourceFieldIdentifiers();\n\n return relationships.find(rel => {\n // Priority 1: Explicit foreignKeyField matches\n if (rel.foreignKeyField === fkField) {\n return true;\n }\n // Priority 2: Check if FK field matches the standard field identifier for the related resource type\n // For relationship A → B with B as resourceType2, the FK on A is B's field identifier\n const standardFieldIdentifier = fieldIdentifiers[rel.resourceType2];\n return standardFieldIdentifier === fkField;\n });\n }\n\n /**\n * Resolve the child-direction relationship a CONTEXT children key corresponds to.\n * The key is the child resource type (`resourceType2`) under which\n * `ResourceContextBackendService` groups fetched items. Used by\n * `populateForContext` to recover a relationship's cardinality when the fetched\n * item set is EMPTY — cardinality can't be read from a non-existent item, so an\n * absent 1:1 child would otherwise be mis-projected as `[]` and fail the\n * optional-single-`z.record` contextDto placeholder. Uses the same\n * `getChildDirectionRelationships` enumeration the DTO builder uses, keyed by\n * `resourceType2` (how the context service groups children).\n */\n private findContextChildRelationship(\n resourceType: ResourceType,\n childResourceType: string,\n ): ResourceRelationship | undefined {\n const config = this.resourcesRegistry.tryGetResourceConfiguration(resourceType);\n if (!config?.resourceRelationships) {\n return undefined;\n }\n return getChildDirectionRelationships(config.resourceRelationships)\n .find(rel => rel.resourceType2 === childResourceType);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"resource-population.backend.service.js","sourceRoot":"","sources":["../../../../src/resources/services/resource-population.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resource Population Backend Service\n *\n * Handles population of related resources based on DataMode and contextPolicy.\n * Orchestrates fetching of parent/child resources for API responses.\n *\n * Key responsibilities:\n * - Analyze schema for context needs (needsObjectContext, needsUserContext)\n * - Fetch computation context for virtual fields (temporary, not in response)\n * - Populate for SUMMARY mode (isSummaryField({ populate: true }) FKs)\n * - Populate for CONTEXT mode (based on contextPolicy from relationships)\n *\n * Population Modes:\n *\n * 1. SUMMARY Mode:\n * - Populates FK fields marked with isSummaryField({ populate: true })\n * - Fetched parents return their own summary fields\n * - Used for LIST/SEARCH responses where minimal related data is needed\n *\n * 2. CONTEXT Mode:\n * - Uses contextPolicy from ResourceRelationship definitions\n * - Respects operation-specific overrides (e.g., disable on LIST for performance)\n * - Supports depth control and object mode (ID_ONLY, SUMMARY, FULL)\n *\n * 3. Computation Context (internal, not in response):\n * - Fetched only when virtual fields declare needsObjectContext: true\n * - Provides parent/child data to virtual field calculate() functions\n * - Never included in API response (stripped after virtual computation)\n *\n * Performance Optimization:\n * - Context needs are analyzed once per resource type and cached\n * - If no virtuals require context, expensive context fetching is skipped entirely\n * - Batch population for lists (TODO: optimize with bulk queries)\n */\n\nimport { injectable, inject, Container } from 'inversify';\nimport {\n ResourceType,\n ResourceRelationship,\n ResourceRelationshipCardinality,\n ResourcesConfigNamingUtils,\n getAllVariantSchemas,\n resolveSchemaForObject,\n analyzeOperationContextNeeds,\n DataMode,\n CoreResourceOperation,\n getParentDirectionRelationships,\n getChildDirectionRelationships,\n isOneToOneCardinality,\n PersistenceAdapter,\n Resources_SharedUtils,\n} from '@wildo-ai/saas-models';\nimport { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport {\n getZodObjectShape,\n isForeignKeyField,\n isSummaryField,\n getSummaryFieldParams,\n isVirtualField,\n virtualFieldNeedsObjectContext,\n virtualFieldNeedsUserContext\n} from '@wildo-ai/zod-decorators';\nimport { z } from 'zod';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { ResourcesRegistryBackendService } from './resources-registry.backend.service';\nimport type { RepositoriesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/repositories/repositories-registry-handler.backend.service';\nimport {\n ResourceContextBackendService,\n ResourceContextFailureMode,\n} from './resource-context.backend.service';\nimport type { ServicesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/services/services-registry-handler.backend.service';\nimport { FilePopulationBackendService, FilePopulationOptions } from '~wildo-backend-lib/files/services/file-population.backend.service';\nimport { RepositoryOptions, ServiceOptions } from '~wildo-backend-lib/base-classes/models/repositories.backend.schemas';\nimport { ExecutionContextCreatorBackendService } from '~wildo-backend-lib/runtime/services/execution-context-creator.backend.service';\n\n// =============================================================================\n// TYPE DEFINITIONS\n// =============================================================================\n\n/**\n * Analysis of what context a resource needs.\n *\n * EFFICIENCY RULES:\n * - needsObjectContext is ONLY true if at least one virtual has needsObjectContext: true\n * - needsUserContext is ONLY true if at least one virtual has needsUserContext: true\n * - If both are false, NO context fetching occurs (fast path)\n * - This analysis is cached per resource type for performance\n */\nexport interface ContextNeedsAnalysis {\n /**\n * True ONLY if at least one virtual field declares needsObjectContext: true.\n * When false, skip expensive context fetching entirely.\n */\n needsObjectContext: boolean;\n\n /**\n * True ONLY if at least one virtual field declares needsUserContext: true.\n * When false, skip user context resolution.\n */\n needsUserContext: boolean;\n\n /** FK fields that should be populated in response (isSummaryField({ populate: true })) */\n responsePopulationFields: Set<string>;\n}\n\n/**\n * Temporary context used for virtual field computation.\n * NOT included in response.\n */\nexport interface ComputationContext {\n /**\n * Full object context (parents AND children).\n * Same structure as objectContext passed to virtual calculate().\n */\n objectContext?: {\n parents?: Record<string, any>;\n children?: Record<string, any>;\n };\n\n /** User context */\n userContext?: any;\n}\n\n/**\n * Controls whether object-context assembly may degrade to an empty context.\n *\n * Virtual-field rendering is intentionally fault tolerant. Authorization and\n * mutation invariants are not: treating a failed relationship read as \"there\n * are no related objects\" would evaluate business policy against invented\n * state.\n */\nexport enum ComputationContextFailureMode {\n FAULT_TOLERANT = 'fault-tolerant',\n PROPAGATE = 'propagate',\n}\n\n// =============================================================================\n// SERVICE IMPLEMENTATION\n// =============================================================================\n\n@injectable()\nexport class ResourcePopulationBackendService {\n\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n // Cache for context needs analysis per resource type\n private contextNeedsCache: Map<ResourceType, ContextNeedsAnalysis> = new Map();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private logger: LoggerService,\n\n @inject(SAAS_SERVICE_TYPES.ResourceRegistryService)\n private resourcesRegistry: ResourcesRegistryBackendService,\n\n @inject(SAAS_SERVICE_TYPES.RepositoriesRegistryHandlerService)\n private repositoriesRegistry: RepositoriesRegistryHandlerBackendService,\n\n @inject(SAAS_SERVICE_TYPES.ResourceContextService)\n private resourceContextService: ResourceContextBackendService,\n\n // Container for lazy resolution of ServicesRegistryHandlerService to break circular dependency\n @inject('Container') private container: Container,\n\n @inject(SAAS_SERVICE_TYPES.FilePopulationService)\n private filePopulationService: FilePopulationBackendService,\n\n @inject(SAAS_SERVICE_TYPES.ExecutionContextCreatorBackendService)\n private executionContextCreator: ExecutionContextCreatorBackendService,\n ) {\n this.logDebug = this.logger.debugByType('ResourcePopulationBackendService');\n this.logger.setDebugTypeLogging('ResourcePopulationBackendService', false);\n\n this.logDebug('Resource population service created');\n }\n\n /** One log per (resourceType, field) for the D10 skip — a per-id warn storm is the failure mode the guard exists to remove. */\n private readonly loggedHttpApiPopulationSkips = new Set<string>();\n\n /**\n * ETL decision D10 (slice 1, recorded deviation on the plan): FK population across an HTTP-API\n * boundary is SKIPPED entirely — the per-relationship opt-in surface lands together with\n * cross-boundary FK support (paper A, gate G1), which registration currently refuses anyway.\n * Consulted at BOTH fetch sites (single-item and list fan-out), enumerated per\n * `invariant-call-site-enumeration.md`. The skip must run BEFORE fetching: the fetch paths\n * swallow failures, so an unguarded remote target would silently half-populate rows.\n */\n private skipHttpApiParentPopulation(parentType: string, resourceType: string, field: string): boolean {\n let parentConfiguration: { persistenceAdapter?: string } | undefined;\n try {\n parentConfiguration = this.resourcesRegistry.tryGetResourceConfiguration(parentType as never) as\n | { persistenceAdapter?: string }\n | undefined;\n } catch {\n return false; // unresolvable parent config — the ordinary fetch path reports it\n }\n if (parentConfiguration?.persistenceAdapter !== PersistenceAdapter.HTTP_API) {\n return false;\n }\n const logKey = `${resourceType}.${field}`;\n if (!this.loggedHttpApiPopulationSkips.has(logKey)) {\n this.loggedHttpApiPopulationSkips.add(logKey);\n this.logger.info(\n `FK population of '${field}' on '${resourceType}' targets HTTP_API-backed '${parentType}' and is skipped (ETL D10, slice 1: no population across a remote boundary). The FK value itself is served; consumers resolve the parent explicitly.`,\n );\n }\n return true;\n }\n\n /**\n * Lazy getter for ServicesRegistryHandlerService to break circular dependency\n * ServicesRegistryHandlerService depends on ResourcePopulationService, so we resolve it lazily\n */\n private getServicesRegistry(): ServicesRegistryHandlerBackendService {\n return this.container.get<ServicesRegistryHandlerBackendService>(SAAS_SERVICE_TYPES.ServicesRegistryHandlerService);\n }\n\n /**\n * Analyze schema to determine what context is needed.\n * Returns computation needs (for virtuals, enabledCondition, basicPrefixOperation) and response population (for API response).\n *\n * EFFICIENCY: Only returns needsObjectContext: true if at least one virtual\n * field, enabledCondition, or basicPrefixOperation explicitly declares needsObjectContext: true.\n * This avoids expensive context fetching when not required.\n */\n analyzeContextNeeds(resourceType: ResourceType): ContextNeedsAnalysis {\n // Check cache first\n if (this.contextNeedsCache.has(resourceType)) {\n return this.contextNeedsCache.get(resourceType)!;\n }\n\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n if (!resourceConfig) {\n const result: ContextNeedsAnalysis = {\n needsObjectContext: false,\n needsUserContext: false,\n responsePopulationFields: new Set(),\n };\n return result;\n }\n\n // Get ALL variant schemas (base + inherited) to analyze comprehensively\n // This ensures we don't miss virtual fields only defined in inherited schemas\n const allSchemas = getAllVariantSchemas(\n resourceConfig.mainSchema,\n resourceConfig.inheritenceSchemaDefinition\n );\n\n let needsObjectContext = false;\n let needsUserContext = false;\n const responsePopulationFields = new Set<string>();\n\n // Analyze each schema variant\n for (const [, schema] of allSchemas) {\n const shape = getZodObjectShape(schema);\n if (!shape) continue;\n\n // Analyze each field in this variant\n for (const [fieldName, fieldSchema] of Object.entries(shape)) {\n const typedSchema = fieldSchema as z.ZodTypeAny;\n\n // Check for virtual fields with context needs\n if (isVirtualField(typedSchema)) {\n if (virtualFieldNeedsObjectContext(typedSchema)) {\n needsObjectContext = true;\n }\n if (virtualFieldNeedsUserContext(typedSchema)) {\n needsUserContext = true;\n }\n }\n\n // Check for FK fields with isSummaryField({ populate: true })\n if (isForeignKeyField(typedSchema) && isSummaryField(typedSchema)) {\n const summaryParams = getSummaryFieldParams(typedSchema);\n if (summaryParams?.populate) {\n responsePopulationFields.add(fieldName);\n }\n }\n }\n }\n\n // Analyze operations for enabledCondition and basicPrefixOperation context needs\n if (resourceConfig.operations) {\n for (const operation of resourceConfig.operations) {\n const operationNeeds = analyzeOperationContextNeeds(operation as any);\n if (operationNeeds.needsObjectContext) {\n needsObjectContext = true;\n }\n if (operationNeeds.needsUserContext) {\n needsUserContext = true;\n }\n }\n }\n\n const result: ContextNeedsAnalysis = {\n needsObjectContext,\n needsUserContext,\n responsePopulationFields,\n };\n\n // Cache the result\n this.contextNeedsCache.set(resourceType, result);\n\n this.logDebug(`Analyzed context needs for ${resourceType}`, {\n needsObjectContext,\n needsUserContext,\n responsePopulationFieldsCount: responsePopulationFields.size,\n });\n\n return result;\n }\n\n /**\n * Fetch computation context for virtual fields.\n * This is TEMPORARY - only used for virtual computation, not returned in response.\n */\n async fetchComputationContext<T extends Record<string, any>>(\n resourceType: ResourceType,\n data: T,\n needs: ContextNeedsAnalysis,\n executionContext: ExecutionContext<any>,\n repositoryOptions?: RepositoryOptions,\n failureMode: ComputationContextFailureMode =\n ComputationContextFailureMode.FAULT_TOLERANT,\n ): Promise<ComputationContext> {\n const result: ComputationContext = {};\n\n // Fetch object context (parents + children) if needed\n if (needs.needsObjectContext) {\n try {\n // Extract resource ID from data\n const resourceId = data._id?.toString() || data.id;\n if (!resourceId) {\n if (failureMode === ComputationContextFailureMode.PROPAGATE) {\n throw new Error(\n `Cannot fetch authoritative object context for ${resourceType}: missing resource ID`,\n );\n }\n this.logger.warn(`Cannot fetch object context for ${resourceType}: missing resource ID`);\n result.objectContext = { parents: {}, children: {} };\n } else {\n const resourceContext = await this.resourceContextService.buildContext(\n resourceType,\n resourceId,\n data,\n {\n parentDepth: 1,\n childDepth: 0,\n executionContext,\n repositoryOptions,\n failureMode:\n failureMode === ComputationContextFailureMode.PROPAGATE\n ? ResourceContextFailureMode.PROPAGATE\n : ResourceContextFailureMode.FAULT_TOLERANT,\n }\n );\n\n result.objectContext = {\n parents: resourceContext.parents,\n children: resourceContext.children,\n };\n }\n } catch (error) {\n if (failureMode === ComputationContextFailureMode.PROPAGATE) {\n throw error;\n }\n this.logger.warn(`Failed to fetch object context for ${resourceType}`, {\n ...projectCaughtErrorLogFields(error),\n });\n // Don't fail - virtual fields should be fault-tolerant\n result.objectContext = { parents: {}, children: {} };\n }\n }\n\n // Fetch user context if needed\n if (needs.needsUserContext) {\n // User context comes from execution context initiatorIds\n result.userContext = executionContext.initiatorIds || undefined;\n }\n\n return result;\n }\n\n /**\n * Populate for SUMMARY mode.\n * Uses isSummaryField({ populate: true }) FKs.\n * Parents are fetched with THEIR summary fields.\n * Does NOT include computation-only context.\n */\n async populateForSummary<T extends Record<string, any>>(\n resourceType: ResourceType,\n data: T,\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<T & Record<string, any>> {\n const needs = this.analyzeContextNeeds(resourceType);\n\n if (needs.responsePopulationFields.size === 0) {\n // No fields to populate\n return data;\n }\n\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n if (!resourceConfig) {\n return data;\n }\n\n let result = { ...data } as T & Record<string, any>;\n\n // Populate each FK field that has isSummaryField({ populate: true })\n for (const fkField of needs.responsePopulationFields) {\n const fkValue = data[fkField];\n if (!fkValue) continue;\n\n // Determine the populated field name (todoListId -> todoList)\n const populatedFieldName = ResourcesConfigNamingUtils.extractBaseName(fkField);\n\n // Find the relationship for this FK (includes selfRelationships for tree-structured FKs)\n const relationship = this.findRelationshipForField(\n getParentDirectionRelationships(resourceConfig.resourceRelationships),\n fkField\n );\n\n if (!relationship) {\n this.logDebug(`No relationship found for FK field: ${fkField}`);\n continue;\n }\n\n // Fetch the parent resource with its summary fields\n const parentType = relationship.resourceType1 === resourceType\n ? relationship.resourceType2\n : relationship.resourceType1;\n\n // ETL D10 guard, site 1 of 2 (enumerated per invariant-call-site-enumeration): population\n // against an HTTP_API-backed parent is one REMOTE call per row, and this method's own catch\n // SWALLOWS failures — a rate-limited target would silently half-populate rows behind a warn\n // storm. Skipped BEFORE fetching, one legible log per (resourceType, field), never per id.\n if (this.skipHttpApiParentPopulation(parentType, resourceType as string, fkField)) {\n continue;\n }\n\n try {\n // Build relationship context to track how we're accessing the parent\n const relationshipContext: import('@wildo-ai/saas-models').ExecutionContext_RelationshipContext = {\n resourceType: resourceType as string, // Current resource type\n relationshipField: fkField, // FK field on current resource\n resourceId: data._id?.toString() || data.id, // Current resource ID\n };\n\n // Create sub-call context with correct operation for parent READ\n const subContext = await this.executionContextCreator.createForSubCall(\n executionContext,\n parentType,\n CoreResourceOperation.READ,\n { dataMode: DataMode.SUMMARY },\n fkValue,\n relationshipContext\n );\n\n // Use service layer to read parent with SUMMARY mode\n // This ensures parents get full service processing (virtual fields, summary extraction, etc.)\n // in SUMMARY mode, matching the behavior described in the class documentation\n const parentData = await this.getServicesRegistry().read(\n parentType,\n subContext,\n fkValue,\n { dataMode: DataMode.SUMMARY }\n );\n\n if (parentData) {\n (result as Record<string, any>)[populatedFieldName] = parentData;\n }\n } catch (error) {\n this.logger.warn(`Failed to populate ${populatedFieldName} for ${resourceType}`, {\n fkField,\n fkValue,\n ...projectCaughtErrorLogFields(error),\n });\n // Continue with other fields - don't fail the whole operation\n }\n }\n\n // Populate file fields after FK population\n const populateFiles = options?.populateFiles !== false; // default: true\n if (populateFiles) {\n const populatedWithFiles = await this.filePopulationService.populateFileFields(\n result,\n resourceType,\n executionContext,\n { populateFiles: true },\n repositoryOptions\n );\n result = populatedWithFiles as T & Record<string, any>;\n }\n\n return result;\n }\n\n /**\n * Populate for CONTEXT mode.\n * Uses contextPolicy from relationships.\n */\n async populateForContext<T extends Record<string, any>>(\n resourceType: ResourceType,\n data: T,\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<T & Record<string, any>> {\n // Use ResourceContextBackendService for full context population\n try {\n // Extract resource ID from data\n const resourceId = data._id?.toString() || data.id;\n if (!resourceId) {\n this.logger.warn(`Cannot populate context for ${resourceType}: missing resource ID`);\n return data;\n }\n\n // Pass operation to buildContext for proper contextPolicy resolution\n // The operation determines which operationOverrides apply (e.g., objectMode: FULL on READ)\n const operation = executionContext?.operation?.operationIdentifier as CoreResourceOperation | undefined;\n\n this.logDebug(`[populateForContext] Starting for ${resourceType}:${resourceId}`, {\n operation,\n hasExecutionContext: !!executionContext,\n operationIdentifier: executionContext?.operation?.operationIdentifier,\n variantKey: executionContext?.operation?.variantKey,\n });\n\n const resourceContext = await this.resourceContextService.buildContext(\n resourceType,\n resourceId,\n data,\n { executionContext, operation }\n );\n\n this.logDebug(`[populateForContext] buildContext returned`, {\n resourceType,\n hasParents: !!resourceContext.parents,\n parentKeys: resourceContext.parents ? Object.keys(resourceContext.parents) : [],\n hasChildren: !!resourceContext.children,\n childKeys: resourceContext.children ? Object.keys(resourceContext.children) : [],\n childrenCounts: resourceContext.children\n ? Object.entries(resourceContext.children).map(([k, v]) => `${k}:${(v as any[]).length}`)\n : [],\n });\n\n let result = { ...data } as T & Record<string, any>;\n\n // Merge parents into result\n // Parents are ResourceContextItem[] - extract .data from each\n // For parents, typically there's one item (1:1 relationship), so we extract the first item's data\n //\n // ⚠️ ENUMERATED AND DELIBERATELY NOT CHANGED (2026-09-10, issue #563). This branch has the\n // SAME name-derivation defect the child branch below just lost: it keys on `resourceType1`\n // while the context DTO declares the FK-derived name (`users` vs `user`, `organizations` vs\n // `organization`, `user_self` vs `user`). Measured over the core registry it mismatches on\n // **37 of 37** context-enabled parent relationships — so no parent object has ever survived\n // the response parse, on any resource.\n //\n // It is not fixed here because the rename is only half a fix and the other half is a DESIGN\n // decision rather than a rename: `addRelationshipPlaceholders` types a parent placeholder as\n // `z.object({ _id: z.string() }).optional()`, so a correctly-named parent would still arrive\n // as a bare `{_id}` whatever SUMMARY/FULL `objectMode` its contextPolicy asked for. Landing\n // the rename alone would add 37 near-empty objects to context responses in every generated\n // application and satisfy no requirement #563 states. Filed with the measurement instead, so\n // the next reader inherits the count rather than re-deriving it.\n if (resourceContext.parents) {\n for (const [key, items] of Object.entries(resourceContext.parents)) {\n if (Array.isArray(items) && items.length > 0) {\n // For parent relationships (typically 1:1), use the first item's data directly\n // If there are multiple parents of the same type (unusual), take the first\n (result as Record<string, any>)[key] = items[0]?.data;\n }\n }\n }\n\n // Merge children into result.\n //\n // The field name is NOT derived here. It comes from\n // `Resources_SharedUtils.resolveRelationshipObjectIdentity` — the SAME authority\n // `ResourcesConfigOperations_DtosBuilderUtils.addRelationshipPlaceholders` uses to declare\n // the context placeholder on `contextDto` / `internalDto`. That is the whole point of the\n // call: a populated field survives only if the DTO declares a field of exactly that name,\n // because BOTH the service-layer `internalDto.parse` (`transformOutput`) and the controller's\n // response serializer strip anything the schema does not name.\n //\n // ⚠️ This used to derive the name independently — `singularize(resourceType2)` for 1:1,\n // `resourceType2` verbatim for 1:many — on the stated grounds that the two derivations were\n // \"structurally equivalent\". They are not. The DTO derives from the related resource's\n // `resourceFieldIdentifier`, whose stem is authored and need not be the singular of the\n // resource type: `USER_SELF_PREFERENCES` carries `userSelfPreferencesId` → the DTO declares\n // `userSelfPreferences` while this site produced `userSelfPreference`. Measured over the core\n // registry (2026-09-10): of its 111 relationships, 37 carry an enabled `contextPolicy`, and\n // the two derivations disagreed on 11 of those 37. EVERY one of those 11 fields was populated\n // by this service and then silently Zod-stripped before it left the process — no error, no\n // log, on any surface. That is what made every date in every generated application render at\n // the i18n floor: the member's regional preferences never reached the client (issue #563).\n //\n // Deriving from one authority makes the class unrepresentable rather than merely fixed.\n // Pinned by `resource-population.context-field-name.test.ts` (this site emits the authority's\n // name, asserted as a LITERAL — recomputing the expectation with the same function the code\n // uses would pass whichever derivation either side chose) and by `saas-models`'s\n // `context-projection-field-name-agreement.test.ts` (the generated context DTO declares that\n // name and strips the retired one).\n if (resourceContext.children) {\n for (const [key, items] of Object.entries(resourceContext.children)) {\n this.logDebug(`[populateForContext] Processing child key=${key}, itemsCount=${items?.length || 0}`);\n\n const childRelationship = this.findContextChildRelationship(resourceType, key);\n const contextFieldKey = this.resolveContextChildFieldName(childRelationship, key);\n\n if (Array.isArray(items) && items.length > 0) {\n // Check cardinality from the first item to determine if 1:1 or 1:many\n const cardinality = items[0]?.cardinality;\n const isOneToOne = cardinality === ResourceRelationshipCardinality.ONE ||\n cardinality === ResourceRelationshipCardinality.ZERO_OR_ONE;\n\n const fieldKey = contextFieldKey;\n\n this.logDebug(`[populateForContext] Child ${key}: cardinality=${cardinality}, isOneToOne=${isOneToOne}, fieldKey=${fieldKey}`);\n\n if (isOneToOne) {\n // 1:1 relationship: return single object under the DTO's declared field name\n (result as Record<string, any>)[fieldKey] = items[0]?.data;\n } else {\n // 1:many relationship: return array under the DTO's declared field name\n (result as Record<string, any>)[fieldKey] = items.map(item => item?.data).filter(Boolean);\n }\n } else if (Array.isArray(items)) {\n // Empty result. Cardinality CANNOT be read from items (there are none),\n // so resolve it from the relationship config. A 1:1 child with no row\n // must be OMITTED: the contextDto types a 1:1 embed as an OPTIONAL single\n // `z.record` (see `addRelationshipPlaceholders`), so writing `[]` fails\n // output validation with \"expected record, received array\" — the exact\n // crash for a freshly-created user whose 1:1 `userSelfPreferences` row does\n // not exist yet. A 1:many child stays an empty array (its contextDto\n // placeholder is `z.array(...).optional()`, and consumers expect an array,\n // not an absent field). If the relationship can't be resolved, fall back to\n // the historical `[]` behaviour.\n const emptyIsOneToOne = childRelationship\n ? isOneToOneCardinality(childRelationship.cardinality2)\n : false;\n this.logDebug(`[populateForContext] Child ${key}: empty items array (isOneToOne=${emptyIsOneToOne})`);\n if (!emptyIsOneToOne) {\n (result as Record<string, any>)[contextFieldKey] = [];\n }\n // 1:1 with no row → leave the field absent (optional single record in contextDto)\n }\n }\n }\n\n // Populate file fields after context population\n const populateFiles = options?.populateFiles !== false; // default: true\n if (populateFiles) {\n const populatedWithFiles = await this.filePopulationService.populateFileFields(\n result,\n resourceType,\n executionContext,\n { populateFiles: true },\n repositoryOptions\n );\n result = populatedWithFiles as T & Record<string, any>;\n }\n\n return result;\n } catch (error) {\n this.logger.warn(`Failed to populate context for ${resourceType}`, {\n ...projectCaughtErrorLogFields(error),\n });\n return data;\n }\n }\n\n /**\n * Batch populate for lists (SUMMARY mode).\n * Optimized: Collects unique FK values, batch fetches parents, then distributes to items.\n */\n async populateListForSummary<T extends Record<string, any>>(\n resourceType: ResourceType,\n items: T[],\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<T[]> {\n const needs = this.analyzeContextNeeds(resourceType);\n\n if (needs.responsePopulationFields.size === 0 || items.length === 0) {\n return items;\n }\n\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n if (!resourceConfig) {\n return items;\n }\n\n // Step 1: Collect unique FK values per field\n const fkValuesByField = new Map<string, Set<string>>();\n for (const field of needs.responsePopulationFields) {\n fkValuesByField.set(field, new Set());\n }\n\n for (const item of items) {\n for (const field of needs.responsePopulationFields) {\n const value = item[field];\n if (value) {\n const id = typeof value === 'string' ? value : (value._id?.toString() || value.id?.toString() || String(value));\n if (id) {\n fkValuesByField.get(field)!.add(id);\n }\n }\n }\n }\n\n // Step 2: Batch fetch all parents, grouped by field\n const fetchedParentsByField = new Map<string, Map<string, any>>();\n\n for (const [field, fkValues] of fkValuesByField.entries()) {\n if (fkValues.size === 0) continue;\n\n // Find the relationship for this FK (includes selfRelationships for tree-structured FKs)\n const relationship = this.findRelationshipForField(\n getParentDirectionRelationships(resourceConfig.resourceRelationships),\n field\n );\n\n if (!relationship) {\n this.logDebug(`No relationship found for FK field: ${field}`);\n continue;\n }\n\n // Determine parent resource type\n const parentType = relationship.resourceType1 === resourceType\n ? relationship.resourceType2\n : relationship.resourceType1;\n\n // ETL D10 guard, site 2 of 2: the list path fans out one PARALLEL remote read per unique\n // parent id, unbounded — the exact N+1-against-a-remote-API shape the decision forbids.\n if (this.skipHttpApiParentPopulation(parentType, resourceType as string, field)) {\n continue;\n }\n\n try {\n // Batch fetch all parents using parallel individual reads via service layer\n // Using service layer ensures parents get full service processing (virtual fields, summary extraction, etc.)\n // in SUMMARY mode, matching the behavior described in the class documentation\n const parentIds = Array.from(fkValues);\n const parentsMap = new Map<string, any>();\n\n // Use Promise.all for parallel individual reads\n await Promise.all(\n parentIds.map(async (id) => {\n try {\n // Build relationship context (we don't have specific item ID here, using field info)\n const relationshipContext: import('@wildo-ai/saas-models').ExecutionContext_RelationshipContext = {\n resourceType: resourceType as string, // Current resource type\n relationshipField: field, // FK field on current resource\n resourceId: id, // Parent ID being fetched\n };\n\n // Create sub-call context with correct operation for parent READ\n const subContext = await this.executionContextCreator.createForSubCall(\n executionContext,\n parentType,\n CoreResourceOperation.READ,\n { dataMode: DataMode.SUMMARY },\n id,\n relationshipContext\n );\n\n const parent = await this.getServicesRegistry().read(\n parentType,\n subContext,\n id,\n { dataMode: DataMode.SUMMARY }\n );\n if (parent) {\n const parentRecord = parent as Record<string, any>;\n const parentId = parentRecord._id?.toString() || parentRecord.id?.toString() || id;\n parentsMap.set(parentId, parent);\n }\n } catch (error) {\n // Skip failed reads - don't fail entire operation\n this.logDebug(`Failed to read parent ${parentType}:${id}`, {\n error: describeCaughtError(error)\n });\n }\n })\n );\n\n fetchedParentsByField.set(field, parentsMap);\n } catch (error) {\n this.logger.warn(`Failed to batch fetch parents for field ${field}`, {\n parentType,\n ...projectCaughtErrorLogFields(error),\n });\n // Continue with other fields\n }\n }\n\n // Step 3: Distribute fetched parents to items\n const results: (T & Record<string, any>)[] = [];\n for (const item of items) {\n const result = { ...item } as T & Record<string, any>;\n\n for (const field of needs.responsePopulationFields) {\n const fkValue = item[field];\n if (!fkValue) continue;\n\n const fkId = typeof fkValue === 'string' ? fkValue : (fkValue._id?.toString() || fkValue.id?.toString() || String(fkValue));\n const parentsMap = fetchedParentsByField.get(field);\n\n if (parentsMap && fkId) {\n const parent = parentsMap.get(fkId);\n if (parent) {\n const populatedFieldName = ResourcesConfigNamingUtils.extractBaseName(field);\n (result as Record<string, any>)[populatedFieldName] = parent;\n }\n }\n }\n\n results.push(result);\n }\n\n // Populate file fields after FK population\n const populateFiles = options?.populateFiles !== false; // default: true\n if (populateFiles) {\n const populatedWithFiles = await this.filePopulationService.populateFileFields(\n results,\n resourceType,\n executionContext,\n { populateFiles: true },\n repositoryOptions\n );\n return populatedWithFiles as T[];\n }\n\n return results;\n }\n\n /**\n * Batch populate for lists (CONTEXT mode).\n */\n async populateListForContext<T extends Record<string, any>>(\n resourceType: ResourceType,\n dataList: T[],\n executionContext: ExecutionContext<any>,\n options?: { populateFiles?: boolean },\n repositoryOptions?: RepositoryOptions\n ): Promise<(T & Record<string, any>)[]> {\n if (dataList.length === 0) {\n return dataList;\n }\n\n // TODO: Implement batch optimization\n\n // For now, populate each item individually (less optimal)\n const results: (T & Record<string, any>)[] = [];\n for (const item of dataList) {\n const populated = await this.populateForContext(resourceType, item, executionContext, options, repositoryOptions);\n results.push(populated);\n }\n\n // File population is already handled in populateForContext\n return results;\n }\n\n // =============================================================================\n // PRIVATE HELPERS\n // =============================================================================\n\n /**\n * Find the relationship that corresponds to a given FK field.\n * Uses the allResourceFieldIdentifiers map for lookup instead of string manipulation.\n */\n private findRelationshipForField(\n relationships: ResourceRelationship[],\n fkField: string\n ): ResourceRelationship | undefined {\n const fieldIdentifiers = this.resourcesRegistry.getAllResourceFieldIdentifiers();\n\n return relationships.find(rel => {\n // Priority 1: Explicit foreignKeyField matches\n if (rel.foreignKeyField === fkField) {\n return true;\n }\n // Priority 2: Check if FK field matches the standard field identifier for the related resource type\n // For relationship A → B with B as resourceType2, the FK on A is B's field identifier\n const standardFieldIdentifier = fieldIdentifiers[rel.resourceType2];\n return standardFieldIdentifier === fkField;\n });\n }\n\n /**\n * The field name a CONTEXT projection publishes a child relationship under.\n *\n * Delegates to `Resources_SharedUtils.resolveRelationshipObjectIdentity` — the authority the DTO\n * builder uses when it declares the placeholder — so producer and contract cannot disagree. See\n * the long note at the child-merge site in {@link populateForContext} for what the two\n * independent derivations cost.\n *\n * The fallback is the historical local derivation, and it is reached only when the relationship\n * cannot be resolved from the registry at all (the same condition under which the empty-array\n * branch already falls back). Keeping it means an unresolvable relationship degrades exactly as\n * it did before rather than throwing inside a response path.\n */\n private resolveContextChildFieldName(\n relationship: ResourceRelationship | undefined,\n childResourceType: string,\n ): string {\n if (relationship) {\n return Resources_SharedUtils.resolveRelationshipObjectIdentity(\n relationship,\n relationship.resourceType2,\n relationship.cardinality2,\n this.resourcesRegistry.getAllResourceFieldIdentifiers(),\n ).objectFieldName;\n }\n return childResourceType;\n }\n\n /**\n * Resolve the child-direction relationship a CONTEXT children key corresponds to.\n * The key is the child resource type (`resourceType2`) under which\n * `ResourceContextBackendService` groups fetched items. Used by\n * `populateForContext` both to name the published field (see\n * {@link resolveContextChildFieldName}) and to recover a relationship's cardinality when the\n * fetched item set is EMPTY — cardinality can't be read from a non-existent item, so an\n * absent 1:1 child would otherwise be mis-projected as `[]` and fail the\n * optional-single-`z.record` contextDto placeholder. Uses the same\n * `getChildDirectionRelationships` enumeration the DTO builder uses, keyed by\n * `resourceType2` (how the context service groups children).\n */\n private findContextChildRelationship(\n resourceType: ResourceType,\n childResourceType: string,\n ): ResourceRelationship | undefined {\n const config = this.resourcesRegistry.tryGetResourceConfiguration(resourceType);\n if (!config?.resourceRelationships) {\n return undefined;\n }\n return getChildDirectionRelationships(config.resourceRelationships)\n .find(rel => rel.resourceType2 === childResourceType);\n }\n}\n"]}
|
|
@@ -10,6 +10,20 @@ export declare class ResourcesRegistryBackendService {
|
|
|
10
10
|
protected logDebug: (message: string, context?: Record<string, unknown>) => void;
|
|
11
11
|
protected registry: ResourcesRegistry | null;
|
|
12
12
|
protected isInitialized: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The resource types this application DELIBERATELY excluded from the registry at
|
|
15
|
+
* initialization (today: billing-conditional resources when billing is disabled).
|
|
16
|
+
*
|
|
17
|
+
* Retained because "absent from the registry" has two completely different causes and a
|
|
18
|
+
* boot-time consumer must be able to tell them apart. A resource nobody ever declared is a
|
|
19
|
+
* typo or a drifted reference — permanently broken, worth refusing startup over. A resource
|
|
20
|
+
* that WAS declared and was then feature-excluded is a legitimate runtime configuration, and
|
|
21
|
+
* refusing over it would turn "billing is disabled" into "the application will not start".
|
|
22
|
+
*
|
|
23
|
+
* Populated even when empty so a caller never has to distinguish "no exclusions" from "not
|
|
24
|
+
* yet initialized" — {@link getExcludedResourceTypes} answers that with `ensureInitialized`.
|
|
25
|
+
*/
|
|
26
|
+
protected excludedResourceTypes: ReadonlySet<string>;
|
|
13
27
|
constructor(logger: LoggerService, configService: AppConfigurationService, errorBuilder: ErrorBuilderBackendService);
|
|
14
28
|
/**
|
|
15
29
|
* W5.1: Returns organizationTypes config when app config is initialized.
|
|
@@ -68,6 +82,15 @@ export declare class ResourcesRegistryBackendService {
|
|
|
68
82
|
*/
|
|
69
83
|
validatePersistenceAdapterConfigurationForPlatform(): void;
|
|
70
84
|
getResourceTypes(): ResourceType[];
|
|
85
|
+
/**
|
|
86
|
+
* The resource types this application deliberately excluded at initialization — the
|
|
87
|
+
* complement of {@link getResourceTypes} that a boot-time consumer needs in order to tell a
|
|
88
|
+
* legitimate feature-gated absence from a broken reference.
|
|
89
|
+
*
|
|
90
|
+
* Fails closed when the registry is not initialized: an empty set would read as "nothing was
|
|
91
|
+
* excluded" and let a caller draw a conclusion from a registry that has not been built.
|
|
92
|
+
*/
|
|
93
|
+
getExcludedResourceTypes(): ReadonlySet<string>;
|
|
71
94
|
/**
|
|
72
95
|
* Re-run persistence-dependent registry invariants after application config
|
|
73
96
|
* is initialized.
|
|
@@ -174,11 +197,36 @@ export declare class ResourcesRegistryBackendService {
|
|
|
174
197
|
* Resolution is INTERNAL-preferred, then URL-bearing:
|
|
175
198
|
* 1. If the operation declares an `INTERNAL_CALL` default, return it. This
|
|
176
199
|
* honours author intent for resources whose default for this operation
|
|
177
|
-
* is internal-only (`userIdentityLinks.list`
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
* one trusted callers must use; the URL variant is the
|
|
181
|
-
* surface reached via its keyed/route path.
|
|
200
|
+
* is internal-only (`userIdentityLinks.list`, `users.list`,
|
|
201
|
+
* `inboundContacts.update`) AND for the one resource that declares BOTH
|
|
202
|
+
* an internal and a URL default for the same operation — the internal
|
|
203
|
+
* variant is the one trusted callers must use; the URL variant is the
|
|
204
|
+
* public/admin surface reached via its keyed/route path.
|
|
205
|
+
*
|
|
206
|
+
* **That "BOTH" population is exactly ONE operation: `organizations`
|
|
207
|
+
* CREATE.** Measured 2026-09-08 over all 106 non-test
|
|
208
|
+
* `*resources-config*.ts` files (653 variant blocks), replicating
|
|
209
|
+
* `determineOperationVariantDefault` per variant-type group.
|
|
210
|
+
*
|
|
211
|
+
* This paragraph previously cited `users.list` and `inboundContacts.update`
|
|
212
|
+
* as further both-default examples and BOTH were wrong: the former's
|
|
213
|
+
* `API_CALL` is `isDefault: false, variantKey: "admin"`, and the latter
|
|
214
|
+
* declares no `API_CALL` at all — so neither has a URL-bearing DEFAULT and
|
|
215
|
+
* neither is a case where this method chooses between transports. The
|
|
216
|
+
* correction is recorded rather than silently applied because the false
|
|
217
|
+
* plural made the preference look like a broad, well-trodden policy when it
|
|
218
|
+
* decides exactly one operation — which is what made the agent function-tool
|
|
219
|
+
* plane's blast radius read as unbounded when it was a single, and severe,
|
|
220
|
+
* case (see `9594526e`).
|
|
221
|
+
*
|
|
222
|
+
* ⚠️ **A caller that FACES AN EXTERNAL PRINCIPAL must not use this method.**
|
|
223
|
+
* It answers "which variant does a TRUSTED internal caller want", and for
|
|
224
|
+
* `organizations` CREATE that is the registration-owned path, which skips the
|
|
225
|
+
* creation-policy guard and writes no founding owner. A surface that
|
|
226
|
+
* advertises a public operation to an outside caller owes
|
|
227
|
+
* {@link getOperationPathDefault} instead, so the operation it authorized and
|
|
228
|
+
* advertised is the operation it executes — the invariant the MCP tool plane
|
|
229
|
+
* and the agent function-tool factories both keep.
|
|
182
230
|
* 2. Otherwise return the URL-bearing default (`API_CALL` /
|
|
183
231
|
* `API_CALL_WITH_CALLBACK`) for resources exposed only over HTTP.
|
|
184
232
|
* 3. Otherwise throw `RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND`.
|
|
@@ -348,6 +396,36 @@ export declare class ResourcesRegistryBackendService {
|
|
|
348
396
|
protected normalizeResourceConfigurationRelationships(allResourceConfigurations: {
|
|
349
397
|
[key: string]: AnyResourceConfiguration;
|
|
350
398
|
}, allResourceFieldIdentifiers: Record<string, string>): void;
|
|
399
|
+
/**
|
|
400
|
+
* Refuse to start on an incoherent notification-badge declaration.
|
|
401
|
+
*
|
|
402
|
+
* ## What this catches, and why the runtime could not
|
|
403
|
+
*
|
|
404
|
+
* A badge write used to be addressed by a bare `identifier`, resolved against nothing. Two
|
|
405
|
+
* declarations were therefore unfalsifiable:
|
|
406
|
+
*
|
|
407
|
+
* - an operation naming a badge NO definition declares — the write materialized a counter row
|
|
408
|
+
* that no definition described and no screen could render, silently, forever;
|
|
409
|
+
* - two definitions sharing one `(scope, identifier)` — every lookup answers the first, so the
|
|
410
|
+
* second is unreachable while sharing the first's count.
|
|
411
|
+
*
|
|
412
|
+
* Neither produces an error at runtime. The write succeeds; the render finds nothing; nobody is
|
|
413
|
+
* told. So the check belongs where the DECLARATION is, not where the write is, and it fails
|
|
414
|
+
* CLOSED for the same reason the organization-unit narrowing containment above does: a
|
|
415
|
+
* misconfiguration that only manifests as a missing number is one nobody chases.
|
|
416
|
+
*
|
|
417
|
+
* **What a misconfigured application experiences:** the backend does not come up. Startup throws
|
|
418
|
+
* a `CONFIGURATION` error naming every violation — the resource and operation that declared the
|
|
419
|
+
* unresolvable ref, or the duplicated key — beside the keys that ARE registered, so the author
|
|
420
|
+
* reads the fix off the message rather than deriving it. A typo in a `badgeRef` is a refusal at
|
|
421
|
+
* the moment it is authored instead of a badge that never appears in production.
|
|
422
|
+
*
|
|
423
|
+
* The enumeration is TOTAL over both populations rather than sampled: every registered
|
|
424
|
+
* definition, and every `notificationBadgeOperations` entry on every operation of every resource
|
|
425
|
+
* configuration — which is the merged core + application map, so an engine-declared badge is
|
|
426
|
+
* checked on the same terms as an application-declared one.
|
|
427
|
+
*/
|
|
428
|
+
protected validateNotificationBadgeDeclarations(notificationBadgeDefinitions: NotificationBadgeDefinition[], allResourceConfigurations: Record<string, AnyResourceConfiguration>): void;
|
|
351
429
|
/**
|
|
352
430
|
* Validate that all relationships can resolve their FK fields at startup.
|
|
353
431
|
* This catches configuration errors early (e.g., missing resourceFieldIdentifier).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources-registry.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"resources-registry.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/resources/services/resources-registry.backend.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
11
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
12
|
};
|
|
13
13
|
import { injectable, inject } from 'inversify';
|
|
14
|
-
import { coreNotificationBadgeDefinitions, coreShared_ResourcesConfigurations_FactoryMap, coreResourceShared_FieldIdentifier, coreResourceShared_FieldIdentifierPriority, coreSharedResourceRelationship, ResourcesConfigOperationsUrlsBuilderUtils, ResourcesConfigOperationsDtosBuilderUtils, ResourcesConfig_OperationPathUtils, ResourceOperationVariantType, isDefaultUrlBearingOperation, isServiceResolvableDefaultOperation, SERVICE_NATIVE_OPERATION_VARIANT_TYPES, URL_BEARING_OPERATION_VARIANT_TYPES, findSharedPersistenceCollectionRetentionIncoherences, findSharedPersistenceCollectionAdapterIncoherences, ErrorType, ErrorCustomMessageReference, ENGINE_ORGANIZATION_UNIT_NARROWING, collectOrganizationUnitNarrowingViolations, mergeOrganizationUnitNarrowingDeclarations, DEFAULT_PERSISTENCE_ADAPTER, CoreResourceOperation, ResourceParentResourceRequirement, reconcileGeneratedRelationshipBulkOperations, Resources_SharedUtils, isPersistenceAdapter, selectByPersistenceAdapter, dataModeToVariantKey, findDuplicateRelationshipRegistrations, } from '@wildo-ai/saas-models';
|
|
14
|
+
import { coreNotificationBadgeDefinitions, collectNotificationBadgeDeclarationViolations, notificationBadgeIdentityKey, coreShared_ResourcesConfigurations_FactoryMap, coreResourceShared_FieldIdentifier, coreResourceShared_FieldIdentifierPriority, coreSharedResourceRelationship, ResourcesConfigOperationsUrlsBuilderUtils, ResourcesConfigOperationsDtosBuilderUtils, ResourcesConfig_OperationPathUtils, ResourceOperationVariantType, isDefaultUrlBearingOperation, isServiceResolvableDefaultOperation, SERVICE_NATIVE_OPERATION_VARIANT_TYPES, URL_BEARING_OPERATION_VARIANT_TYPES, findSharedPersistenceCollectionRetentionIncoherences, findSharedPersistenceCollectionAdapterIncoherences, ErrorType, ErrorCustomMessageReference, ENGINE_ORGANIZATION_UNIT_NARROWING, collectOrganizationUnitNarrowingViolations, mergeOrganizationUnitNarrowingDeclarations, DEFAULT_PERSISTENCE_ADAPTER, CoreResourceOperation, ResourceParentResourceRequirement, reconcileGeneratedRelationshipBulkOperations, Resources_SharedUtils, isPersistenceAdapter, selectByPersistenceAdapter, dataModeToVariantKey, findDuplicateRelationshipRegistrations, } from '@wildo-ai/saas-models';
|
|
15
15
|
import { backendResourcesConfigurationsFactoryMap } from '../../resources/models/resources-operations.backend.definitions.js';
|
|
16
16
|
import { backendResourcesRelationships } from '../../resources/models/resources-relationships.backend.definitions.js';
|
|
17
17
|
import { BackendResourceFieldIdentifier } from '../../resources/models/resources-types.backend.schemas.js';
|
|
@@ -29,6 +29,20 @@ let ResourcesRegistryBackendService = class ResourcesRegistryBackendService {
|
|
|
29
29
|
logDebug;
|
|
30
30
|
registry = null;
|
|
31
31
|
isInitialized = false;
|
|
32
|
+
/**
|
|
33
|
+
* The resource types this application DELIBERATELY excluded from the registry at
|
|
34
|
+
* initialization (today: billing-conditional resources when billing is disabled).
|
|
35
|
+
*
|
|
36
|
+
* Retained because "absent from the registry" has two completely different causes and a
|
|
37
|
+
* boot-time consumer must be able to tell them apart. A resource nobody ever declared is a
|
|
38
|
+
* typo or a drifted reference — permanently broken, worth refusing startup over. A resource
|
|
39
|
+
* that WAS declared and was then feature-excluded is a legitimate runtime configuration, and
|
|
40
|
+
* refusing over it would turn "billing is disabled" into "the application will not start".
|
|
41
|
+
*
|
|
42
|
+
* Populated even when empty so a caller never has to distinguish "no exclusions" from "not
|
|
43
|
+
* yet initialized" — {@link getExcludedResourceTypes} answers that with `ensureInitialized`.
|
|
44
|
+
*/
|
|
45
|
+
excludedResourceTypes = new Set();
|
|
32
46
|
constructor(logger, configService, errorBuilder) {
|
|
33
47
|
this.logger = logger;
|
|
34
48
|
this.configService = configService;
|
|
@@ -223,6 +237,11 @@ let ResourcesRegistryBackendService = class ResourcesRegistryBackendService {
|
|
|
223
237
|
// Generic mechanism: remove excluded resource types from all 3 layers
|
|
224
238
|
// (configurations, relationships, field identifiers).
|
|
225
239
|
// Used for billing-conditional resources when billing is disabled.
|
|
240
|
+
//
|
|
241
|
+
// Recorded on the service BEFORE the filtering below, and unconditionally, so a later
|
|
242
|
+
// boot-time consumer can distinguish a deliberately-excluded resource from one that was
|
|
243
|
+
// never declared at all. See the `excludedResourceTypes` field.
|
|
244
|
+
this.excludedResourceTypes = new Set(excludedResourceTypes ?? []);
|
|
226
245
|
if (excludedResourceTypes && excludedResourceTypes.size > 0) {
|
|
227
246
|
this.logDebug(`Excluding ${excludedResourceTypes.size} resource types from registry`, {
|
|
228
247
|
excludedTypes: [...excludedResourceTypes],
|
|
@@ -288,6 +307,9 @@ let ResourcesRegistryBackendService = class ResourcesRegistryBackendService {
|
|
|
288
307
|
// repositories (which apply) — so they cannot disagree about which resources are narrowed.
|
|
289
308
|
organizationUnitNarrowing,
|
|
290
309
|
};
|
|
310
|
+
// Validate that every badge declaration is coherent, and refuse to start otherwise.
|
|
311
|
+
this.logDebug('Validating notification badge declarations');
|
|
312
|
+
this.validateNotificationBadgeDeclarations(this.registry.notificationBadgeDefinitions, allResourceConfigurations);
|
|
291
313
|
// Validate all relationships can resolve FK fields
|
|
292
314
|
this.logDebug('Validating relationship FK field resolution');
|
|
293
315
|
this.validateRelationshipForeignKeyFields(allResourceRelationships, allResourceFieldIdentifiers);
|
|
@@ -347,6 +369,18 @@ let ResourcesRegistryBackendService = class ResourcesRegistryBackendService {
|
|
|
347
369
|
this.ensureInitialized();
|
|
348
370
|
return Object.keys(this.registry.resourceConfigurations);
|
|
349
371
|
}
|
|
372
|
+
/**
|
|
373
|
+
* The resource types this application deliberately excluded at initialization — the
|
|
374
|
+
* complement of {@link getResourceTypes} that a boot-time consumer needs in order to tell a
|
|
375
|
+
* legitimate feature-gated absence from a broken reference.
|
|
376
|
+
*
|
|
377
|
+
* Fails closed when the registry is not initialized: an empty set would read as "nothing was
|
|
378
|
+
* excluded" and let a caller draw a conclusion from a registry that has not been built.
|
|
379
|
+
*/
|
|
380
|
+
getExcludedResourceTypes() {
|
|
381
|
+
this.ensureInitialized();
|
|
382
|
+
return this.excludedResourceTypes;
|
|
383
|
+
}
|
|
350
384
|
/**
|
|
351
385
|
* Re-run persistence-dependent registry invariants after application config
|
|
352
386
|
* is initialized.
|
|
@@ -534,11 +568,36 @@ let ResourcesRegistryBackendService = class ResourcesRegistryBackendService {
|
|
|
534
568
|
* Resolution is INTERNAL-preferred, then URL-bearing:
|
|
535
569
|
* 1. If the operation declares an `INTERNAL_CALL` default, return it. This
|
|
536
570
|
* honours author intent for resources whose default for this operation
|
|
537
|
-
* is internal-only (`userIdentityLinks.list`
|
|
538
|
-
*
|
|
539
|
-
*
|
|
540
|
-
* one trusted callers must use; the URL variant is the
|
|
541
|
-
* surface reached via its keyed/route path.
|
|
571
|
+
* is internal-only (`userIdentityLinks.list`, `users.list`,
|
|
572
|
+
* `inboundContacts.update`) AND for the one resource that declares BOTH
|
|
573
|
+
* an internal and a URL default for the same operation — the internal
|
|
574
|
+
* variant is the one trusted callers must use; the URL variant is the
|
|
575
|
+
* public/admin surface reached via its keyed/route path.
|
|
576
|
+
*
|
|
577
|
+
* **That "BOTH" population is exactly ONE operation: `organizations`
|
|
578
|
+
* CREATE.** Measured 2026-09-08 over all 106 non-test
|
|
579
|
+
* `*resources-config*.ts` files (653 variant blocks), replicating
|
|
580
|
+
* `determineOperationVariantDefault` per variant-type group.
|
|
581
|
+
*
|
|
582
|
+
* This paragraph previously cited `users.list` and `inboundContacts.update`
|
|
583
|
+
* as further both-default examples and BOTH were wrong: the former's
|
|
584
|
+
* `API_CALL` is `isDefault: false, variantKey: "admin"`, and the latter
|
|
585
|
+
* declares no `API_CALL` at all — so neither has a URL-bearing DEFAULT and
|
|
586
|
+
* neither is a case where this method chooses between transports. The
|
|
587
|
+
* correction is recorded rather than silently applied because the false
|
|
588
|
+
* plural made the preference look like a broad, well-trodden policy when it
|
|
589
|
+
* decides exactly one operation — which is what made the agent function-tool
|
|
590
|
+
* plane's blast radius read as unbounded when it was a single, and severe,
|
|
591
|
+
* case (see `9594526e`).
|
|
592
|
+
*
|
|
593
|
+
* ⚠️ **A caller that FACES AN EXTERNAL PRINCIPAL must not use this method.**
|
|
594
|
+
* It answers "which variant does a TRUSTED internal caller want", and for
|
|
595
|
+
* `organizations` CREATE that is the registration-owned path, which skips the
|
|
596
|
+
* creation-policy guard and writes no founding owner. A surface that
|
|
597
|
+
* advertises a public operation to an outside caller owes
|
|
598
|
+
* {@link getOperationPathDefault} instead, so the operation it authorized and
|
|
599
|
+
* advertised is the operation it executes — the invariant the MCP tool plane
|
|
600
|
+
* and the agent function-tool factories both keep.
|
|
542
601
|
* 2. Otherwise return the URL-bearing default (`API_CALL` /
|
|
543
602
|
* `API_CALL_WITH_CALLBACK`) for resources exposed only over HTTP.
|
|
544
603
|
* 3. Otherwise throw `RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND`.
|
|
@@ -1032,6 +1091,62 @@ let ResourcesRegistryBackendService = class ResourcesRegistryBackendService {
|
|
|
1032
1091
|
};
|
|
1033
1092
|
}
|
|
1034
1093
|
}
|
|
1094
|
+
/**
|
|
1095
|
+
* Refuse to start on an incoherent notification-badge declaration.
|
|
1096
|
+
*
|
|
1097
|
+
* ## What this catches, and why the runtime could not
|
|
1098
|
+
*
|
|
1099
|
+
* A badge write used to be addressed by a bare `identifier`, resolved against nothing. Two
|
|
1100
|
+
* declarations were therefore unfalsifiable:
|
|
1101
|
+
*
|
|
1102
|
+
* - an operation naming a badge NO definition declares — the write materialized a counter row
|
|
1103
|
+
* that no definition described and no screen could render, silently, forever;
|
|
1104
|
+
* - two definitions sharing one `(scope, identifier)` — every lookup answers the first, so the
|
|
1105
|
+
* second is unreachable while sharing the first's count.
|
|
1106
|
+
*
|
|
1107
|
+
* Neither produces an error at runtime. The write succeeds; the render finds nothing; nobody is
|
|
1108
|
+
* told. So the check belongs where the DECLARATION is, not where the write is, and it fails
|
|
1109
|
+
* CLOSED for the same reason the organization-unit narrowing containment above does: a
|
|
1110
|
+
* misconfiguration that only manifests as a missing number is one nobody chases.
|
|
1111
|
+
*
|
|
1112
|
+
* **What a misconfigured application experiences:** the backend does not come up. Startup throws
|
|
1113
|
+
* a `CONFIGURATION` error naming every violation — the resource and operation that declared the
|
|
1114
|
+
* unresolvable ref, or the duplicated key — beside the keys that ARE registered, so the author
|
|
1115
|
+
* reads the fix off the message rather than deriving it. A typo in a `badgeRef` is a refusal at
|
|
1116
|
+
* the moment it is authored instead of a badge that never appears in production.
|
|
1117
|
+
*
|
|
1118
|
+
* The enumeration is TOTAL over both populations rather than sampled: every registered
|
|
1119
|
+
* definition, and every `notificationBadgeOperations` entry on every operation of every resource
|
|
1120
|
+
* configuration — which is the merged core + application map, so an engine-declared badge is
|
|
1121
|
+
* checked on the same terms as an application-declared one.
|
|
1122
|
+
*/
|
|
1123
|
+
validateNotificationBadgeDeclarations(notificationBadgeDefinitions, allResourceConfigurations) {
|
|
1124
|
+
const operationSites = [];
|
|
1125
|
+
for (const [resourceType, resourceConfiguration] of Object.entries(allResourceConfigurations)) {
|
|
1126
|
+
const operations = resourceConfiguration?.operations ?? {};
|
|
1127
|
+
for (const [operationIdentifier, operation] of Object.entries(operations)) {
|
|
1128
|
+
const badgeOperations = operation?.notificationBadgeOperations ?? [];
|
|
1129
|
+
for (const badgeOperation of badgeOperations) {
|
|
1130
|
+
operationSites.push({ resourceType, operationIdentifier, badgeRef: badgeOperation.badgeRef });
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
const violations = collectNotificationBadgeDeclarationViolations(notificationBadgeDefinitions, operationSites);
|
|
1135
|
+
if (violations.length > 0) {
|
|
1136
|
+
this.logger.error('Notification badge declaration validation failed', { violations });
|
|
1137
|
+
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
|
|
1138
|
+
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
1139
|
+
context: {
|
|
1140
|
+
message: 'Notification badge declarations are incoherent',
|
|
1141
|
+
reason: 'notification_badge_declaration_violation',
|
|
1142
|
+
violations,
|
|
1143
|
+
registeredBadgeKeys: notificationBadgeDefinitions.map(notificationBadgeIdentityKey),
|
|
1144
|
+
},
|
|
1145
|
+
});
|
|
1146
|
+
}
|
|
1147
|
+
this.logDebug(`Validated ${notificationBadgeDefinitions.length} notification badge definition(s) `
|
|
1148
|
+
+ `and ${operationSites.length} operation badge reference(s)`);
|
|
1149
|
+
}
|
|
1035
1150
|
/**
|
|
1036
1151
|
* Validate that all relationships can resolve their FK fields at startup.
|
|
1037
1152
|
* This catches configuration errors early (e.g., missing resourceFieldIdentifier).
|