@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":"http-api-resource-repository.backend.service.js","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The HTTP-API resource repository — the third `BackendResourceRepository` implementation\n * (ETL plan Step 3): rows live in a system reached over an authenticated HTTP API and are\n * queried ON DEMAND per the resource's committed `httpApiBinding`.\n *\n * READ-ONLY in slice 1 (decision D3): `read`/`list`/`count`/`search` and the internal-scan\n * variants execute; EVERY other contract member throws `CONFIGURATION` naming the reason\n * (decision D2 — the full contract is implemented, nothing is omitted, nothing returns a\n * fabricated empty result).\n *\n * Query admission is the frozen T-set (paper B) via `translateHttpApiReadInputs` — this class is\n * the boundary that enforces it, because `_doList`/`_doCount` have no repository-side\n * sanitization anywhere else. Row identity is the synthesized id (paper A) via the codec\n * authority; an undecodable id is a LOUD VALIDATION refusal, never a silent not-found (the\n * Mongo CastError→404 behavior is deliberately NOT mimicked). A remote 404 for a well-formed id\n * IS `null` — that is a genuine \"no row\".\n */\n\nimport {\n CoreResourceOperation,\n ErrorType,\n HttpApiResourceIdError,\n PRIMARY_SCOPE_TO_FIELD_IDENTIFIER,\n ResourceOperationVariantType,\n ResourcesConfig_OperationPathUtils,\n ResourceOperationsUtils,\n resolveHttpApiKeyComponents,\n type ResourceType,\n type Resources_PaginatedResult,\n type Resources_PaginationRequest,\n} from '@wildo-ai/saas-models';\nimport {\n HttpApiErasureStance,\n HttpApiTenancyStance,\n HttpApiTransportDialect,\n type HttpApiErasureOperationSpec,\n type HttpApiResourceBinding,\n} from '@wildo-ai/saas-models/external-data';\n\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport type { RepositoryOptions } from '~wildo-backend-lib/base-classes/models/repositories.backend.schemas';\n\nimport {\n HttpApiTransportError,\n HttpApiTransportFailureKind,\n type HttpApiFetchLike,\n type HttpApiTransportRequest,\n} from './http-api-transport.backend';\nimport { HttpApiReadClient, defaultHttpApiFetch } from './http-api-read-client.backend';\nimport {\n HttpApiTranslationRefusal,\n translateHttpApiReadInputs,\n} from './http-api-filter-translation.backend';\nimport type { HttpApiTranslatedQuery } from './http-api-query.backend';\nimport {\n compileODataCollectionRead,\n compileODataCountRead,\n compileODataKeyAddressedRead,\n type ODataCompiledRequest,\n} from './odata-query-compiler.backend';\nimport {\n RestJsonTranslationRefusal,\n compileRestJsonCollectionRead,\n compileRestJsonDeclaredErasure,\n compileRestJsonKeyAddressedRead,\n type RestJsonCompiledRequest,\n} from './rest-json-query-compiler.backend';\nimport {\n HttpApiRemoteContractError,\n projectHttpApiRemoteRow,\n resolveHttpApiResultPath,\n} from './http-api-row-projection.backend';\nimport {\n compileOdooCanonicalDelete,\n compileOdooCollectionRead,\n compileOdooCountRead,\n compileOdooKeyAddressedRead,\n type OdooCompiledCall,\n} from './odoo-jsonrpc-compiler.backend';\nimport {\n HttpApiProviderAccessError,\n type HttpApiProviderAccessResolver,\n} from './http-api-provider-access.backend';\n\ntype AnyOperation = { operationIdentifier: string; isOperationDefault?: boolean } & Record<string, unknown>;\n\ntype ListCallOptions = RepositoryOptions & {\n listOptions?: Partial<Resources_PaginationRequest> & { sort?: Record<string, 1 | -1> };\n};\n\n/**\n * The audit seam, structural + lazily resolved (the authorizations-service precedent): the\n * adapter never holds the service, only a thunk the registry handler builds off the container.\n * Absent binding (unit harnesses, partial containers) means no emission — and emission failure\n * must never fail the read it observes.\n */\nexport type HttpApiAuditLogsResolver = () => {\n logHttpApiReadThroughAccess?: (\n data: Record<string, unknown>,\n requestExecutionContext?: ExecutionContext<any>,\n ) => Promise<void>;\n} | undefined;\n\n/**\n * A stance-6b external erasure that stopped mid-way — `deletedCount` is what ALREADY applied\n * remotely before the failure, which is the number that decides PARTIAL (some rows gone, some\n * live) versus FAILED (nothing applied). Deletions are idempotent by key, so the remediation is a\n * re-run of the subject erasure: discovery finds only the surviving rows.\n */\nexport class HttpApiExternalErasureError extends Error {\n constructor(\n message: string,\n public readonly deletedCount: number,\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = 'HttpApiExternalErasureError';\n }\n}\n\nconst READ_FAMILY: ReadonlySet<CoreResourceOperation> = new Set([\n CoreResourceOperation.READ,\n CoreResourceOperation.LIST,\n CoreResourceOperation.COUNT,\n CoreResourceOperation.SEARCH,\n]);\n\nexport class HttpApiResourceRepositoryBackendService {\n private readonly resourceConfiguration: any;\n private readonly binding: HttpApiResourceBinding;\n private readonly operationsMap = new Map<string, AnyOperation>();\n private readonly readClient: HttpApiReadClient;\n private readonly logDebug: (message: string, data?: unknown) => void;\n\n constructor(\n resourceType: ResourceType,\n private readonly logger: LoggerService,\n private readonly errorBuilder: ErrorBuilderBackendService,\n private readonly resourceRegistry: ResourcesRegistryBackendService,\n private readonly providerAccessResolver: HttpApiProviderAccessResolver,\n private readonly fetchImpl: HttpApiFetchLike = defaultHttpApiFetch,\n private readonly auditLogsResolver?: HttpApiAuditLogsResolver,\n ) {\n this.resourceConfiguration = this.resourceRegistry.getResourceConfiguration(resourceType);\n const binding = (this.resourceConfiguration as { httpApiBinding?: HttpApiResourceBinding }).httpApiBinding;\n if (!binding) {\n // The factory enforces presence at authoring; this is the fail-closed backstop for a\n // hand-built configuration reaching construction without one.\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.RESOURCES_REGISTRY_INITIALIZATION_FAILED,\n context: { reason: 'http_api_resource_without_binding', resourceType },\n });\n }\n this.binding = binding;\n // PR-29: ALL wire mechanics live in the ONE shared client (also consumed by the pipeline\n // extraction source) — this class owns translation/projection/scope/audit/erasure, never framing.\n this.readClient = new HttpApiReadClient(binding, providerAccessResolver, fetchImpl);\n this.logDebug = this.logger.debugByType(`HttpApiRepositoryResource_${resourceType}`);\n this.logger.setDebugTypeLogging(`HttpApiRepositoryResource_${resourceType}`, false);\n\n for (const operation of (this.resourceConfiguration.operations ?? []) as AnyOperation[]) {\n try {\n const path = ResourcesConfig_OperationPathUtils.extractOperationRepositoryPath(operation as never);\n this.operationsMap.set(ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey(path), operation);\n } catch {\n // An operation with no repository-resolvable identity (no core op, no\n // resourceOperationLike) is simply not addressable through this transport. NOTE this is\n // MORE tolerant than the Mongo sibling's map construction (which propagates); tolerated\n // here because a custom operation with no repository routing is legal on a read-only\n // resource and every read-family core op resolves.\n }\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Dispatch (mirrors the sibling adapters: path → key → operationsMap → doOperation)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public async doByPath<T = any, U = any>(\n operationRepositoryPath: Parameters<typeof ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey>[0],\n executionContext: ExecutionContext<any>,\n id_or_ids_or_filter?: any,\n data?: U,\n options?: RepositoryOptions,\n ): Promise<T> {\n const key = ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey(operationRepositoryPath);\n return this.doByKey(key, executionContext, id_or_ids_or_filter, data, options);\n }\n\n public async doByKey<T = any, U = any>(\n operationRepositoryPathKey: string,\n executionContext: ExecutionContext<any>,\n id_or_ids_or_filter?: any,\n data?: U,\n options?: RepositoryOptions,\n ): Promise<T> {\n ResourcesConfig_OperationPathUtils.validateOperationRepositoryPathKey(operationRepositoryPathKey);\n const operation = this.operationsMap.get(operationRepositoryPathKey);\n if (!operation) {\n // The TYPE now agrees with the LABEL this site already carried. It declared\n // `ErrorCustomMessageReference.CONFIGURATION` with `reason: 'operation_not_found_on_http_api_repository'`\n // and typed the same call `NOT_FOUND` — the classification and the label contradicting each\n // other in one expression, where an author had clearly worked out which one was true.\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n reason: 'operation_not_found_on_http_api_repository',\n operationRepositoryPathKey,\n resourceType: this.resourceConfiguration.resourceIdentifier,\n },\n });\n }\n return this.doOperation(operation, executionContext, id_or_ids_or_filter, data, options);\n }\n\n public async doByExecutionContext<T = any>(\n executionContext: ExecutionContext<any>,\n data?: any,\n options?: RepositoryOptions,\n ): Promise<T> {\n const operation = executionContext.operation as unknown as AnyOperation;\n const idFromContext = executionContext.getContextResourceId(\n this.resourceConfiguration.resourceFieldIdentifier,\n );\n return this.doOperation(operation, executionContext, idFromContext, data, options);\n }\n\n private async doOperation(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n id_or_ids_or_filter?: any,\n data?: any,\n options?: RepositoryOptions,\n ): Promise<any> {\n const operationIdentifier = ResourceOperationsUtils.getCoreResourceOperationFromOperation(operation as never);\n if (!operationIdentifier || !READ_FAMILY.has(operationIdentifier)) {\n throw this.readOnlyRefusal(String(operationIdentifier ?? operation.operationIdentifier), executionContext);\n }\n switch (operationIdentifier) {\n case CoreResourceOperation.READ:\n if (Array.isArray(id_or_ids_or_filter)) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n context: { reason: 'read_received_id_array', resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n return this._doRead(operation, executionContext, id_or_ids_or_filter, options);\n case CoreResourceOperation.LIST: {\n const idsToList = typeof id_or_ids_or_filter === 'string' ? [id_or_ids_or_filter] : id_or_ids_or_filter;\n return this._doList(operation, executionContext, idsToList, options as ListCallOptions);\n }\n case CoreResourceOperation.COUNT:\n return this._doCount(operation, executionContext, (data?.filter as Record<string, unknown>) ?? {}, options);\n case CoreResourceOperation.SEARCH:\n return this._doSearch(operation, executionContext, data?.query || '', (data?.filter as Record<string, unknown>) ?? {}, {\n ...options,\n searchOptions: (options as { searchOptions?: Record<string, unknown> } | undefined)?.searchOptions ?? {},\n });\n default:\n throw this.readOnlyRefusal(String(operationIdentifier), executionContext);\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Public read-family members (operation resolution mirrors the siblings)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public async read<T = undefined>(\n executionContext: ExecutionContext<any>,\n id_or_filter: any,\n options?: RepositoryOptions,\n ): Promise<any> {\n const operation = this.findDefaultOperation(CoreResourceOperation.READ)\n ?? this.syntheticOperation(CoreResourceOperation.READ);\n return this._doRead(operation, executionContext, id_or_filter, options);\n }\n\n public async readForInternalScan<T = undefined>(\n executionContext: ExecutionContext<any>,\n id_or_filter: any,\n options?: RepositoryOptions,\n ): Promise<any> {\n return this._doRead(this.syntheticOperation(CoreResourceOperation.READ), executionContext, id_or_filter, options);\n }\n\n public async list<T = undefined>(\n executionContext: ExecutionContext<any>,\n ids_or_filter: any,\n options?: ListCallOptions,\n ): Promise<any> {\n const operation = this.findDefaultOperation(CoreResourceOperation.LIST);\n if (!operation) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n context: {\n reason: 'no default LIST operation declared on this resource',\n resourceType: this.resourceConfiguration.resourceIdentifier,\n },\n });\n }\n return this._doList(operation, executionContext, ids_or_filter, options);\n }\n\n public async listForInternalScan<T = undefined>(\n executionContext: ExecutionContext<any>,\n ids_or_filter: any,\n options?: ListCallOptions,\n ): Promise<any> {\n const operation = this.findDefaultOperation(CoreResourceOperation.LIST)\n ?? this.syntheticOperation(CoreResourceOperation.LIST);\n return this._doList(operation, executionContext, ids_or_filter, options);\n }\n\n public async search<T = any>(\n executionContext: ExecutionContext<any>,\n searchQuery: string,\n filter?: any,\n searchOptions?: any,\n options?: RepositoryOptions,\n ): Promise<Resources_PaginatedResult<T>> {\n const operation = this.findDefaultOperation(CoreResourceOperation.SEARCH);\n if (!operation) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n context: { reason: 'no default SEARCH operation declared', resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n return this._doSearch(operation, executionContext, searchQuery, filter ?? {}, { ...options, searchOptions: searchOptions ?? {} });\n }\n\n public async count(\n executionContext: ExecutionContext<any>,\n filter?: any,\n options?: RepositoryOptions,\n ): Promise<{ count: number }> {\n const operation = this.findDefaultOperation(CoreResourceOperation.COUNT)\n ?? this.syntheticOperation(CoreResourceOperation.COUNT);\n return this._doCount(operation, executionContext, filter ?? {}, options);\n }\n\n public supportsOperation(operationIdentifier: string): boolean {\n // Sibling-parity: capability means a DEFAULT variant exists (both platform adapters require\n // `isOperationDefault === true`), not merely that any variant mentions the identifier.\n return (this.resourceConfiguration.operations as AnyOperation[]).some(\n (operation) => operation.operationIdentifier === operationIdentifier && operation.isOperationDefault === true,\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Read-family execution\n // ─────────────────────────────────────────────────────────────────────────────\n\n private async _doRead(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n id_or_filter: any,\n options?: RepositoryOptions,\n ): Promise<Record<string, unknown> | null> {\n return this.guarded(executionContext, async () => {\n if (typeof id_or_filter === 'string') {\n return this.readByKeyWithScopeCheck(executionContext, id_or_filter, options);\n }\n\n // A filter of exactly `{ _id: <string> }` IS a key-addressed read — the write-integrity FK\n // probe's shape (`{ _id: fkValue }`, with `excludeContextualFilter: true`) — and must work\n // on BOTH dialects, so it routes through the key path rather than the collection query.\n const rawFilter = (id_or_filter as { filter?: Record<string, unknown> })?.filter\n ?? (id_or_filter as Record<string, unknown>) ?? {};\n const filterKeys = Object.keys(rawFilter);\n if (filterKeys.length === 1 && filterKeys[0] === '_id' && typeof rawFilter._id === 'string') {\n return this.readByKeyWithScopeCheck(executionContext, rawFilter._id, options);\n }\n\n // Filter-shaped READ (child fetches, business-key-less lookups): translate + take the\n // first row of a limit-1 collection query.\n const query = this.translate(executionContext, rawFilter, options, { limit: 1, offset: 0 });\n if (query.matchNothing) return null;\n const rows = await this.executeCollectionRead(executionContext, query, operation);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.READ, { rowCount: rows.length }); // site 2/5\n return rows.length > 0 ? projectHttpApiRemoteRow(this.binding, rows[0]) : null;\n });\n }\n\n /**\n * Key-addressed single-row read WITH the tenant-scope check (paper B T1 / requirement R4).\n *\n * A key-addressed read has no `$filter`, so on a SCOPE_FILTER_PUSHDOWN binding the scope\n * predicate is enforced POST-FETCH against the raw remote row: a row whose declared remote\n * scope field does not carry the caller's scope value answers `null` — exactly what the Mongo\n * sibling's conjoined contextual filter yields for an out-of-scope id. Skipped only by the\n * engine's own bypass (`excludeContextualFilter: true` — internal probes) and on\n * SINGLE_TENANT bindings, where scope is N/A by declared stance.\n */\n private async readByKeyWithScopeCheck(\n executionContext: ExecutionContext<any>,\n resourceId: string,\n options?: RepositoryOptions,\n ): Promise<Record<string, unknown> | null> {\n // Assert decodability BEFORE the remote call: an id this binding could not have synthesized\n // is a VALIDATION refusal, never a silent 404.\n resolveHttpApiKeyComponents(this.binding, resourceId);\n\n // Resolve the tenant scope BEFORE spending the remote call, so a scope-less pushdown context\n // refuses without touching the target — same ordering as the translation boundary.\n let requiredScope: { remoteField: string; value: string } | undefined;\n if (\n options?.excludeContextualFilter !== true\n && this.binding.tenancy.stance === HttpApiTenancyStance.SCOPE_FILTER_PUSHDOWN\n ) {\n const remoteScopeField = this.binding.tenancy.remoteScopeField;\n const primaryScopeFieldIdentifier = this.resourceConfiguration.resourcePrimaryScope\n ? PRIMARY_SCOPE_TO_FIELD_IDENTIFIER[this.resourceConfiguration.resourcePrimaryScope as keyof typeof PRIMARY_SCOPE_TO_FIELD_IDENTIFIER]\n : undefined;\n const scopeValue = primaryScopeFieldIdentifier\n ? executionContext.getContextResourceId(primaryScopeFieldIdentifier as never)\n : undefined;\n if (typeof scopeValue !== 'string' || scopeValue.length === 0) {\n // Same fail-closed refusal as the translation boundary: no scope, no remote row.\n throw new HttpApiTranslationRefusal(\n `Resource '${this.resourceConfiguration.resourceIdentifier}' declares SCOPE_FILTER_PUSHDOWN tenancy but the execution context carries no `\n + `'${String(primaryScopeFieldIdentifier)}' scope value — refusing an unscoped key-addressed read.`,\n );\n }\n requiredScope = { remoteField: remoteScopeField, value: scopeValue };\n }\n\n const body = await this.executeKeyAddressedRead(executionContext, resourceId);\n // Site 1/5: a remote round-trip happened whether or not a row came back (or survives the\n // scope check below) — the trail records EXTERNAL access, not what was served.\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.READ, {\n resourceId, rowCount: body === null ? 0 : 1,\n });\n if (body === null) return null;\n const rawRow = body as Record<string, unknown>;\n\n if (\n requiredScope !== undefined\n && String(rawRow[requiredScope.remoteField]) !== requiredScope.value\n ) {\n // Out-of-scope row: indistinguishable from \"no row\" for this caller, by design — exactly\n // what the Mongo sibling's conjoined contextual filter yields for an out-of-scope id.\n return null;\n }\n\n return projectHttpApiRemoteRow(this.binding, rawRow);\n }\n\n private async _doList(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n ids_or_filter: any,\n options?: ListCallOptions,\n ): Promise<any> {\n return this.guarded(executionContext, async () => {\n const paginated = options?.paginated ?? false;\n const listOptions = options?.listOptions;\n const hasPagination = listOptions?.page !== undefined || listOptions?.limit !== undefined;\n\n // Sibling-parity page math (measured: default page size 20, ceiling from the operation).\n const maxLimit = (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit || 100;\n const page = hasPagination ? Math.max(1, listOptions?.page || 1) : 1;\n const limit = Math.min(maxLimit, Math.max(1, listOptions?.limit || 20));\n const bounded = paginated || hasPagination;\n\n const filter = Array.isArray(ids_or_filter)\n ? { _id: { $in: ids_or_filter } }\n : (ids_or_filter as Record<string, unknown>) ?? {};\n\n const query = this.translate(executionContext, filter, options, {\n // An unpaginated internal list against a REMOTE system is still bounded by the\n // binding's page ceiling — \"the whole entity set\" is never a single call (paper B, T5).\n limit: bounded ? limit : maxLimit,\n offset: bounded ? (page - 1) * limit : 0,\n }, listOptions?.sort, (operation as { sortFields?: readonly string[] }).sortFields);\n if (!bounded) {\n // The sibling's unpaginated list returns the FULL set; this adapter caps at the ceiling.\n // Named once so a truncated internal scan never reads as \"covered everything\".\n this.logDebug(\n `Unpaginated internal LIST on '${this.resourceConfiguration.resourceIdentifier}' is capped at ${maxLimit} remote rows (paper B, T5).`,\n );\n }\n\n if (query.matchNothing) {\n return paginated\n ? { data: [], pagination: { page, limit, total: 0, totalPages: 0 } }\n : [];\n }\n\n if (!paginated) {\n const rows = await this.executeCollectionRead(executionContext, query, operation);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.LIST, { rowCount: rows.length }); // site 3/5\n return rows.map((row) => projectHttpApiRemoteRow(this.binding, row));\n }\n\n const { rows, total } = await this.executeCollectionReadWithTotal(executionContext, query, operation);\n // Site 3/5 (paginated shape): the list and the count that totals its envelope are ONE access.\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.LIST, { rowCount: rows.length });\n return {\n data: rows.map((row) => projectHttpApiRemoteRow(this.binding, row)),\n pagination: { page, limit, total, totalPages: limit > 0 ? Math.ceil(total / limit) : 1 },\n };\n });\n }\n\n private async _doCount(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n filter: Record<string, unknown>,\n options?: RepositoryOptions,\n ): Promise<{ count: number }> {\n return this.guarded(executionContext, async () => {\n const query = this.translate(executionContext, filter, options);\n if (query.matchNothing) return { count: 0 };\n const count = await this.executeCountRead(executionContext, query, operation);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.COUNT, { rowCount: count }); // site 4/5\n return { count };\n });\n }\n\n private async _doSearch(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n searchQuery: string,\n filter: Record<string, unknown>,\n options: RepositoryOptions & { searchOptions: Record<string, unknown> },\n ): Promise<Resources_PaginatedResult<any>> {\n return this.guarded(executionContext, async () => {\n const searchOptions = options.searchOptions as { page?: number; limit?: number; sort?: Record<string, 1 | -1> };\n const maxLimit = (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit || 50;\n const page = Math.max(1, searchOptions.page || 1);\n const limit = Math.min(maxLimit, Math.max(1, searchOptions.limit || 20));\n\n const query = this.translate(\n executionContext, filter, options,\n { limit, offset: (page - 1) * limit },\n searchOptions.sort,\n (operation as { sortFields?: readonly string[] }).sortFields,\n );\n\n if (searchQuery.trim().length > 0) {\n const searchableFields = ((operation as { searchableFields?: unknown[] }).searchableFields ?? [])\n .filter((entry): entry is string => typeof entry === 'string');\n if (searchableFields.length === 0) {\n throw new HttpApiTranslationRefusal(\n 'SEARCH on an HTTP_API resource requires declared own-field searchableFields (the Mongo $text fallback and relational descriptors have no remote translation — paper B).',\n );\n }\n const rawOptions = (operation as { searchableOptions?: { caseSensitive?: boolean; fullMatchOnly?: boolean } }).searchableOptions;\n query.search = {\n localFields: searchableFields,\n query: searchQuery,\n caseSensitive: rawOptions?.caseSensitive === true,\n fullMatchOnly: rawOptions?.fullMatchOnly === true,\n };\n }\n\n if (query.matchNothing) {\n return { data: [], pagination: { page, limit, total: 0, totalPages: 0 } };\n }\n const { rows, total } = await this.executeCollectionReadWithTotal(executionContext, query, operation, CoreResourceOperation.SEARCH);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.SEARCH, { rowCount: rows.length }); // site 5/5\n return {\n data: rows.map((row) => projectHttpApiRemoteRow(this.binding, row)),\n pagination: { page, limit, total, totalPages: limit > 0 ? Math.ceil(total / limit) : 1 },\n };\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Remote execution per dialect\n // ─────────────────────────────────────────────────────────────────────────────\n\n private translate(\n executionContext: ExecutionContext<any>,\n filter: Record<string, unknown>,\n options: RepositoryOptions | undefined,\n pagination?: { limit: number; offset: number },\n sort?: Record<string, 1 | -1>,\n declaredSortFields?: readonly string[],\n ): HttpApiTranslatedQuery {\n return translateHttpApiReadInputs({\n executionContext,\n binding: this.binding,\n resourceConfiguration: this.resourceConfiguration,\n filter,\n excludeContextualFilter: options?.excludeContextualFilter,\n sort,\n declaredSortFields,\n pagination,\n });\n }\n\n private restOperationSpec(member: 'read' | 'list' | 'count' | 'search'): any {\n if (this.binding.dialect !== HttpApiTransportDialect.REST_JSON) return undefined;\n const spec = this.binding.operations[member];\n if (!spec) {\n throw new RestJsonTranslationRefusal(\n `This REST_JSON binding declares no '${member}' operation — the member is refused for this binding, never emulated.`,\n );\n }\n return spec;\n }\n\n private async executeKeyAddressedRead(\n executionContext: ExecutionContext<any>,\n resourceId: string,\n ): Promise<unknown | null> {\n let body: unknown;\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataKeyAddressedRead(this.binding, resourceId);\n const response = await this.readClient.odataGetOrNull(executionContext, compiled);\n if (response === null) return null;\n body = response;\n } else if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n // `read([[id]])` answers an ARRAY; empty = the documented \"no such row\".\n const rows = this.expectRowArray(\n await this.readClient.odooExecuteKw(executionContext, compileOdooKeyAddressedRead(this.binding, resourceId)),\n \"the Odoo 'read' result array\",\n );\n return rows.length > 0 ? rows[0] : null;\n } else {\n const spec = this.restOperationSpec('read');\n const compiled = compileRestJsonKeyAddressedRead(this.binding, spec, resourceId);\n const response = await this.readClient.restJsonReadOrNull(executionContext, compiled);\n if (response === null) return null;\n body = response;\n }\n return body;\n }\n\n private async executeCollectionRead(\n executionContext: ExecutionContext<any>,\n query: HttpApiTranslatedQuery,\n _operation: AnyOperation,\n member: 'list' | 'search' = 'list',\n ): Promise<Array<Record<string, unknown>>> {\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataCollectionRead(this.binding, query);\n const body = await this.readClient.odataGet(executionContext, compiled);\n return this.expectRowArray((body as { value?: unknown })?.value, \"the OData 'value' array\");\n }\n if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n return this.expectRowArray(\n await this.readClient.odooExecuteKw(executionContext, compileOdooCollectionRead(this.binding, query)),\n \"the Odoo 'search_read' result array\",\n );\n }\n const spec = this.restOperationSpec(member === 'search' ? 'search' : 'list');\n const compiled = compileRestJsonCollectionRead(this.binding, spec, query);\n const body = await this.readClient.restJson(executionContext, compiled);\n return this.expectRowArray(resolveHttpApiResultPath(body, compiled.resultPath), `the declared resultPath '${compiled.resultPath ?? '(body)'}'`);\n }\n\n private async executeCollectionReadWithTotal(\n executionContext: ExecutionContext<any>,\n query: HttpApiTranslatedQuery,\n operation: AnyOperation,\n searchMember?: CoreResourceOperation.SEARCH,\n ): Promise<{ rows: Array<Record<string, unknown>>; total: number }> {\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataCollectionRead(this.binding, query, { count: true });\n const body = await this.readClient.odataGet(executionContext, compiled) as Record<string, unknown>;\n const rows = this.expectRowArray(body?.value, \"the OData 'value' array\");\n const total = body?.['@odata.count'];\n if (typeof total !== 'number') {\n throw new HttpApiTranslationRefusal(\n \"A paginated envelope needs a total, but the target answered no '@odata.count' — the target does not honor $count=true; only non-paginated reads are available against it.\",\n );\n }\n return { rows, total };\n }\n // Resolve the count declaration FIRST (REST_JSON only — Odoo's search_count is generic):\n // a paginated envelope needs a total, and an undeclared count operation must refuse before\n // any remote list call is spent.\n if (this.binding.dialect === HttpApiTransportDialect.REST_JSON) {\n this.restOperationSpec('count');\n }\n const rows = await this.executeCollectionRead(executionContext, query, operation, searchMember ? 'search' : 'list');\n const total = await this.executeCountRead(executionContext, { ...query, pagination: undefined, sort: [] }, operation);\n return { rows, total };\n }\n\n private async executeCountRead(\n executionContext: ExecutionContext<any>,\n query: HttpApiTranslatedQuery,\n _operation: AnyOperation,\n ): Promise<number> {\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataCountRead(this.binding, query);\n const body = await this.readClient.odataGet(executionContext, compiled);\n const count = typeof body === 'number' ? body : Number(body);\n if (!Number.isFinite(count)) {\n throw new HttpApiTranslationRefusal(`The OData /$count endpoint answered a non-numeric body (${typeof body}).`);\n }\n return count;\n }\n if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n const result = await this.readClient.odooExecuteKw(executionContext, compileOdooCountRead(this.binding, query));\n if (typeof result !== 'number' || !Number.isFinite(result)) {\n throw new HttpApiRemoteContractError(`Odoo 'search_count' answered a non-numeric result (${typeof result}).`);\n }\n return result;\n }\n const spec = this.restOperationSpec('count');\n const compiled = compileRestJsonCollectionRead(this.binding, spec, { ...query, pagination: undefined });\n const body = await this.readClient.restJson(executionContext, compiled);\n const payload = resolveHttpApiResultPath(body, compiled.resultPath);\n const count = typeof payload === 'number' ? payload : Number(payload);\n if (!Number.isFinite(count)) {\n throw new HttpApiTranslationRefusal(\n `The declared count operation answered a non-numeric payload at '${compiled.resultPath ?? '(body)'}'.`,\n );\n }\n return count;\n }\n\n // ── Wire mechanics: see HttpApiReadClient (PR-29 — one implementation, two consumers) ──\n\n // ── Read-through audit trail (ETL D8/R6) ─────────────────────────────────────\n\n /**\n * Record one read-through access — the row that keeps attribution alive through the shared\n * service principal (R12). Fire-and-forget and feature-detected per the house pattern\n * (`recordCrossTenantAdministrativeAccess`): a partial audit binding or a store failure must\n * never fail the read it observes. Emitted ONLY after a remote round-trip actually happened —\n * match-nothing short-circuits touch no external system and record nothing.\n *\n * Emission lives at the ADAPTER, deliberately inverting the services-tier precedent\n * (`recordPlatformDirectoryAccess`'s \"the repository exists once per adapter\" argument):\n * HTTP_API has exactly ONE adapter, and it is the only tier that witnesses EVERY remote access\n * — repository-direct probes (write-integrity's `readForInternalScan`) never pass the\n * services tier at all. Call sites, enumerated: `readByKeyWithScopeCheck`, `_doRead`'s\n * filter branch, `_doList` (both shapes), `_doCount`, `_doSearch`.\n *\n * assurance-control: WILDO.AUDIT.ATTRIBUTION — external read-through access recorded with the\n * real initiating user carried through the shared service principal.\n */\n private recordReadThroughAccess(\n executionContext: ExecutionContext<any>,\n operationIdentifier: CoreResourceOperation,\n extras: { resourceId?: string; rowCount?: number } = {},\n ): void {\n try {\n const auditLogsService = this.auditLogsResolver?.();\n if (typeof auditLogsService?.logHttpApiReadThroughAccess !== 'function') return;\n const initiatorIds = (executionContext as { initiatorIds?: { userId?: string; organizationId?: string } }).initiatorIds;\n void auditLogsService.logHttpApiReadThroughAccess({\n resourceType: String(this.resourceConfiguration.resourceIdentifier),\n operationIdentifier: String(operationIdentifier),\n providerRef: this.binding.providerRef,\n remoteEntityRef: this.binding.entityRef,\n dialect: this.binding.dialect,\n initiatorUserId: initiatorIds?.userId,\n executionType: (executionContext as { executionType?: string }).executionType,\n organizationId: initiatorIds?.organizationId\n ?? executionContext.getContextResourceId?.('organizationId' as never),\n ...extras,\n }, executionContext)?.catch?.(() => undefined);\n } catch {\n // Observation only — never the reason a read fails.\n }\n }\n\n // ── D6 stance 6b: the declared external-erasure door ─────────────────────────\n\n /**\n * The ONE write slice 1 sanctions (the stance JSDoc's \"a single declared write\"): delete every\n * remote row linked to ONE erased subject through the binding's DECLARED erasure operation.\n * Callable only by the subject-erasure external effect — every generic write member of this\n * repository stays refused (D3), and the boot-time B1 sweep keeps lifecycle cascades away from\n * HTTP_API children, so this door cannot be reached by an ordinary teardown.\n *\n * ## Identity-less by design\n *\n * The internal context below is inert on this path, verified per consumer: translation runs\n * `excludeContextualFilter` (an erasure must reach the subject's rows in EVERY tenant — the FK\n * equality is the confinement), and `resolveAccess` ignores the context for SERVICE_PRINCIPAL.\n * Attribution lives in the `HTTP_API_EXTERNAL_ERASURE` audit row the calling effect emits;\n * discovery reads here deliberately do NOT emit read-through events (the read exists only to\n * address the deletion the event already records — double-recording would be noise with no\n * initiator).\n *\n * ## Discovery deletes as it goes\n *\n * Each iteration re-queries PAGE ONE (offset 0): deleting shifts pagination windows, so paging\n * forward would skip every second page. A page whose leading row survives two consecutive\n * iterations means the target is not actually deleting — refused loudly rather than looping.\n *\n * ## Failure semantics\n *\n * Throws {@link HttpApiExternalErasureError} carrying what already applied. A retried transport\n * call that landed remotely before its response was lost can surface as an Odoo `unlink` error\n * on missing ids — reported as PARTIAL by the effect, and self-healing on the next erasure run\n * (discovery finds only survivors; a remote 404 on a key-addressed DELETE counts as already\n * gone for the same reason).\n */\n public async executeDeclaredSubjectLinkErasure(\n localFkField: string,\n subjectId: string,\n ): Promise<{ deletedCount: number }> {\n if (this.binding.erasure.stance !== HttpApiErasureStance.EXTERNAL_ERASURE_OPERATION) {\n throw new HttpApiTranslationRefusal(\n `Resource '${String(this.resourceConfiguration.resourceIdentifier)}' declares erasure stance '${this.binding.erasure.stance}' — the external-erasure door is only defined for EXTERNAL_ERASURE_OPERATION (D6 stance 6b).`,\n );\n }\n\n const executionContext = this.systemErasureExecutionContext();\n let deletedCount = 0;\n let previousLeadingId: string | undefined;\n\n for (let iteration = 0; iteration < HttpApiResourceRepositoryBackendService.ERASURE_MAX_DISCOVERY_ITERATIONS; iteration++) {\n let rowIds: string[];\n try {\n const query = this.translate(\n executionContext,\n { [localFkField]: subjectId },\n { excludeContextualFilter: true },\n { limit: HttpApiResourceRepositoryBackendService.ERASURE_DISCOVERY_PAGE, offset: 0 },\n );\n const rows = await this.executeCollectionRead(\n executionContext,\n query,\n this.syntheticOperation(CoreResourceOperation.LIST),\n );\n rowIds = rows.map((row) => String(projectHttpApiRemoteRow(this.binding, row)._id));\n } catch (error) {\n throw new HttpApiExternalErasureError(\n `External-erasure discovery failed for '${String(this.resourceConfiguration.resourceIdentifier)}' (link field '${localFkField}'): ${error instanceof Error ? error.message : String(error)}`,\n deletedCount,\n error,\n );\n }\n\n if (rowIds.length === 0) {\n return { deletedCount };\n }\n if (rowIds[0] === previousLeadingId) {\n throw new HttpApiExternalErasureError(\n `The target acknowledged the delete of row '${rowIds[0]}' but discovery still returns it — the declared erasure operation is not actually deleting; refusing to loop.`,\n deletedCount,\n );\n }\n previousLeadingId = rowIds[0];\n\n try {\n await this.deleteRemoteRowsByIds(executionContext, rowIds);\n } catch (error) {\n // A mid-page per-row failure carries what THAT page already applied — losing it would\n // report a PARTIAL as a clean FAILED and invite a retry the registry believes is safe.\n const appliedInFailedPage = error instanceof HttpApiExternalErasureError ? error.deletedCount : 0;\n throw new HttpApiExternalErasureError(\n `The declared erasure operation failed for '${String(this.resourceConfiguration.resourceIdentifier)}' after ${deletedCount + appliedInFailedPage} deletion(s): ${error instanceof Error ? error.message : String(error)}`,\n deletedCount + appliedInFailedPage,\n error,\n );\n }\n deletedCount += rowIds.length;\n }\n\n throw new HttpApiExternalErasureError(\n `External erasure exceeded ${HttpApiResourceRepositoryBackendService.ERASURE_MAX_DISCOVERY_ITERATIONS} discovery pages for one subject — refusing an unbounded remote loop.`,\n deletedCount,\n );\n }\n\n /**\n * Best-effort remote count of rows linked to one subject — the stance-6c acknowledgement's\n * evidence (`remainingRowCount` on the CRITICAL audit row). Throws on any refusal or transport\n * failure; the caller records ABSENCE rather than a fabricated zero.\n */\n public async countRowsLinkedToSubject(localFkField: string, subjectId: string): Promise<number> {\n const executionContext = this.systemErasureExecutionContext();\n const query = this.translate(\n executionContext,\n { [localFkField]: subjectId },\n { excludeContextualFilter: true },\n );\n return this.executeCountRead(executionContext, query, this.syntheticOperation(CoreResourceOperation.COUNT));\n }\n\n private static readonly ERASURE_DISCOVERY_PAGE = 50;\n private static readonly ERASURE_MAX_DISCOVERY_ITERATIONS = 200;\n\n /**\n * The minimal internal context the erasure path runs under. Structurally an ExecutionContext,\n * deliberately identity-less (a system erasure carries no request identity — the same doctrine\n * as the file-teardown gates); every consumer on this path is verified inert against it, per\n * the door's JSDoc.\n */\n private systemErasureExecutionContext(): ExecutionContext<any> {\n return {\n getContextResourceId: () => undefined,\n getContextResourceIds: () => new Map(),\n operation: undefined,\n } as unknown as ExecutionContext<any>;\n }\n\n /** Delete one discovered page of rows through the DECLARED erasure operation, per dialect. */\n private async deleteRemoteRowsByIds(\n executionContext: ExecutionContext<any>,\n rowIds: readonly string[],\n ): Promise<void> {\n if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n // Odoo's canonical delete is ONE batched `unlink [[ids]]` per page.\n const integerIds = rowIds.map((rowId) => Number(resolveHttpApiKeyComponents(this.binding, rowId)[0]));\n await this.readClient.odooExecuteKw(executionContext, compileOdooCanonicalDelete(integerIds));\n return;\n }\n\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n // OData's canonical delete: `DELETE /EntitySet(key)` per row; 404 = already gone. A per-row\n // failure surfaces WITH the count that already applied in this page (PARTIAL accuracy).\n let appliedInPage = 0;\n for (const rowId of rowIds) {\n const compiled = compileODataKeyAddressedRead(this.binding, rowId);\n try {\n await this.readClient.odataDeleteByPath(executionContext, compiled.path);\n } catch (error) {\n throw new HttpApiExternalErasureError(\n `Canonical DELETE failed for row '${rowId}': ${error instanceof Error ? error.message : String(error)}`,\n appliedInPage,\n error,\n );\n }\n appliedInPage += 1;\n }\n return;\n }\n\n // REST_JSON: the EXPLICIT declared operation (dialect coherence guarantees the form).\n const declaredOperation = this.binding.erasure.stance === HttpApiErasureStance.EXTERNAL_ERASURE_OPERATION\n ? this.binding.erasure.operation\n : undefined;\n if (!declaredOperation || 'useCanonicalDelete' in declaredOperation) {\n throw new HttpApiTranslationRefusal(\n 'A REST_JSON external erasure needs the EXPLICIT declared operation spec — the boot-time dialect coherence should have refused this binding.',\n );\n }\n const spec: HttpApiErasureOperationSpec = declaredOperation;\n let appliedInPage = 0;\n for (const rowId of rowIds) {\n const compiled = compileRestJsonDeclaredErasure(this.binding, spec, rowId);\n try {\n await this.readClient.restDeclaredErasureCall(executionContext, compiled);\n } catch (error) {\n throw new HttpApiExternalErasureError(\n `Declared erasure operation failed for row '${rowId}': ${error instanceof Error ? error.message : String(error)}`,\n appliedInPage,\n error,\n );\n }\n appliedInPage += 1;\n }\n }\n\n private expectRowArray(candidate: unknown, where: string): Array<Record<string, unknown>> {\n if (!Array.isArray(candidate)) {\n // A remote-CONTRACT breach, not a translation refusal: the query was legal, the answer is not.\n throw new HttpApiRemoteContractError(`The remote response carries no row array at ${where}.`);\n }\n return candidate as Array<Record<string, unknown>>;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Error projection + refusals\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Map the module-level error vocabulary into the engine's error projection, once. */\n private async guarded<T>(executionContext: ExecutionContext<any>, work: () => Promise<T>): Promise<T> {\n try {\n return await work();\n } catch (error) {\n if (error instanceof HttpApiTranslationRefusal || error instanceof RestJsonTranslationRefusal || error instanceof HttpApiRemoteContractError) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { reason: 'http_api_untranslatable_shape', message: error.message, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n if (error instanceof HttpApiProviderAccessError) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { reason: 'http_api_provider_access_unresolvable', message: error.message, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n if (error instanceof HttpApiTransportError) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { reason: 'http_api_remote_call_failed', message: error.message, ...error.detail, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n // Codec errors (undecodable / non-canonical / missing key components) are the shared\n // authority's TYPED refusal: LOUD VALIDATION by design, classified by instance.\n if (error instanceof HttpApiResourceIdError) {\n throw this.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.RESOURCE_ID_VALIDATION_FAILED,\n context: { reason: 'http_api_id_refused', message: error.message, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n throw error;\n }\n }\n\n private readOnlyRefusal(member: string, executionContext?: ExecutionContext<any>): ReturnType<ErrorBuilderBackendService['buildError']> {\n return this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n reason: 'http_api_repository_member_unsupported',\n member,\n message: `'${member}' is not available on an HTTP_API-backed resource in slice 1 (read-only — ETL decision D3/D10). `\n + 'Reads: read/list/count/search and the internal-scan variants.',\n resourceType: this.resourceConfiguration.resourceIdentifier,\n },\n });\n }\n\n private findDefaultOperation(operationIdentifier: CoreResourceOperation): AnyOperation | undefined {\n return (this.resourceConfiguration.operations as AnyOperation[]).find(\n (operation) => operation.operationIdentifier === operationIdentifier && operation.isOperationDefault === true,\n );\n }\n\n private syntheticOperation(operationIdentifier: CoreResourceOperation): AnyOperation {\n return {\n operationIdentifier,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isOperationDefault: true,\n } as unknown as AnyOperation;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // The refused remainder of the contract (D2: implemented, never omitted; D3: read-only)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public async create(): Promise<never> { throw this.readOnlyRefusal('create'); }\n public async createMany(): Promise<never> { throw this.readOnlyRefusal('createMany'); }\n public async update(): Promise<never> { throw this.readOnlyRefusal('update'); }\n public async updateMany(): Promise<never> { throw this.readOnlyRefusal('updateMany'); }\n public async delete(): Promise<never> { throw this.readOnlyRefusal('delete'); }\n public async deleteMany(): Promise<never> { throw this.readOnlyRefusal('deleteMany'); }\n public async atomicIncrementField(): Promise<never> { throw this.readOnlyRefusal('atomicIncrementField'); }\n public async atomicConditionalSet(): Promise<never> { throw this.readOnlyRefusal('atomicConditionalSet'); }\n public async atomicGuardedMutation(): Promise<never> { throw this.readOnlyRefusal('atomicGuardedMutation'); }\n public async updateManyByRawFilter(): Promise<never> { throw this.readOnlyRefusal('updateManyByRawFilter'); }\n public async deleteManyByRawFilter(): Promise<never> { throw this.readOnlyRefusal('deleteManyByRawFilter'); }\n public async insertRawDocument(): Promise<never> { throw this.readOnlyRefusal('insertRawDocument'); }\n public async findManyByRawFilter(): Promise<never> { throw this.readOnlyRefusal('findManyByRawFilter (raw filters are refused — T-set only, paper B R1)'); }\n public async countByRawFilter(): Promise<never> { throw this.readOnlyRefusal('countByRawFilter (raw filters are refused — T-set only, paper B R1)'); }\n public async readUnscopedByKey(): Promise<never> { throw this.readOnlyRefusal('readUnscopedByKey (raw filters are refused — T-set only, paper B R1)'); }\n public async findScopeRelatedTargetIds(): Promise<never> { throw this.readOnlyRefusal('findScopeRelatedTargetIds (an HTTP_API resource cannot serve as a scope junction in slice 1)'); }\n public async aggregateField(): Promise<never> { throw this.readOnlyRefusal('aggregateField (remote aggregation is refused — ETL decision D10)'); }\n public async findByBusinessKey(): Promise<never> { throw this.readOnlyRefusal('findByBusinessKey (data-seeding never targets an HTTP_API resource)'); }\n public async findManyByBusinessKeys(): Promise<never> { throw this.readOnlyRefusal('findManyByBusinessKeys (data-seeding never targets an HTTP_API resource)'); }\n public async upsertByBusinessKey(): Promise<never> { throw this.readOnlyRefusal('upsertByBusinessKey'); }\n public async upsertByFilter(): Promise<never> { throw this.readOnlyRefusal('upsertByFilter'); }\n public async updateSeedMetadata(): Promise<never> { throw this.readOnlyRefusal('updateSeedMetadata'); }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"http-api-resource-repository.backend.service.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The HTTP-API resource repository — the third `BackendResourceRepository` implementation\n * (ETL plan Step 3): rows live in a system reached over an authenticated HTTP API and are\n * queried ON DEMAND per the resource's committed `httpApiBinding`.\n *\n * READ-ONLY in slice 1 (decision D3): `read`/`list`/`count`/`search` and the internal-scan\n * variants execute; EVERY other contract member throws `CONFIGURATION` naming the reason\n * (decision D2 — the full contract is implemented, nothing is omitted, nothing returns a\n * fabricated empty result).\n *\n * Query admission is the frozen T-set (paper B) via `translateHttpApiReadInputs` — this class is\n * the boundary that enforces it, because `_doList`/`_doCount` have no repository-side\n * sanitization anywhere else. Row identity is the synthesized id (paper A) via the codec\n * authority; an undecodable id is a LOUD VALIDATION refusal, never a silent not-found (the\n * Mongo CastError→404 behavior is deliberately NOT mimicked). A remote 404 for a well-formed id\n * IS `null` — that is a genuine \"no row\".\n */\n\nimport {\n CoreResourceOperation,\n ErrorType,\n HttpApiResourceIdError,\n PRIMARY_SCOPE_TO_FIELD_IDENTIFIER,\n ResourceOperationVariantType,\n ResourcesConfig_OperationPathUtils,\n ResourceOperationsUtils,\n resolveHttpApiKeyComponents,\n type ResourceType,\n type Resources_PaginatedResult,\n type Resources_PaginationRequest,\n} from '@wildo-ai/saas-models';\nimport {\n HttpApiErasureStance,\n HttpApiTenancyStance,\n HttpApiTransportDialect,\n isHttpApiRestOperationReference,\n type HttpApiErasureOperationSpec,\n type HttpApiResourceBinding,\n} from '@wildo-ai/saas-models/external-data';\n\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport type { RepositoryOptions } from '~wildo-backend-lib/base-classes/models/repositories.backend.schemas';\nimport {\n AuditObservationKind,\n type AuditObservationLossMetricsResolver,\n emitAuditObservation,\n} from '~wildo-backend-lib/monitoring/observability/audit-observation-emission.backend';\n\nimport {\n HttpApiTransportError,\n HttpApiTransportFailureKind,\n type HttpApiFetchLike,\n type HttpApiTransportRequest,\n} from './http-api-transport.backend';\nimport { HttpApiReadClient, defaultHttpApiFetch } from './http-api-read-client.backend';\nimport {\n HttpApiTranslationRefusal,\n translateHttpApiReadInputs,\n} from './http-api-filter-translation.backend';\nimport type { HttpApiTranslatedQuery } from './http-api-query.backend';\nimport {\n compileODataCollectionRead,\n compileODataCountRead,\n compileODataKeyAddressedRead,\n type ODataCompiledRequest,\n} from './odata-query-compiler.backend';\nimport {\n RestJsonTranslationRefusal,\n compileRestJsonCollectionRead,\n compileRestJsonDeclaredErasure,\n compileRestJsonKeyAddressedRead,\n type RestJsonCompiledRequest,\n} from './rest-json-query-compiler.backend';\nimport {\n HttpApiRemoteContractError,\n projectHttpApiRemoteRow,\n resolveHttpApiResultPath,\n} from './http-api-row-projection.backend';\nimport { projectProviderOperationOntoReadSurface } from './http-api-rest-operation-reference.backend';\nimport {\n compileOdooCanonicalDelete,\n compileOdooCollectionRead,\n compileOdooCountRead,\n compileOdooKeyAddressedRead,\n type OdooCompiledCall,\n} from './odoo-jsonrpc-compiler.backend';\nimport {\n HttpApiProviderAccessError,\n type HttpApiProviderAccessResolver,\n} from './http-api-provider-access.backend';\n\ntype AnyOperation = { operationIdentifier: string; isOperationDefault?: boolean } & Record<string, unknown>;\n\ntype ListCallOptions = RepositoryOptions & {\n listOptions?: Partial<Resources_PaginationRequest> & { sort?: Record<string, 1 | -1> };\n};\n\n/**\n * The audit seam, structural + lazily resolved (the authorizations-service precedent): the\n * adapter never holds the service, only a thunk the registry handler builds off the container.\n * Absent binding (unit harnesses, partial containers) means no emission — and emission failure\n * must never fail the read it observes.\n */\nexport type HttpApiAuditLogsResolver = () => {\n logHttpApiReadThroughAccess?: (\n data: Record<string, unknown>,\n requestExecutionContext?: ExecutionContext<any>,\n ) => Promise<void>;\n} | undefined;\n\n/**\n * A stance-6b external erasure that stopped mid-way — `deletedCount` is what ALREADY applied\n * remotely before the failure, which is the number that decides PARTIAL (some rows gone, some\n * live) versus FAILED (nothing applied). Deletions are idempotent by key, so the remediation is a\n * re-run of the subject erasure: discovery finds only the surviving rows.\n */\nexport class HttpApiExternalErasureError extends Error {\n constructor(\n message: string,\n public readonly deletedCount: number,\n public readonly cause?: unknown,\n ) {\n super(message);\n this.name = 'HttpApiExternalErasureError';\n }\n}\n\nconst READ_FAMILY: ReadonlySet<CoreResourceOperation> = new Set([\n CoreResourceOperation.READ,\n CoreResourceOperation.LIST,\n CoreResourceOperation.COUNT,\n CoreResourceOperation.SEARCH,\n]);\n\nexport class HttpApiResourceRepositoryBackendService {\n private readonly resourceConfiguration: any;\n private readonly binding: HttpApiResourceBinding;\n private readonly operationsMap = new Map<string, AnyOperation>();\n private readonly readClient: HttpApiReadClient;\n private readonly logDebug: (message: string, data?: unknown) => void;\n\n constructor(\n resourceType: ResourceType,\n private readonly logger: LoggerService,\n private readonly errorBuilder: ErrorBuilderBackendService,\n private readonly resourceRegistry: ResourcesRegistryBackendService,\n private readonly providerAccessResolver: HttpApiProviderAccessResolver,\n private readonly fetchImpl: HttpApiFetchLike = defaultHttpApiFetch,\n private readonly auditLogsResolver?: HttpApiAuditLogsResolver,\n /**\n * The loss counter behind {@link recordReadThroughAccess}, resolved the same way and for the\n * same reason as the audit seam beside it: this class is built with `new`, holds no container,\n * and must construct in a unit harness that binds neither. A thunk rather than the recorder\n * itself so nothing is resolved on the happy path — see the seam's own type.\n */\n private readonly metricsResolver?: AuditObservationLossMetricsResolver,\n ) {\n this.resourceConfiguration = this.resourceRegistry.getResourceConfiguration(resourceType);\n const binding = (this.resourceConfiguration as { httpApiBinding?: HttpApiResourceBinding }).httpApiBinding;\n if (!binding) {\n // The factory enforces presence at authoring; this is the fail-closed backstop for a\n // hand-built configuration reaching construction without one.\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.RESOURCES_REGISTRY_INITIALIZATION_FAILED,\n context: { reason: 'http_api_resource_without_binding', resourceType },\n });\n }\n this.binding = binding;\n // PR-29: ALL wire mechanics live in the ONE shared client (also consumed by the pipeline\n // extraction source) — this class owns translation/projection/scope/audit/erasure, never framing.\n this.readClient = new HttpApiReadClient(binding, providerAccessResolver, fetchImpl);\n this.logDebug = this.logger.debugByType(`HttpApiRepositoryResource_${resourceType}`);\n this.logger.setDebugTypeLogging(`HttpApiRepositoryResource_${resourceType}`, false);\n\n for (const operation of (this.resourceConfiguration.operations ?? []) as AnyOperation[]) {\n try {\n const path = ResourcesConfig_OperationPathUtils.extractOperationRepositoryPath(operation as never);\n this.operationsMap.set(ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey(path), operation);\n } catch {\n // An operation with no repository-resolvable identity (no core op, no\n // resourceOperationLike) is simply not addressable through this transport. NOTE this is\n // MORE tolerant than the Mongo sibling's map construction (which propagates); tolerated\n // here because a custom operation with no repository routing is legal on a read-only\n // resource and every read-family core op resolves.\n }\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Dispatch (mirrors the sibling adapters: path → key → operationsMap → doOperation)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public async doByPath<T = any, U = any>(\n operationRepositoryPath: Parameters<typeof ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey>[0],\n executionContext: ExecutionContext<any>,\n id_or_ids_or_filter?: any,\n data?: U,\n options?: RepositoryOptions,\n ): Promise<T> {\n const key = ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey(operationRepositoryPath);\n return this.doByKey(key, executionContext, id_or_ids_or_filter, data, options);\n }\n\n public async doByKey<T = any, U = any>(\n operationRepositoryPathKey: string,\n executionContext: ExecutionContext<any>,\n id_or_ids_or_filter?: any,\n data?: U,\n options?: RepositoryOptions,\n ): Promise<T> {\n ResourcesConfig_OperationPathUtils.validateOperationRepositoryPathKey(operationRepositoryPathKey);\n const operation = this.operationsMap.get(operationRepositoryPathKey);\n if (!operation) {\n // The TYPE now agrees with the LABEL this site already carried. It declared\n // `ErrorCustomMessageReference.CONFIGURATION` with `reason: 'operation_not_found_on_http_api_repository'`\n // and typed the same call `NOT_FOUND` — the classification and the label contradicting each\n // other in one expression, where an author had clearly worked out which one was true.\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n reason: 'operation_not_found_on_http_api_repository',\n operationRepositoryPathKey,\n resourceType: this.resourceConfiguration.resourceIdentifier,\n },\n });\n }\n return this.doOperation(operation, executionContext, id_or_ids_or_filter, data, options);\n }\n\n public async doByExecutionContext<T = any>(\n executionContext: ExecutionContext<any>,\n data?: any,\n options?: RepositoryOptions,\n ): Promise<T> {\n const operation = executionContext.operation as unknown as AnyOperation;\n const idFromContext = executionContext.getContextResourceId(\n this.resourceConfiguration.resourceFieldIdentifier,\n );\n return this.doOperation(operation, executionContext, idFromContext, data, options);\n }\n\n private async doOperation(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n id_or_ids_or_filter?: any,\n data?: any,\n options?: RepositoryOptions,\n ): Promise<any> {\n const operationIdentifier = ResourceOperationsUtils.getCoreResourceOperationFromOperation(operation as never);\n if (!operationIdentifier || !READ_FAMILY.has(operationIdentifier)) {\n throw this.readOnlyRefusal(String(operationIdentifier ?? operation.operationIdentifier), executionContext);\n }\n switch (operationIdentifier) {\n case CoreResourceOperation.READ:\n if (Array.isArray(id_or_ids_or_filter)) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n context: { reason: 'read_received_id_array', resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n return this._doRead(operation, executionContext, id_or_ids_or_filter, options);\n case CoreResourceOperation.LIST: {\n const idsToList = typeof id_or_ids_or_filter === 'string' ? [id_or_ids_or_filter] : id_or_ids_or_filter;\n return this._doList(operation, executionContext, idsToList, options as ListCallOptions);\n }\n case CoreResourceOperation.COUNT:\n return this._doCount(operation, executionContext, (data?.filter as Record<string, unknown>) ?? {}, options);\n case CoreResourceOperation.SEARCH:\n return this._doSearch(operation, executionContext, data?.query || '', (data?.filter as Record<string, unknown>) ?? {}, {\n ...options,\n searchOptions: (options as { searchOptions?: Record<string, unknown> } | undefined)?.searchOptions ?? {},\n });\n default:\n throw this.readOnlyRefusal(String(operationIdentifier), executionContext);\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Public read-family members (operation resolution mirrors the siblings)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public async read<T = undefined>(\n executionContext: ExecutionContext<any>,\n id_or_filter: any,\n options?: RepositoryOptions,\n ): Promise<any> {\n const operation = this.findDefaultOperation(CoreResourceOperation.READ)\n ?? this.syntheticOperation(CoreResourceOperation.READ);\n return this._doRead(operation, executionContext, id_or_filter, options);\n }\n\n public async readForInternalScan<T = undefined>(\n executionContext: ExecutionContext<any>,\n id_or_filter: any,\n options?: RepositoryOptions,\n ): Promise<any> {\n return this._doRead(this.syntheticOperation(CoreResourceOperation.READ), executionContext, id_or_filter, options);\n }\n\n public async list<T = undefined>(\n executionContext: ExecutionContext<any>,\n ids_or_filter: any,\n options?: ListCallOptions,\n ): Promise<any> {\n const operation = this.findDefaultOperation(CoreResourceOperation.LIST);\n if (!operation) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n context: {\n reason: 'no default LIST operation declared on this resource',\n resourceType: this.resourceConfiguration.resourceIdentifier,\n },\n });\n }\n return this._doList(operation, executionContext, ids_or_filter, options);\n }\n\n public async listForInternalScan<T = undefined>(\n executionContext: ExecutionContext<any>,\n ids_or_filter: any,\n options?: ListCallOptions,\n ): Promise<any> {\n const operation = this.findDefaultOperation(CoreResourceOperation.LIST)\n ?? this.syntheticOperation(CoreResourceOperation.LIST);\n return this._doList(operation, executionContext, ids_or_filter, options);\n }\n\n public async search<T = any>(\n executionContext: ExecutionContext<any>,\n searchQuery: string,\n filter?: any,\n searchOptions?: any,\n options?: RepositoryOptions,\n ): Promise<Resources_PaginatedResult<T>> {\n const operation = this.findDefaultOperation(CoreResourceOperation.SEARCH);\n if (!operation) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n context: { reason: 'no default SEARCH operation declared', resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n return this._doSearch(operation, executionContext, searchQuery, filter ?? {}, { ...options, searchOptions: searchOptions ?? {} });\n }\n\n public async count(\n executionContext: ExecutionContext<any>,\n filter?: any,\n options?: RepositoryOptions,\n ): Promise<{ count: number }> {\n const operation = this.findDefaultOperation(CoreResourceOperation.COUNT)\n ?? this.syntheticOperation(CoreResourceOperation.COUNT);\n return this._doCount(operation, executionContext, filter ?? {}, options);\n }\n\n public supportsOperation(operationIdentifier: string): boolean {\n // Sibling-parity: capability means a DEFAULT variant exists (both platform adapters require\n // `isOperationDefault === true`), not merely that any variant mentions the identifier.\n return (this.resourceConfiguration.operations as AnyOperation[]).some(\n (operation) => operation.operationIdentifier === operationIdentifier && operation.isOperationDefault === true,\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Read-family execution\n // ─────────────────────────────────────────────────────────────────────────────\n\n private async _doRead(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n id_or_filter: any,\n options?: RepositoryOptions,\n ): Promise<Record<string, unknown> | null> {\n return this.guarded(executionContext, async () => {\n if (typeof id_or_filter === 'string') {\n return this.readByKeyWithScopeCheck(executionContext, id_or_filter, options);\n }\n\n // A filter of exactly `{ _id: <string> }` IS a key-addressed read — the write-integrity FK\n // probe's shape (`{ _id: fkValue }`, with `excludeContextualFilter: true`) — and must work\n // on BOTH dialects, so it routes through the key path rather than the collection query.\n const rawFilter = (id_or_filter as { filter?: Record<string, unknown> })?.filter\n ?? (id_or_filter as Record<string, unknown>) ?? {};\n const filterKeys = Object.keys(rawFilter);\n if (filterKeys.length === 1 && filterKeys[0] === '_id' && typeof rawFilter._id === 'string') {\n return this.readByKeyWithScopeCheck(executionContext, rawFilter._id, options);\n }\n\n // Filter-shaped READ (child fetches, business-key-less lookups): translate + take the\n // first row of a limit-1 collection query.\n const query = this.translate(executionContext, rawFilter, options, { limit: 1, offset: 0 });\n if (query.matchNothing) return null;\n const rows = await this.executeCollectionRead(executionContext, query, operation);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.READ, { rowCount: rows.length }); // site 2/5\n return rows.length > 0 ? projectHttpApiRemoteRow(this.binding, rows[0]) : null;\n });\n }\n\n /**\n * Key-addressed single-row read WITH the tenant-scope check (paper B T1 / requirement R4).\n *\n * A key-addressed read has no `$filter`, so on a SCOPE_FILTER_PUSHDOWN binding the scope\n * predicate is enforced POST-FETCH against the raw remote row: a row whose declared remote\n * scope field does not carry the caller's scope value answers `null` — exactly what the Mongo\n * sibling's conjoined contextual filter yields for an out-of-scope id. Skipped only by the\n * engine's own bypass (`excludeContextualFilter: true` — internal probes) and on\n * SINGLE_TENANT bindings, where scope is N/A by declared stance.\n */\n private async readByKeyWithScopeCheck(\n executionContext: ExecutionContext<any>,\n resourceId: string,\n options?: RepositoryOptions,\n ): Promise<Record<string, unknown> | null> {\n // Assert decodability BEFORE the remote call: an id this binding could not have synthesized\n // is a VALIDATION refusal, never a silent 404.\n resolveHttpApiKeyComponents(this.binding, resourceId);\n\n // Resolve the tenant scope BEFORE spending the remote call, so a scope-less pushdown context\n // refuses without touching the target — same ordering as the translation boundary.\n let requiredScope: { remoteField: string; value: string } | undefined;\n if (\n options?.excludeContextualFilter !== true\n && this.binding.tenancy.stance === HttpApiTenancyStance.SCOPE_FILTER_PUSHDOWN\n ) {\n const remoteScopeField = this.binding.tenancy.remoteScopeField;\n const primaryScopeFieldIdentifier = this.resourceConfiguration.resourcePrimaryScope\n ? PRIMARY_SCOPE_TO_FIELD_IDENTIFIER[this.resourceConfiguration.resourcePrimaryScope as keyof typeof PRIMARY_SCOPE_TO_FIELD_IDENTIFIER]\n : undefined;\n const scopeValue = primaryScopeFieldIdentifier\n ? executionContext.getContextResourceId(primaryScopeFieldIdentifier as never)\n : undefined;\n if (typeof scopeValue !== 'string' || scopeValue.length === 0) {\n // Same fail-closed refusal as the translation boundary: no scope, no remote row.\n throw new HttpApiTranslationRefusal(\n `Resource '${this.resourceConfiguration.resourceIdentifier}' declares SCOPE_FILTER_PUSHDOWN tenancy but the execution context carries no `\n + `'${String(primaryScopeFieldIdentifier)}' scope value — refusing an unscoped key-addressed read.`,\n );\n }\n requiredScope = { remoteField: remoteScopeField, value: scopeValue };\n }\n\n const body = await this.executeKeyAddressedRead(executionContext, resourceId);\n // Site 1/5: a remote round-trip happened whether or not a row came back (or survives the\n // scope check below) — the trail records EXTERNAL access, not what was served.\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.READ, {\n resourceId, rowCount: body === null ? 0 : 1,\n });\n if (body === null) return null;\n const rawRow = body as Record<string, unknown>;\n\n if (\n requiredScope !== undefined\n && String(rawRow[requiredScope.remoteField]) !== requiredScope.value\n ) {\n // Out-of-scope row: indistinguishable from \"no row\" for this caller, by design — exactly\n // what the Mongo sibling's conjoined contextual filter yields for an out-of-scope id.\n return null;\n }\n\n return projectHttpApiRemoteRow(this.binding, rawRow);\n }\n\n private async _doList(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n ids_or_filter: any,\n options?: ListCallOptions,\n ): Promise<any> {\n return this.guarded(executionContext, async () => {\n const paginated = options?.paginated ?? false;\n const listOptions = options?.listOptions;\n const hasPagination = listOptions?.page !== undefined || listOptions?.limit !== undefined;\n\n // Sibling-parity page math (measured: default page size 20, ceiling from the operation).\n const maxLimit = (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit || 100;\n const page = hasPagination ? Math.max(1, listOptions?.page || 1) : 1;\n const limit = Math.min(maxLimit, Math.max(1, listOptions?.limit || 20));\n const bounded = paginated || hasPagination;\n\n const filter = Array.isArray(ids_or_filter)\n ? { _id: { $in: ids_or_filter } }\n : (ids_or_filter as Record<string, unknown>) ?? {};\n\n const query = this.translate(executionContext, filter, options, {\n // An unpaginated internal list against a REMOTE system is still bounded by the\n // binding's page ceiling — \"the whole entity set\" is never a single call (paper B, T5).\n limit: bounded ? limit : maxLimit,\n offset: bounded ? (page - 1) * limit : 0,\n }, listOptions?.sort, (operation as { sortFields?: readonly string[] }).sortFields);\n if (!bounded) {\n // The sibling's unpaginated list returns the FULL set; this adapter caps at the ceiling.\n // Named once so a truncated internal scan never reads as \"covered everything\".\n this.logDebug(\n `Unpaginated internal LIST on '${this.resourceConfiguration.resourceIdentifier}' is capped at ${maxLimit} remote rows (paper B, T5).`,\n );\n }\n\n if (query.matchNothing) {\n return paginated\n ? { data: [], pagination: { page, limit, total: 0, totalPages: 0 } }\n : [];\n }\n\n if (!paginated) {\n const rows = await this.executeCollectionRead(executionContext, query, operation);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.LIST, { rowCount: rows.length }); // site 3/5\n return rows.map((row) => projectHttpApiRemoteRow(this.binding, row));\n }\n\n const { rows, total } = await this.executeCollectionReadWithTotal(executionContext, query, operation);\n // Site 3/5 (paginated shape): the list and the count that totals its envelope are ONE access.\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.LIST, { rowCount: rows.length });\n return {\n data: rows.map((row) => projectHttpApiRemoteRow(this.binding, row)),\n pagination: { page, limit, total, totalPages: limit > 0 ? Math.ceil(total / limit) : 1 },\n };\n });\n }\n\n private async _doCount(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n filter: Record<string, unknown>,\n options?: RepositoryOptions,\n ): Promise<{ count: number }> {\n return this.guarded(executionContext, async () => {\n const query = this.translate(executionContext, filter, options);\n if (query.matchNothing) return { count: 0 };\n const count = await this.executeCountRead(executionContext, query, operation);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.COUNT, { rowCount: count }); // site 4/5\n return { count };\n });\n }\n\n private async _doSearch(\n operation: AnyOperation,\n executionContext: ExecutionContext<any>,\n searchQuery: string,\n filter: Record<string, unknown>,\n options: RepositoryOptions & { searchOptions: Record<string, unknown> },\n ): Promise<Resources_PaginatedResult<any>> {\n return this.guarded(executionContext, async () => {\n const searchOptions = options.searchOptions as { page?: number; limit?: number; sort?: Record<string, 1 | -1> };\n const maxLimit = (operation as { maxPaginatedResultPerPageLimit?: number }).maxPaginatedResultPerPageLimit || 50;\n const page = Math.max(1, searchOptions.page || 1);\n const limit = Math.min(maxLimit, Math.max(1, searchOptions.limit || 20));\n\n const query = this.translate(\n executionContext, filter, options,\n { limit, offset: (page - 1) * limit },\n searchOptions.sort,\n (operation as { sortFields?: readonly string[] }).sortFields,\n );\n\n if (searchQuery.trim().length > 0) {\n const searchableFields = ((operation as { searchableFields?: unknown[] }).searchableFields ?? [])\n .filter((entry): entry is string => typeof entry === 'string');\n if (searchableFields.length === 0) {\n throw new HttpApiTranslationRefusal(\n 'SEARCH on an HTTP_API resource requires declared own-field searchableFields (the Mongo $text fallback and relational descriptors have no remote translation — paper B).',\n );\n }\n const rawOptions = (operation as { searchableOptions?: { caseSensitive?: boolean; fullMatchOnly?: boolean } }).searchableOptions;\n query.search = {\n localFields: searchableFields,\n query: searchQuery,\n caseSensitive: rawOptions?.caseSensitive === true,\n fullMatchOnly: rawOptions?.fullMatchOnly === true,\n };\n }\n\n if (query.matchNothing) {\n return { data: [], pagination: { page, limit, total: 0, totalPages: 0 } };\n }\n const { rows, total } = await this.executeCollectionReadWithTotal(executionContext, query, operation, CoreResourceOperation.SEARCH);\n this.recordReadThroughAccess(executionContext, CoreResourceOperation.SEARCH, { rowCount: rows.length }); // site 5/5\n return {\n data: rows.map((row) => projectHttpApiRemoteRow(this.binding, row)),\n pagination: { page, limit, total, totalPages: limit > 0 ? Math.ceil(total / limit) : 1 },\n };\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Remote execution per dialect\n // ─────────────────────────────────────────────────────────────────────────────\n\n private translate(\n executionContext: ExecutionContext<any>,\n filter: Record<string, unknown>,\n options: RepositoryOptions | undefined,\n pagination?: { limit: number; offset: number },\n sort?: Record<string, 1 | -1>,\n declaredSortFields?: readonly string[],\n ): HttpApiTranslatedQuery {\n return translateHttpApiReadInputs({\n executionContext,\n binding: this.binding,\n resourceConfiguration: this.resourceConfiguration,\n filter,\n excludeContextualFilter: options?.excludeContextualFilter,\n sort,\n declaredSortFields,\n pagination,\n });\n }\n\n /**\n * The ONE place a REST_JSON read member becomes a compilable spec — and, since S3a (#331), the\n * one place a CATALOGUE REFERENCE is resolved into one.\n *\n * Async because a reference loads the provider's catalogue, which is lazy by contract. All four\n * call sites were already inside async methods, so this cost nothing at the boundary; what it\n * buys is that a reference is resolved at the same chokepoint an inline spec is read, so no\n * compiler and no caller ever learns which form the binding used.\n *\n * Resolved per call rather than cached here: the resolver memoizes the CATALOGUE (which is the\n * expensive part), and caching the projected spec as well would put a second copy of provider\n * state in every repository instance for no measurable gain.\n */\n private async restOperationSpec(member: 'read' | 'list' | 'count' | 'search'): Promise<any> {\n if (this.binding.dialect !== HttpApiTransportDialect.REST_JSON) return undefined;\n const declaration = this.binding.operations[member];\n if (!declaration) {\n throw new RestJsonTranslationRefusal(\n `This REST_JSON binding declares no '${member}' operation — the member is refused for this binding, never emulated.`,\n );\n }\n if (!isHttpApiRestOperationReference(declaration)) return declaration;\n\n if (typeof this.providerAccessResolver.resolveProviderOperation !== 'function') {\n // Named rather than a TypeError three frames down: an operator can act on this sentence.\n throw new RestJsonTranslationRefusal(\n `The '${member}' member references provider operation '${declaration.providerOperationId}', and the configured provider-access resolver `\n + 'cannot load a provider catalogue. Wire the production resolver, or state the operation inline on the binding.',\n );\n }\n const operation = await this.providerAccessResolver.resolveProviderOperation(\n this.binding.providerRef, declaration.providerOperationId, declaration.domain,\n );\n return projectProviderOperationOntoReadSurface({\n reference: declaration, operation, providerRef: this.binding.providerRef, member,\n });\n }\n\n private async executeKeyAddressedRead(\n executionContext: ExecutionContext<any>,\n resourceId: string,\n ): Promise<unknown | null> {\n let body: unknown;\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataKeyAddressedRead(this.binding, resourceId);\n const response = await this.readClient.odataGetOrNull(executionContext, compiled);\n if (response === null) return null;\n body = response;\n } else if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n // `read([[id]])` answers an ARRAY; empty = the documented \"no such row\".\n const rows = this.expectRowArray(\n await this.readClient.odooExecuteKw(executionContext, compileOdooKeyAddressedRead(this.binding, resourceId)),\n \"the Odoo 'read' result array\",\n );\n return rows.length > 0 ? rows[0] : null;\n } else {\n const spec = await this.restOperationSpec('read');\n const compiled = compileRestJsonKeyAddressedRead(this.binding, spec, resourceId);\n const response = await this.readClient.restJsonReadOrNull(executionContext, compiled);\n if (response === null) return null;\n body = response;\n }\n return body;\n }\n\n private async executeCollectionRead(\n executionContext: ExecutionContext<any>,\n query: HttpApiTranslatedQuery,\n _operation: AnyOperation,\n member: 'list' | 'search' = 'list',\n ): Promise<Array<Record<string, unknown>>> {\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataCollectionRead(this.binding, query);\n const body = await this.readClient.odataGet(executionContext, compiled);\n return this.expectRowArray((body as { value?: unknown })?.value, \"the OData 'value' array\");\n }\n if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n return this.expectRowArray(\n await this.readClient.odooExecuteKw(executionContext, compileOdooCollectionRead(this.binding, query)),\n \"the Odoo 'search_read' result array\",\n );\n }\n const spec = await this.restOperationSpec(member === 'search' ? 'search' : 'list');\n const compiled = compileRestJsonCollectionRead(this.binding, spec, query);\n const body = await this.readClient.restJson(executionContext, compiled);\n return this.expectRowArray(resolveHttpApiResultPath(body, compiled.resultPath), `the declared resultPath '${compiled.resultPath ?? '(body)'}'`);\n }\n\n private async executeCollectionReadWithTotal(\n executionContext: ExecutionContext<any>,\n query: HttpApiTranslatedQuery,\n operation: AnyOperation,\n searchMember?: CoreResourceOperation.SEARCH,\n ): Promise<{ rows: Array<Record<string, unknown>>; total: number }> {\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataCollectionRead(this.binding, query, { count: true });\n const body = await this.readClient.odataGet(executionContext, compiled) as Record<string, unknown>;\n const rows = this.expectRowArray(body?.value, \"the OData 'value' array\");\n const total = body?.['@odata.count'];\n if (typeof total !== 'number') {\n throw new HttpApiTranslationRefusal(\n \"A paginated envelope needs a total, but the target answered no '@odata.count' — the target does not honor $count=true; only non-paginated reads are available against it.\",\n );\n }\n return { rows, total };\n }\n // Resolve the count declaration FIRST (REST_JSON only — Odoo's search_count is generic):\n // a paginated envelope needs a total, and an undeclared count operation must refuse before\n // any remote list call is spent.\n if (this.binding.dialect === HttpApiTransportDialect.REST_JSON) {\n await this.restOperationSpec('count');\n }\n const rows = await this.executeCollectionRead(executionContext, query, operation, searchMember ? 'search' : 'list');\n const total = await this.executeCountRead(executionContext, { ...query, pagination: undefined, sort: [] }, operation);\n return { rows, total };\n }\n\n private async executeCountRead(\n executionContext: ExecutionContext<any>,\n query: HttpApiTranslatedQuery,\n _operation: AnyOperation,\n ): Promise<number> {\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n const compiled = compileODataCountRead(this.binding, query);\n const body = await this.readClient.odataGet(executionContext, compiled);\n const count = typeof body === 'number' ? body : Number(body);\n if (!Number.isFinite(count)) {\n throw new HttpApiTranslationRefusal(`The OData /$count endpoint answered a non-numeric body (${typeof body}).`);\n }\n return count;\n }\n if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n const result = await this.readClient.odooExecuteKw(executionContext, compileOdooCountRead(this.binding, query));\n if (typeof result !== 'number' || !Number.isFinite(result)) {\n throw new HttpApiRemoteContractError(`Odoo 'search_count' answered a non-numeric result (${typeof result}).`);\n }\n return result;\n }\n const spec = await this.restOperationSpec('count');\n const compiled = compileRestJsonCollectionRead(this.binding, spec, { ...query, pagination: undefined });\n const body = await this.readClient.restJson(executionContext, compiled);\n const payload = resolveHttpApiResultPath(body, compiled.resultPath);\n const count = typeof payload === 'number' ? payload : Number(payload);\n if (!Number.isFinite(count)) {\n throw new HttpApiTranslationRefusal(\n `The declared count operation answered a non-numeric payload at '${compiled.resultPath ?? '(body)'}'.`,\n );\n }\n return count;\n }\n\n // ── Wire mechanics: see HttpApiReadClient (PR-29 — one implementation, two consumers) ──\n\n // ── Read-through audit trail (ETL D8/R6) ─────────────────────────────────────\n\n /**\n * Record one read-through access — the row that keeps attribution alive through the shared\n * service principal (R12). Fire-and-forget and feature-detected per the house pattern\n * (`recordCrossTenantAdministrativeAccess`): a partial audit binding or a store failure must\n * never fail the read it observes. Emitted ONLY after a remote round-trip actually happened —\n * match-nothing short-circuits touch no external system and record nothing.\n *\n * Every emission goes through {@link emitAuditObservation}, so a lost one lands on\n * `audit_observation_dropped_total` instead of nowhere. The feature detection therefore decides an\n * ARGUMENT rather than an early return: handing the seam `undefined` is how this site reports\n * `SERVICE_UNAVAILABLE`, the loss shape that reaches no `_createAuditLog` and used to leave nothing\n * behind at all. An early return would restore that silence — and the silence is expensive here,\n * because ATTRIBUTION is the whole point of the row: without it the third party's own logs show\n * one shared service principal and nothing anywhere resolves it back to a person.\n *\n * Emission lives at the ADAPTER, deliberately inverting the services-tier precedent\n * (`recordPlatformDirectoryAccess`'s \"the repository exists once per adapter\" argument):\n * HTTP_API has exactly ONE adapter, and it is the only tier that witnesses EVERY remote access\n * — repository-direct probes (write-integrity's `readForInternalScan`) never pass the\n * services tier at all. Call sites, enumerated: `readByKeyWithScopeCheck`, `_doRead`'s\n * filter branch, `_doList` (both shapes), `_doCount`, `_doSearch`.\n *\n * assurance-control: WILDO.AUDIT.ATTRIBUTION — external read-through access recorded with the\n * real initiating user carried through the shared service principal.\n */\n private recordReadThroughAccess(\n executionContext: ExecutionContext<any>,\n operationIdentifier: CoreResourceOperation,\n extras: { resourceId?: string; rowCount?: number } = {},\n ): void {\n let emit: (() => unknown) | undefined;\n try {\n const auditLogsService = this.auditLogsResolver?.();\n if (typeof auditLogsService?.logHttpApiReadThroughAccess === 'function') {\n const initiatorIds = (executionContext as { initiatorIds?: { userId?: string; organizationId?: string } }).initiatorIds;\n const data = {\n resourceType: String(this.resourceConfiguration.resourceIdentifier),\n operationIdentifier: String(operationIdentifier),\n providerRef: this.binding.providerRef,\n remoteEntityRef: this.binding.entityRef,\n dialect: this.binding.dialect,\n initiatorUserId: initiatorIds?.userId,\n executionType: (executionContext as { executionType?: string }).executionType,\n organizationId: initiatorIds?.organizationId\n ?? executionContext.getContextResourceId?.('organizationId' as never),\n ...extras,\n };\n emit = (): unknown => auditLogsService.logHttpApiReadThroughAccess(data, executionContext);\n }\n } catch {\n // A thunk or a context accessor that throws leaves `emit` undefined, so the observation is\n // reported as UNAVAILABLE rather than swallowed. The one thing this method may never do is\n // fail the read it observes.\n }\n\n emitAuditObservation({\n observation: AuditObservationKind.HTTP_API_READ_THROUGH_ACCESS,\n emit,\n metricsResolver: this.metricsResolver,\n logger: this.logger,\n // Enough to name WHICH read went unrecorded — the resource, the operation and the remote\n // entity are what a reviewer would reconstruct the missing attribution row from.\n context: {\n observedResourceType: String(this.resourceConfiguration.resourceIdentifier),\n observedOperationIdentifier: String(operationIdentifier),\n observedProviderRef: this.binding.providerRef,\n observedRemoteEntityRef: this.binding.entityRef,\n },\n });\n }\n\n // ── D6 stance 6b: the declared external-erasure door ─────────────────────────\n\n /**\n * The ONE write slice 1 sanctions (the stance JSDoc's \"a single declared write\"): delete every\n * remote row linked to ONE erased subject through the binding's DECLARED erasure operation.\n * Callable only by the subject-erasure external effect — every generic write member of this\n * repository stays refused (D3), and the boot-time B1 sweep keeps lifecycle cascades away from\n * HTTP_API children, so this door cannot be reached by an ordinary teardown.\n *\n * ## Identity-less by design\n *\n * The internal context below is inert on this path for translation, verified per consumer:\n * translation runs `excludeContextualFilter` (an erasure must reach the subject's rows in EVERY\n * tenant — the FK equality is the confinement).\n *\n * It is NOT inert for access. This said `resolveAccess` \"ignores the context for\n * SERVICE_PRINCIPAL\", and since #333 the context is what NAMES the owner whose account a\n * tenant-owned or user-owned binding spends. An erasure sweep runs on an internal context, so a\n * binding that declares anything but an application-owned connection refuses here rather than\n * erasing under the wrong account — which is the fail-closed direction, and is why the refusal is\n * worth meeting as an explicit error rather than a silent fallback.\n * Attribution lives in the `HTTP_API_EXTERNAL_ERASURE` audit row the calling effect emits;\n * discovery reads here deliberately do NOT emit read-through events (the read exists only to\n * address the deletion the event already records — double-recording would be noise with no\n * initiator).\n *\n * ## Discovery deletes as it goes\n *\n * Each iteration re-queries PAGE ONE (offset 0): deleting shifts pagination windows, so paging\n * forward would skip every second page. A page whose leading row survives two consecutive\n * iterations means the target is not actually deleting — refused loudly rather than looping.\n *\n * ## Failure semantics\n *\n * Throws {@link HttpApiExternalErasureError} carrying what already applied. A retried transport\n * call that landed remotely before its response was lost can surface as an Odoo `unlink` error\n * on missing ids — reported as PARTIAL by the effect, and self-healing on the next erasure run\n * (discovery finds only survivors; a remote 404 on a key-addressed DELETE counts as already\n * gone for the same reason).\n */\n public async executeDeclaredSubjectLinkErasure(\n localFkField: string,\n subjectId: string,\n ): Promise<{ deletedCount: number }> {\n if (this.binding.erasure.stance !== HttpApiErasureStance.EXTERNAL_ERASURE_OPERATION) {\n throw new HttpApiTranslationRefusal(\n `Resource '${String(this.resourceConfiguration.resourceIdentifier)}' declares erasure stance '${this.binding.erasure.stance}' — the external-erasure door is only defined for EXTERNAL_ERASURE_OPERATION (D6 stance 6b).`,\n );\n }\n\n const executionContext = this.systemErasureExecutionContext();\n let deletedCount = 0;\n let previousLeadingId: string | undefined;\n\n for (let iteration = 0; iteration < HttpApiResourceRepositoryBackendService.ERASURE_MAX_DISCOVERY_ITERATIONS; iteration++) {\n let rowIds: string[];\n try {\n const query = this.translate(\n executionContext,\n { [localFkField]: subjectId },\n { excludeContextualFilter: true },\n { limit: HttpApiResourceRepositoryBackendService.ERASURE_DISCOVERY_PAGE, offset: 0 },\n );\n const rows = await this.executeCollectionRead(\n executionContext,\n query,\n this.syntheticOperation(CoreResourceOperation.LIST),\n );\n rowIds = rows.map((row) => String(projectHttpApiRemoteRow(this.binding, row)._id));\n } catch (error) {\n throw new HttpApiExternalErasureError(\n `External-erasure discovery failed for '${String(this.resourceConfiguration.resourceIdentifier)}' (link field '${localFkField}'): ${error instanceof Error ? error.message : String(error)}`,\n deletedCount,\n error,\n );\n }\n\n if (rowIds.length === 0) {\n return { deletedCount };\n }\n if (rowIds[0] === previousLeadingId) {\n throw new HttpApiExternalErasureError(\n `The target acknowledged the delete of row '${rowIds[0]}' but discovery still returns it — the declared erasure operation is not actually deleting; refusing to loop.`,\n deletedCount,\n );\n }\n previousLeadingId = rowIds[0];\n\n try {\n await this.deleteRemoteRowsByIds(executionContext, rowIds);\n } catch (error) {\n // A mid-page per-row failure carries what THAT page already applied — losing it would\n // report a PARTIAL as a clean FAILED and invite a retry the registry believes is safe.\n const appliedInFailedPage = error instanceof HttpApiExternalErasureError ? error.deletedCount : 0;\n throw new HttpApiExternalErasureError(\n `The declared erasure operation failed for '${String(this.resourceConfiguration.resourceIdentifier)}' after ${deletedCount + appliedInFailedPage} deletion(s): ${error instanceof Error ? error.message : String(error)}`,\n deletedCount + appliedInFailedPage,\n error,\n );\n }\n deletedCount += rowIds.length;\n }\n\n throw new HttpApiExternalErasureError(\n `External erasure exceeded ${HttpApiResourceRepositoryBackendService.ERASURE_MAX_DISCOVERY_ITERATIONS} discovery pages for one subject — refusing an unbounded remote loop.`,\n deletedCount,\n );\n }\n\n /**\n * Best-effort remote count of rows linked to one subject — the stance-6c acknowledgement's\n * evidence (`remainingRowCount` on the CRITICAL audit row). Throws on any refusal or transport\n * failure; the caller records ABSENCE rather than a fabricated zero.\n */\n public async countRowsLinkedToSubject(localFkField: string, subjectId: string): Promise<number> {\n const executionContext = this.systemErasureExecutionContext();\n const query = this.translate(\n executionContext,\n { [localFkField]: subjectId },\n { excludeContextualFilter: true },\n );\n return this.executeCountRead(executionContext, query, this.syntheticOperation(CoreResourceOperation.COUNT));\n }\n\n private static readonly ERASURE_DISCOVERY_PAGE = 50;\n private static readonly ERASURE_MAX_DISCOVERY_ITERATIONS = 200;\n\n /**\n * The minimal internal context the erasure path runs under. Structurally an ExecutionContext,\n * deliberately identity-less (a system erasure carries no request identity — the same doctrine\n * as the file-teardown gates); every consumer on this path is verified inert against it, per\n * the door's JSDoc.\n */\n private systemErasureExecutionContext(): ExecutionContext<any> {\n return {\n getContextResourceId: () => undefined,\n getContextResourceIds: () => new Map(),\n operation: undefined,\n } as unknown as ExecutionContext<any>;\n }\n\n /** Delete one discovered page of rows through the DECLARED erasure operation, per dialect. */\n private async deleteRemoteRowsByIds(\n executionContext: ExecutionContext<any>,\n rowIds: readonly string[],\n ): Promise<void> {\n if (this.binding.dialect === HttpApiTransportDialect.ODOO_JSONRPC) {\n // Odoo's canonical delete is ONE batched `unlink [[ids]]` per page.\n const integerIds = rowIds.map((rowId) => Number(resolveHttpApiKeyComponents(this.binding, rowId)[0]));\n await this.readClient.odooExecuteKw(executionContext, compileOdooCanonicalDelete(integerIds));\n return;\n }\n\n if (this.binding.dialect === HttpApiTransportDialect.ODATA) {\n // OData's canonical delete: `DELETE /EntitySet(key)` per row; 404 = already gone. A per-row\n // failure surfaces WITH the count that already applied in this page (PARTIAL accuracy).\n let appliedInPage = 0;\n for (const rowId of rowIds) {\n const compiled = compileODataKeyAddressedRead(this.binding, rowId);\n try {\n await this.readClient.odataDeleteByPath(executionContext, compiled.path);\n } catch (error) {\n throw new HttpApiExternalErasureError(\n `Canonical DELETE failed for row '${rowId}': ${error instanceof Error ? error.message : String(error)}`,\n appliedInPage,\n error,\n );\n }\n appliedInPage += 1;\n }\n return;\n }\n\n // REST_JSON: the EXPLICIT declared operation (dialect coherence guarantees the form).\n const declaredOperation = this.binding.erasure.stance === HttpApiErasureStance.EXTERNAL_ERASURE_OPERATION\n ? this.binding.erasure.operation\n : undefined;\n if (!declaredOperation || 'useCanonicalDelete' in declaredOperation) {\n throw new HttpApiTranslationRefusal(\n 'A REST_JSON external erasure needs the EXPLICIT declared operation spec — the boot-time dialect coherence should have refused this binding.',\n );\n }\n const spec: HttpApiErasureOperationSpec = declaredOperation;\n let appliedInPage = 0;\n for (const rowId of rowIds) {\n const compiled = compileRestJsonDeclaredErasure(this.binding, spec, rowId);\n try {\n await this.readClient.restDeclaredErasureCall(executionContext, compiled);\n } catch (error) {\n throw new HttpApiExternalErasureError(\n `Declared erasure operation failed for row '${rowId}': ${error instanceof Error ? error.message : String(error)}`,\n appliedInPage,\n error,\n );\n }\n appliedInPage += 1;\n }\n }\n\n private expectRowArray(candidate: unknown, where: string): Array<Record<string, unknown>> {\n if (!Array.isArray(candidate)) {\n // A remote-CONTRACT breach, not a translation refusal: the query was legal, the answer is not.\n throw new HttpApiRemoteContractError(`The remote response carries no row array at ${where}.`);\n }\n return candidate as Array<Record<string, unknown>>;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Error projection + refusals\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Map the module-level error vocabulary into the engine's error projection, once. */\n private async guarded<T>(executionContext: ExecutionContext<any>, work: () => Promise<T>): Promise<T> {\n try {\n return await work();\n } catch (error) {\n if (error instanceof HttpApiTranslationRefusal || error instanceof RestJsonTranslationRefusal || error instanceof HttpApiRemoteContractError) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { reason: 'http_api_untranslatable_shape', message: error.message, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n if (error instanceof HttpApiProviderAccessError) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { reason: 'http_api_provider_access_unresolvable', message: error.message, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n if (error instanceof HttpApiTransportError) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { reason: 'http_api_remote_call_failed', message: error.message, ...error.detail, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n // Codec errors (undecodable / non-canonical / missing key components) are the shared\n // authority's TYPED refusal: LOUD VALIDATION by design, classified by instance.\n if (error instanceof HttpApiResourceIdError) {\n throw this.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.RESOURCE_ID_VALIDATION_FAILED,\n context: { reason: 'http_api_id_refused', message: error.message, resourceType: this.resourceConfiguration.resourceIdentifier },\n });\n }\n throw error;\n }\n }\n\n private readOnlyRefusal(member: string, executionContext?: ExecutionContext<any>): ReturnType<ErrorBuilderBackendService['buildError']> {\n return this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n reason: 'http_api_repository_member_unsupported',\n member,\n message: `'${member}' is not available on an HTTP_API-backed resource in slice 1 (read-only — ETL decision D3/D10). `\n + 'Reads: read/list/count/search and the internal-scan variants.',\n resourceType: this.resourceConfiguration.resourceIdentifier,\n },\n });\n }\n\n private findDefaultOperation(operationIdentifier: CoreResourceOperation): AnyOperation | undefined {\n return (this.resourceConfiguration.operations as AnyOperation[]).find(\n (operation) => operation.operationIdentifier === operationIdentifier && operation.isOperationDefault === true,\n );\n }\n\n private syntheticOperation(operationIdentifier: CoreResourceOperation): AnyOperation {\n return {\n operationIdentifier,\n variantType: ResourceOperationVariantType.REPOSITORY_ONLY,\n isOperationDefault: true,\n } as unknown as AnyOperation;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // The refused remainder of the contract (D2: implemented, never omitted; D3: read-only)\n // ─────────────────────────────────────────────────────────────────────────────\n\n public async create(): Promise<never> { throw this.readOnlyRefusal('create'); }\n public async createMany(): Promise<never> { throw this.readOnlyRefusal('createMany'); }\n public async update(): Promise<never> { throw this.readOnlyRefusal('update'); }\n public async updateMany(): Promise<never> { throw this.readOnlyRefusal('updateMany'); }\n public async delete(): Promise<never> { throw this.readOnlyRefusal('delete'); }\n public async deleteMany(): Promise<never> { throw this.readOnlyRefusal('deleteMany'); }\n public async atomicIncrementField(): Promise<never> { throw this.readOnlyRefusal('atomicIncrementField'); }\n public async atomicConditionalSet(): Promise<never> { throw this.readOnlyRefusal('atomicConditionalSet'); }\n public async atomicGuardedMutation(): Promise<never> { throw this.readOnlyRefusal('atomicGuardedMutation'); }\n public async updateManyByRawFilter(): Promise<never> { throw this.readOnlyRefusal('updateManyByRawFilter'); }\n public async deleteManyByRawFilter(): Promise<never> { throw this.readOnlyRefusal('deleteManyByRawFilter'); }\n public async insertRawDocument(): Promise<never> { throw this.readOnlyRefusal('insertRawDocument'); }\n public async findManyByRawFilter(): Promise<never> { throw this.readOnlyRefusal('findManyByRawFilter (raw filters are refused — T-set only, paper B R1)'); }\n public async countByRawFilter(): Promise<never> { throw this.readOnlyRefusal('countByRawFilter (raw filters are refused — T-set only, paper B R1)'); }\n public async readUnscopedByKey(): Promise<never> { throw this.readOnlyRefusal('readUnscopedByKey (raw filters are refused — T-set only, paper B R1)'); }\n public async findScopeRelatedTargetIds(): Promise<never> { throw this.readOnlyRefusal('findScopeRelatedTargetIds (an HTTP_API resource cannot serve as a scope junction in slice 1)'); }\n public async aggregateField(): Promise<never> { throw this.readOnlyRefusal('aggregateField (remote aggregation is refused — ETL decision D10)'); }\n public async findByBusinessKey(): Promise<never> { throw this.readOnlyRefusal('findByBusinessKey (data-seeding never targets an HTTP_API resource)'); }\n public async findManyByBusinessKeys(): Promise<never> { throw this.readOnlyRefusal('findManyByBusinessKeys (data-seeding never targets an HTTP_API resource)'); }\n public async upsertByBusinessKey(): Promise<never> { throw this.readOnlyRefusal('upsertByBusinessKey'); }\n public async upsertByFilter(): Promise<never> { throw this.readOnlyRefusal('upsertByFilter'); }\n public async updateSeedMetadata(): Promise<never> { throw this.readOnlyRefusal('updateSeedMetadata'); }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projecting a PROVIDER operation onto an ETL read-surface spec (S3a, #331).
|
|
3
|
+
*
|
|
4
|
+
* This is the executable half of the convergence recorded on
|
|
5
|
+
* {@link HttpApiRestOperationReferenceSchema}: a binding names an operation in the provider's own
|
|
6
|
+
* catalogue, and this turns that operation plus the binding's resource-shaped half into the
|
|
7
|
+
* {@link HttpApiRestOperationSpec} every REST_JSON compiler already consumes. Nothing downstream
|
|
8
|
+
* changes — the compilers never learn that a reference existed.
|
|
9
|
+
*
|
|
10
|
+
* A pure function over data, so the interesting refusals are testable without a provider.
|
|
11
|
+
*/
|
|
12
|
+
import { type HttpApiRestOperationReference, type HttpApiRestOperationSpec } from '@wildo-ai/saas-models/external-data';
|
|
13
|
+
import { type ProviderRestOperation } from '@wildo-ai/external-connectors-models';
|
|
14
|
+
/** Why a referenced provider operation cannot serve an ETL read member. */
|
|
15
|
+
export declare enum HttpApiRestOperationReferenceRefusalKind {
|
|
16
|
+
/** The operation MUTATES the vendor; a read surface may never reference one. */
|
|
17
|
+
OPERATION_IS_A_WRITE = "OPERATION_IS_A_WRITE",
|
|
18
|
+
/** The operation's method is outside the read-surface vocabulary (GET/POST). */
|
|
19
|
+
METHOD_NOT_READABLE = "METHOD_NOT_READABLE",
|
|
20
|
+
/** The reference and the operation disagree about the key: named/absent/unknown parameter. */
|
|
21
|
+
KEY_PARAMETER_INCOHERENT = "KEY_PARAMETER_INCOHERENT",
|
|
22
|
+
/** The operation's path has a token the ETL has no value for. */
|
|
23
|
+
UNSATISFIED_PATH_TOKEN = "UNSATISFIED_PATH_TOKEN"
|
|
24
|
+
}
|
|
25
|
+
export declare class HttpApiRestOperationReferenceRefusal extends Error {
|
|
26
|
+
readonly detail: {
|
|
27
|
+
readonly kind: HttpApiRestOperationReferenceRefusalKind;
|
|
28
|
+
readonly providerRef: string;
|
|
29
|
+
readonly providerOperationId: string;
|
|
30
|
+
readonly member: string;
|
|
31
|
+
};
|
|
32
|
+
constructor(message: string, detail: {
|
|
33
|
+
readonly kind: HttpApiRestOperationReferenceRefusalKind;
|
|
34
|
+
readonly providerRef: string;
|
|
35
|
+
readonly providerOperationId: string;
|
|
36
|
+
readonly member: string;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export interface ProjectRestOperationReferenceInput {
|
|
40
|
+
reference: HttpApiRestOperationReference;
|
|
41
|
+
operation: ProviderRestOperation;
|
|
42
|
+
providerRef: string;
|
|
43
|
+
/** Which lifecycle member is being resolved — `read` is the only key-addressed one. */
|
|
44
|
+
member: 'read' | 'list' | 'count' | 'search';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build the read-surface spec a REST_JSON compiler consumes.
|
|
48
|
+
*
|
|
49
|
+
* Reads only what an ETL read can honour, and refuses the rest by NAME rather than degrading:
|
|
50
|
+
* every refusal here is an authoring mistake somebody must fix, and a silently degraded read
|
|
51
|
+
* surface (a filter quietly dropped, a write quietly performed) is the failure this whole lane is
|
|
52
|
+
* built to make impossible.
|
|
53
|
+
*/
|
|
54
|
+
export declare function projectProviderOperationOntoReadSurface(input: ProjectRestOperationReferenceInput): HttpApiRestOperationSpec;
|
|
55
|
+
//# sourceMappingURL=http-api-rest-operation-reference.backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-api-rest-operation-reference.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAA8D,KAAK,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE9I,2EAA2E;AAC3E,oBAAY,wCAAwC;IAClD,gFAAgF;IAChF,oBAAoB,yBAAyB;IAC7C,gFAAgF;IAChF,mBAAmB,wBAAwB;IAC3C,8FAA8F;IAC9F,wBAAwB,6BAA6B;IACrD,iEAAiE;IACjE,sBAAsB,2BAA2B;CAClD;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAG3C,MAAM,EAAE;QACtB,QAAQ,CAAC,IAAI,EAAE,wCAAwC,CAAC;QACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB;gBAND,OAAO,EAAE,MAAM,EACC,MAAM,EAAE;QACtB,QAAQ,CAAC,IAAI,EAAE,wCAAwC,CAAC;QACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB;CAKJ;AAMD,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,6BAA6B,CAAC;IACzC,SAAS,EAAE,qBAAqB,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC9C;AAED;;;;;;;GAOG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,kCAAkC,GACxC,wBAAwB,CA8F1B"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projecting a PROVIDER operation onto an ETL read-surface spec (S3a, #331).
|
|
3
|
+
*
|
|
4
|
+
* This is the executable half of the convergence recorded on
|
|
5
|
+
* {@link HttpApiRestOperationReferenceSchema}: a binding names an operation in the provider's own
|
|
6
|
+
* catalogue, and this turns that operation plus the binding's resource-shaped half into the
|
|
7
|
+
* {@link HttpApiRestOperationSpec} every REST_JSON compiler already consumes. Nothing downstream
|
|
8
|
+
* changes — the compilers never learn that a reference existed.
|
|
9
|
+
*
|
|
10
|
+
* A pure function over data, so the interesting refusals are testable without a provider.
|
|
11
|
+
*/
|
|
12
|
+
import { HttpApiRestOperationMethod, } from '@wildo-ai/saas-models/external-data';
|
|
13
|
+
import { ExternalOperation_Classification, API_HttpMethod } from '@wildo-ai/external-connectors-models';
|
|
14
|
+
import { ProviderRestPaginationStyle, ProviderRestParameterLocation } from '@wildo-ai/external-connectors-models';
|
|
15
|
+
/** Why a referenced provider operation cannot serve an ETL read member. */
|
|
16
|
+
export var HttpApiRestOperationReferenceRefusalKind;
|
|
17
|
+
(function (HttpApiRestOperationReferenceRefusalKind) {
|
|
18
|
+
/** The operation MUTATES the vendor; a read surface may never reference one. */
|
|
19
|
+
HttpApiRestOperationReferenceRefusalKind["OPERATION_IS_A_WRITE"] = "OPERATION_IS_A_WRITE";
|
|
20
|
+
/** The operation's method is outside the read-surface vocabulary (GET/POST). */
|
|
21
|
+
HttpApiRestOperationReferenceRefusalKind["METHOD_NOT_READABLE"] = "METHOD_NOT_READABLE";
|
|
22
|
+
/** The reference and the operation disagree about the key: named/absent/unknown parameter. */
|
|
23
|
+
HttpApiRestOperationReferenceRefusalKind["KEY_PARAMETER_INCOHERENT"] = "KEY_PARAMETER_INCOHERENT";
|
|
24
|
+
/** The operation's path has a token the ETL has no value for. */
|
|
25
|
+
HttpApiRestOperationReferenceRefusalKind["UNSATISFIED_PATH_TOKEN"] = "UNSATISFIED_PATH_TOKEN";
|
|
26
|
+
})(HttpApiRestOperationReferenceRefusalKind || (HttpApiRestOperationReferenceRefusalKind = {}));
|
|
27
|
+
export class HttpApiRestOperationReferenceRefusal extends Error {
|
|
28
|
+
detail;
|
|
29
|
+
constructor(message, detail) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.detail = detail;
|
|
32
|
+
this.name = 'HttpApiRestOperationReferenceRefusal';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** The ETL's own token for "this resource's synthesized key", which every REST_JSON compiler fills. */
|
|
36
|
+
const ETL_KEY_TOKEN = '{key}';
|
|
37
|
+
const PATH_TOKEN = /\{([^}]+)\}/g;
|
|
38
|
+
/**
|
|
39
|
+
* Build the read-surface spec a REST_JSON compiler consumes.
|
|
40
|
+
*
|
|
41
|
+
* Reads only what an ETL read can honour, and refuses the rest by NAME rather than degrading:
|
|
42
|
+
* every refusal here is an authoring mistake somebody must fix, and a silently degraded read
|
|
43
|
+
* surface (a filter quietly dropped, a write quietly performed) is the failure this whole lane is
|
|
44
|
+
* built to make impossible.
|
|
45
|
+
*/
|
|
46
|
+
export function projectProviderOperationOntoReadSurface(input) {
|
|
47
|
+
const { reference, operation, providerRef, member } = input;
|
|
48
|
+
const refuse = (kind, message) => {
|
|
49
|
+
throw new HttpApiRestOperationReferenceRefusal(message, {
|
|
50
|
+
kind, providerRef, providerOperationId: reference.providerOperationId, member,
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
// A read surface that could reference a WRITE would let a LIST call delete rows, and the
|
|
54
|
+
// repository's read-only stance (ETL D3) would rest on nobody having authored it that way.
|
|
55
|
+
if (operation.classification === ExternalOperation_Classification.WRITE) {
|
|
56
|
+
refuse(HttpApiRestOperationReferenceRefusalKind.OPERATION_IS_A_WRITE, `The '${member}' member references provider operation '${providerRef}.${operation.operationId}', which is classified WRITE. `
|
|
57
|
+
+ 'A read surface may only reference READ operations — a LIST that could mutate the target is not a read.');
|
|
58
|
+
}
|
|
59
|
+
if (operation.method !== API_HttpMethod.GET && operation.method !== API_HttpMethod.POST) {
|
|
60
|
+
// POST is admitted for the same reason the inline vocabulary admits it: JSON-RPC and many
|
|
61
|
+
// enterprise search endpoints are POST-shaped even for reads.
|
|
62
|
+
refuse(HttpApiRestOperationReferenceRefusalKind.METHOD_NOT_READABLE, `The '${member}' member references provider operation '${providerRef}.${operation.operationId}', whose method is ${operation.method}. `
|
|
63
|
+
+ 'A read-surface member speaks GET or POST only.');
|
|
64
|
+
}
|
|
65
|
+
// ── the key token ──────────────────────────────────────────────────────────
|
|
66
|
+
const declaredPathParameters = new Set((operation.parameters ?? [])
|
|
67
|
+
.filter((parameter) => parameter.in === ProviderRestParameterLocation.PATH)
|
|
68
|
+
.map((parameter) => parameter.name));
|
|
69
|
+
if (member === 'read' && reference.keyParameter === undefined) {
|
|
70
|
+
refuse(HttpApiRestOperationReferenceRefusalKind.KEY_PARAMETER_INCOHERENT, `The 'read' member references '${providerRef}.${operation.operationId}' and declares no keyParameter — a key-addressed read has a hole `
|
|
71
|
+
+ "only this resource's synthesized key can fill, and the provider's operation names that parameter in its own vocabulary.");
|
|
72
|
+
}
|
|
73
|
+
if (member !== 'read' && reference.keyParameter !== undefined) {
|
|
74
|
+
// Refused rather than ignored: an author who wrote it believes it does something.
|
|
75
|
+
refuse(HttpApiRestOperationReferenceRefusalKind.KEY_PARAMETER_INCOHERENT, `The '${member}' member declares keyParameter '${reference.keyParameter}', which only a key-addressed 'read' can use.`);
|
|
76
|
+
}
|
|
77
|
+
if (reference.keyParameter !== undefined && !declaredPathParameters.has(reference.keyParameter)) {
|
|
78
|
+
refuse(HttpApiRestOperationReferenceRefusalKind.KEY_PARAMETER_INCOHERENT, `The '${member}' member names keyParameter '${reference.keyParameter}', and provider operation '${providerRef}.${operation.operationId}' `
|
|
79
|
+
+ `declares no PATH parameter by that name (it declares: ${[...declaredPathParameters].join(', ') || 'none'}).`);
|
|
80
|
+
}
|
|
81
|
+
// Rewrite the operation's own key token into the ETL's, and refuse any OTHER token: the ETL has
|
|
82
|
+
// exactly one value to supply, so a second hole would be filled with the literal `{token}` and
|
|
83
|
+
// the target would answer a confident 404 nobody could explain.
|
|
84
|
+
const pathTemplate = operation.pathTemplate.replace(PATH_TOKEN, (match, token) => {
|
|
85
|
+
if (token === reference.keyParameter)
|
|
86
|
+
return ETL_KEY_TOKEN;
|
|
87
|
+
const parameter = (operation.parameters ?? []).find((candidate) => candidate.in === ProviderRestParameterLocation.PATH && candidate.name === token);
|
|
88
|
+
if (parameter?.constantValue !== undefined)
|
|
89
|
+
return encodeURIComponent(parameter.constantValue);
|
|
90
|
+
return refuse(HttpApiRestOperationReferenceRefusalKind.UNSATISFIED_PATH_TOKEN, `Provider operation '${providerRef}.${operation.operationId}' has the path token '${match}', and an ETL read has no value for it `
|
|
91
|
+
+ '— declare it with a constantValue on the operation, or reference an operation whose path this resource can address.');
|
|
92
|
+
});
|
|
93
|
+
// ── paging ─────────────────────────────────────────────────────────────────
|
|
94
|
+
// Only OFFSET paging projects: the read surface's `pagingParams` is a (limit, offset) pair, and
|
|
95
|
+
// a cursor or link style has no representation in it. Absent means the member is unpaginated
|
|
96
|
+
// here — the honest answer, since inventing an offset over a cursor API silently re-reads page
|
|
97
|
+
// one forever.
|
|
98
|
+
const pagingParams = operation.pagination?.style === ProviderRestPaginationStyle.OFFSET
|
|
99
|
+
&& operation.pagination.limitParam !== undefined
|
|
100
|
+
&& operation.pagination.offsetParam !== undefined
|
|
101
|
+
? { limitParam: operation.pagination.limitParam, offsetParam: operation.pagination.offsetParam }
|
|
102
|
+
: undefined;
|
|
103
|
+
return {
|
|
104
|
+
method: operation.method === API_HttpMethod.POST ? HttpApiRestOperationMethod.POST : HttpApiRestOperationMethod.GET,
|
|
105
|
+
pathTemplate,
|
|
106
|
+
...(pagingParams ? { pagingParams } : {}),
|
|
107
|
+
...(reference.filterParams ? { filterParams: reference.filterParams } : {}),
|
|
108
|
+
...(reference.searchParam ? { searchParam: reference.searchParam } : {}),
|
|
109
|
+
...(operation.resultPath ? { resultPath: operation.resultPath } : {}),
|
|
110
|
+
// `jsonRpcEnvelope` is deliberately NOT projected: a provider operation has no JSON-RPC
|
|
111
|
+
// concept, so a reference can never produce one. A JSON-RPC read surface stays inline.
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=http-api-rest-operation-reference.backend.js.map
|