@wildo-ai/saas-backend-lib 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +49 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +171 -18
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +20 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +529 -41
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +244 -7
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +386 -5
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +31 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +142 -46
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
- package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +292 -7
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +533 -45
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +21 -13
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +39 -15
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
- package/dist/esm/files/services/files.backend.service.d.ts +68 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +175 -5
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +28 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +204 -18
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +8 -4
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/index.d.ts +11 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +31 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +78 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +17 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +19 -3
- package/dist/esm/inject/models/service-types.js.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.js +20 -0
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js +1 -4
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js +1 -4
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts +3 -3
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js +26 -4
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts +9 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +32 -8
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +14 -2
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +90 -6
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +261 -77
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +74 -8
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +175 -19
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +11 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-api-rest-operation-reference.backend.js","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Projecting a PROVIDER operation onto an ETL read-surface spec (S3a, #331).\n *\n * This is the executable half of the convergence recorded on\n * {@link HttpApiRestOperationReferenceSchema}: a binding names an operation in the provider's own\n * catalogue, and this turns that operation plus the binding's resource-shaped half into the\n * {@link HttpApiRestOperationSpec} every REST_JSON compiler already consumes. Nothing downstream\n * changes — the compilers never learn that a reference existed.\n *\n * A pure function over data, so the interesting refusals are testable without a provider.\n */\n\nimport {\n HttpApiRestOperationMethod,\n type HttpApiRestOperationReference,\n type HttpApiRestOperationSpec,\n} from '@wildo-ai/saas-models/external-data';\nimport { ExternalOperation_Classification, API_HttpMethod } from '@wildo-ai/external-connectors-models';\nimport { ProviderRestPaginationStyle, ProviderRestParameterLocation, type ProviderRestOperation } from '@wildo-ai/external-connectors-models';\n\n/** Why a referenced provider operation cannot serve an ETL read member. */\nexport enum HttpApiRestOperationReferenceRefusalKind {\n /** The operation MUTATES the vendor; a read surface may never reference one. */\n OPERATION_IS_A_WRITE = 'OPERATION_IS_A_WRITE',\n /** The operation's method is outside the read-surface vocabulary (GET/POST). */\n METHOD_NOT_READABLE = 'METHOD_NOT_READABLE',\n /** The reference and the operation disagree about the key: named/absent/unknown parameter. */\n KEY_PARAMETER_INCOHERENT = 'KEY_PARAMETER_INCOHERENT',\n /** The operation's path has a token the ETL has no value for. */\n UNSATISFIED_PATH_TOKEN = 'UNSATISFIED_PATH_TOKEN',\n}\n\nexport class HttpApiRestOperationReferenceRefusal extends Error {\n constructor(\n message: string,\n public readonly detail: {\n readonly kind: HttpApiRestOperationReferenceRefusalKind;\n readonly providerRef: string;\n readonly providerOperationId: string;\n readonly member: string;\n },\n ) {\n super(message);\n this.name = 'HttpApiRestOperationReferenceRefusal';\n }\n}\n\n/** The ETL's own token for \"this resource's synthesized key\", which every REST_JSON compiler fills. */\nconst ETL_KEY_TOKEN = '{key}';\nconst PATH_TOKEN = /\\{([^}]+)\\}/g;\n\nexport interface ProjectRestOperationReferenceInput {\n reference: HttpApiRestOperationReference;\n operation: ProviderRestOperation;\n providerRef: string;\n /** Which lifecycle member is being resolved — `read` is the only key-addressed one. */\n member: 'read' | 'list' | 'count' | 'search';\n}\n\n/**\n * Build the read-surface spec a REST_JSON compiler consumes.\n *\n * Reads only what an ETL read can honour, and refuses the rest by NAME rather than degrading:\n * every refusal here is an authoring mistake somebody must fix, and a silently degraded read\n * surface (a filter quietly dropped, a write quietly performed) is the failure this whole lane is\n * built to make impossible.\n */\nexport function projectProviderOperationOntoReadSurface(\n input: ProjectRestOperationReferenceInput,\n): HttpApiRestOperationSpec {\n const { reference, operation, providerRef, member } = input;\n const refuse = (kind: HttpApiRestOperationReferenceRefusalKind, message: string): never => {\n throw new HttpApiRestOperationReferenceRefusal(message, {\n kind, providerRef, providerOperationId: reference.providerOperationId, member,\n });\n };\n\n // A read surface that could reference a WRITE would let a LIST call delete rows, and the\n // repository's read-only stance (ETL D3) would rest on nobody having authored it that way.\n if (operation.classification === ExternalOperation_Classification.WRITE) {\n refuse(\n HttpApiRestOperationReferenceRefusalKind.OPERATION_IS_A_WRITE,\n `The '${member}' member references provider operation '${providerRef}.${operation.operationId}', which is classified WRITE. `\n + 'A read surface may only reference READ operations — a LIST that could mutate the target is not a read.',\n );\n }\n\n if (operation.method !== API_HttpMethod.GET && operation.method !== API_HttpMethod.POST) {\n // POST is admitted for the same reason the inline vocabulary admits it: JSON-RPC and many\n // enterprise search endpoints are POST-shaped even for reads.\n refuse(\n HttpApiRestOperationReferenceRefusalKind.METHOD_NOT_READABLE,\n `The '${member}' member references provider operation '${providerRef}.${operation.operationId}', whose method is ${operation.method}. `\n + 'A read-surface member speaks GET or POST only.',\n );\n }\n\n // ── the key token ──────────────────────────────────────────────────────────\n const declaredPathParameters = new Set(\n (operation.parameters ?? [])\n .filter((parameter) => parameter.in === ProviderRestParameterLocation.PATH)\n .map((parameter) => parameter.name),\n );\n\n if (member === 'read' && reference.keyParameter === undefined) {\n refuse(\n HttpApiRestOperationReferenceRefusalKind.KEY_PARAMETER_INCOHERENT,\n `The 'read' member references '${providerRef}.${operation.operationId}' and declares no keyParameter — a key-addressed read has a hole `\n + \"only this resource's synthesized key can fill, and the provider's operation names that parameter in its own vocabulary.\",\n );\n }\n if (member !== 'read' && reference.keyParameter !== undefined) {\n // Refused rather than ignored: an author who wrote it believes it does something.\n refuse(\n HttpApiRestOperationReferenceRefusalKind.KEY_PARAMETER_INCOHERENT,\n `The '${member}' member declares keyParameter '${reference.keyParameter}', which only a key-addressed 'read' can use.`,\n );\n }\n if (reference.keyParameter !== undefined && !declaredPathParameters.has(reference.keyParameter)) {\n refuse(\n HttpApiRestOperationReferenceRefusalKind.KEY_PARAMETER_INCOHERENT,\n `The '${member}' member names keyParameter '${reference.keyParameter}', and provider operation '${providerRef}.${operation.operationId}' `\n + `declares no PATH parameter by that name (it declares: ${[...declaredPathParameters].join(', ') || 'none'}).`,\n );\n }\n\n // Rewrite the operation's own key token into the ETL's, and refuse any OTHER token: the ETL has\n // exactly one value to supply, so a second hole would be filled with the literal `{token}` and\n // the target would answer a confident 404 nobody could explain.\n const pathTemplate = operation.pathTemplate.replace(PATH_TOKEN, (match, token: string) => {\n if (token === reference.keyParameter) return ETL_KEY_TOKEN;\n const parameter = (operation.parameters ?? []).find(\n (candidate) => candidate.in === ProviderRestParameterLocation.PATH && candidate.name === token,\n );\n if (parameter?.constantValue !== undefined) return encodeURIComponent(parameter.constantValue);\n return refuse(\n HttpApiRestOperationReferenceRefusalKind.UNSATISFIED_PATH_TOKEN,\n `Provider operation '${providerRef}.${operation.operationId}' has the path token '${match}', and an ETL read has no value for it `\n + '— declare it with a constantValue on the operation, or reference an operation whose path this resource can address.',\n );\n });\n\n // ── paging ─────────────────────────────────────────────────────────────────\n // Only OFFSET paging projects: the read surface's `pagingParams` is a (limit, offset) pair, and\n // a cursor or link style has no representation in it. Absent means the member is unpaginated\n // here — the honest answer, since inventing an offset over a cursor API silently re-reads page\n // one forever.\n const pagingParams = operation.pagination?.style === ProviderRestPaginationStyle.OFFSET\n && operation.pagination.limitParam !== undefined\n && operation.pagination.offsetParam !== undefined\n ? { limitParam: operation.pagination.limitParam, offsetParam: operation.pagination.offsetParam }\n : undefined;\n\n return {\n method: operation.method === API_HttpMethod.POST ? HttpApiRestOperationMethod.POST : HttpApiRestOperationMethod.GET,\n pathTemplate,\n ...(pagingParams ? { pagingParams } : {}),\n ...(reference.filterParams ? { filterParams: reference.filterParams } : {}),\n ...(reference.searchParam ? { searchParam: reference.searchParam } : {}),\n ...(operation.resultPath ? { resultPath: operation.resultPath } : {}),\n // `jsonRpcEnvelope` is deliberately NOT projected: a provider operation has no JSON-RPC\n // concept, so a reference can never produce one. A JSON-RPC read surface stays inline.\n };\n}\n"]}
|
package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* rate budget. Engine-independent by design (no DI, no ErrorBuilder): the adapter maps
|
|
6
6
|
* {@link HttpApiTransportError} into its ordinary error projection.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { API_HttpMethod } from '@wildo-ai/external-connectors-models';
|
|
9
|
+
import type { HttpApiRemoteCallSemantics } from '@wildo-ai/saas-models/external-data';
|
|
9
10
|
/**
|
|
10
11
|
* How a transport attempt failed — each member names a DIFFERENT remedy: TIMEOUT/NETWORK are
|
|
11
12
|
* environmental (retryable), REMOTE_ERROR carries the target's own final answer, INVALID_JSON is
|
|
@@ -18,33 +19,99 @@ export declare enum HttpApiTransportFailureKind {
|
|
|
18
19
|
INVALID_JSON = "INVALID_JSON",
|
|
19
20
|
RATE_BUDGET_EXHAUSTED = "RATE_BUDGET_EXHAUSTED"
|
|
20
21
|
}
|
|
21
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Minimal fetch shape — injectable so unit tests run without a network.
|
|
24
|
+
*
|
|
25
|
+
* `body` widened beyond `string` for S3a (#331): a hand-authored provider operation may upload a
|
|
26
|
+
* file (`FormData`, so the platform picks the multipart boundary — a transport that wrote its own
|
|
27
|
+
* `Content-Type` would produce a boundary the body does not use) or send raw bytes.
|
|
28
|
+
*/
|
|
22
29
|
export type HttpApiFetchLike = (url: string, init: {
|
|
23
30
|
method: string;
|
|
24
31
|
headers: Record<string, string>;
|
|
25
|
-
body?: string;
|
|
32
|
+
body?: string | FormData | Uint8Array;
|
|
26
33
|
signal?: AbortSignal;
|
|
27
34
|
}) => Promise<{
|
|
28
35
|
status: number;
|
|
29
36
|
ok: boolean;
|
|
30
37
|
text(): Promise<string>;
|
|
31
38
|
}>;
|
|
39
|
+
/**
|
|
40
|
+
* How a request body is encoded on the wire. Slice 1 needed JSON alone, because every ETL call is
|
|
41
|
+
* a read; a hand-authored WRITE reaches vendors that take form bodies and file uploads, so the
|
|
42
|
+
* encoding is carried on the request rather than inferred from the method.
|
|
43
|
+
*/
|
|
44
|
+
export declare enum HttpApiTransportBodyEncoding {
|
|
45
|
+
JSON = "json",
|
|
46
|
+
FORM_URLENCODED = "form-urlencoded",
|
|
47
|
+
/** `FormData`; the transport sends NO `Content-Type`, so the platform sets it with its boundary. */
|
|
48
|
+
MULTIPART = "multipart",
|
|
49
|
+
/** A raw text body under a caller-declared media type. */
|
|
50
|
+
TEXT = "text",
|
|
51
|
+
/** Raw bytes under a caller-declared media type. */
|
|
52
|
+
BINARY = "binary"
|
|
53
|
+
}
|
|
54
|
+
/** The request body, discriminated so each encoding carries exactly what it needs. */
|
|
55
|
+
export type HttpApiTransportBody = {
|
|
56
|
+
encoding: HttpApiTransportBodyEncoding.JSON;
|
|
57
|
+
value: unknown;
|
|
58
|
+
} | {
|
|
59
|
+
encoding: HttpApiTransportBodyEncoding.FORM_URLENCODED;
|
|
60
|
+
value: Readonly<Record<string, string>>;
|
|
61
|
+
} | {
|
|
62
|
+
encoding: HttpApiTransportBodyEncoding.MULTIPART;
|
|
63
|
+
value: FormData;
|
|
64
|
+
} | {
|
|
65
|
+
encoding: HttpApiTransportBodyEncoding.TEXT;
|
|
66
|
+
value: string;
|
|
67
|
+
contentType: string;
|
|
68
|
+
} | {
|
|
69
|
+
encoding: HttpApiTransportBodyEncoding.BINARY;
|
|
70
|
+
value: Uint8Array;
|
|
71
|
+
contentType: string;
|
|
72
|
+
};
|
|
73
|
+
/** How the RESPONSE body is decoded. */
|
|
74
|
+
export declare enum HttpApiTransportResponseDecoding {
|
|
75
|
+
/** Parse as JSON; a 2xx with an unparsable body is a contract failure at the target. */
|
|
76
|
+
JSON = "json",
|
|
77
|
+
/** Keep the raw text (a CSV export, an XML document); nothing is parsed. */
|
|
78
|
+
TEXT = "text",
|
|
79
|
+
/** Read nothing — for a write whose body carries no information (a 204). */
|
|
80
|
+
NONE = "none"
|
|
81
|
+
}
|
|
32
82
|
export interface HttpApiTransportRequest {
|
|
33
83
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
84
|
+
* The transport is deliberately method-agnostic plumbing; WHICH methods a caller may compile is
|
|
85
|
+
* governed one layer up (the read compilers speak GET/POST, the stance-6b erasure door speaks
|
|
86
|
+
* DELETE, a provider operation speaks whatever it declares). The vocabulary is
|
|
87
|
+
* `API_HttpMethod` — the one named HTTP-method source this repository already has — rather than
|
|
88
|
+
* a third list beside the two read/erasure ones.
|
|
37
89
|
*/
|
|
38
|
-
method: `${
|
|
90
|
+
method: `${API_HttpMethod}`;
|
|
39
91
|
url: string;
|
|
40
92
|
headers: Record<string, string>;
|
|
41
|
-
|
|
42
|
-
|
|
93
|
+
body?: HttpApiTransportBody;
|
|
94
|
+
/** Absent = {@link HttpApiTransportResponseDecoding.JSON}, which is what every caller did before S3a. */
|
|
95
|
+
responseDecoding?: HttpApiTransportResponseDecoding;
|
|
96
|
+
/**
|
|
97
|
+
* Whether re-sending this exact request is safe. REQUIRED, and deliberately not defaulted from
|
|
98
|
+
* the method.
|
|
99
|
+
*
|
|
100
|
+
* Before S3a every call through here was a read or a delete-by-key, so retrying a timeout was
|
|
101
|
+
* always right and the policy could stay implicit. The moment a hand-authored PUT/PATCH/POST
|
|
102
|
+
* write arrives, an implicit retry duplicates it — and a default derived from the method would
|
|
103
|
+
* be wrong in BOTH directions: it would stop retrying the POST-shaped reads the ETL depends on
|
|
104
|
+
* (JSON-RPC, search endpoints), and it would happily retry a POST that charges a card. So each
|
|
105
|
+
* caller answers, and the compiler makes every framing site answer.
|
|
106
|
+
*/
|
|
107
|
+
retrySafe: boolean;
|
|
43
108
|
}
|
|
44
109
|
export interface HttpApiTransportResponse {
|
|
45
110
|
status: number;
|
|
46
|
-
/** Parsed JSON body; `undefined` for an empty body. */
|
|
111
|
+
/** Parsed JSON body; `undefined` for an empty body or a non-JSON decoding. */
|
|
47
112
|
json: unknown;
|
|
113
|
+
/** Raw body text, present for {@link HttpApiTransportResponseDecoding.TEXT}. */
|
|
114
|
+
text?: string;
|
|
48
115
|
}
|
|
49
116
|
/**
|
|
50
117
|
* Every transport failure carries WHAT was attempted and HOW OFTEN, so the adapter's refusal
|
|
@@ -83,11 +150,19 @@ export declare class HttpApiRateBudget {
|
|
|
83
150
|
tryConsume(nowMs?: number): boolean;
|
|
84
151
|
}
|
|
85
152
|
/**
|
|
86
|
-
* Execute one remote
|
|
153
|
+
* Execute one remote call under the caller's semantics.
|
|
154
|
+
*
|
|
155
|
+
* Retry applies to a timeout, a network error, or a retryable status (429/502/503/504) — and ONLY
|
|
156
|
+
* when the request declares itself `retrySafe`. Any other non-2xx status is a terminal remote
|
|
157
|
+
* answer and is thrown on the first attempt: retrying a 400/401/403/404 re-asks a question whose
|
|
158
|
+
* answer is final.
|
|
87
159
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
160
|
+
* The `retrySafe` gate arrived with S3a (#331). Every call before it was a read or a
|
|
161
|
+
* delete-by-key, so the policy could be "retry every transient" and be right; a hand-authored
|
|
162
|
+
* write makes that policy a duplicate-submission engine. Note a 429 is gated too, and that is
|
|
163
|
+
* deliberate rather than an oversight: a 429 means the vendor did not act, but a TIMEOUT on the
|
|
164
|
+
* same request means we do not know whether it acted, and one gate that is honest about both
|
|
165
|
+
* beats two that invite the reader to work out which case they are in.
|
|
91
166
|
*/
|
|
92
167
|
export declare function executeHttpApiTransportCall(request: HttpApiTransportRequest, semantics: Pick<HttpApiRemoteCallSemantics, 'timeoutMs' | 'retry'>, fetchImpl: HttpApiFetchLike, rateBudget?: HttpApiRateBudget): Promise<HttpApiTransportResponse>;
|
|
93
168
|
//# sourceMappingURL=http-api-transport.backend.d.ts.map
|
package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-api-transport.backend.d.ts","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-transport.backend.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"http-api-transport.backend.d.ts","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-transport.backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,32 @@ export var HttpApiTransportFailureKind;
|
|
|
18
18
|
HttpApiTransportFailureKind["INVALID_JSON"] = "INVALID_JSON";
|
|
19
19
|
HttpApiTransportFailureKind["RATE_BUDGET_EXHAUSTED"] = "RATE_BUDGET_EXHAUSTED";
|
|
20
20
|
})(HttpApiTransportFailureKind || (HttpApiTransportFailureKind = {}));
|
|
21
|
+
/**
|
|
22
|
+
* How a request body is encoded on the wire. Slice 1 needed JSON alone, because every ETL call is
|
|
23
|
+
* a read; a hand-authored WRITE reaches vendors that take form bodies and file uploads, so the
|
|
24
|
+
* encoding is carried on the request rather than inferred from the method.
|
|
25
|
+
*/
|
|
26
|
+
export var HttpApiTransportBodyEncoding;
|
|
27
|
+
(function (HttpApiTransportBodyEncoding) {
|
|
28
|
+
HttpApiTransportBodyEncoding["JSON"] = "json";
|
|
29
|
+
HttpApiTransportBodyEncoding["FORM_URLENCODED"] = "form-urlencoded";
|
|
30
|
+
/** `FormData`; the transport sends NO `Content-Type`, so the platform sets it with its boundary. */
|
|
31
|
+
HttpApiTransportBodyEncoding["MULTIPART"] = "multipart";
|
|
32
|
+
/** A raw text body under a caller-declared media type. */
|
|
33
|
+
HttpApiTransportBodyEncoding["TEXT"] = "text";
|
|
34
|
+
/** Raw bytes under a caller-declared media type. */
|
|
35
|
+
HttpApiTransportBodyEncoding["BINARY"] = "binary";
|
|
36
|
+
})(HttpApiTransportBodyEncoding || (HttpApiTransportBodyEncoding = {}));
|
|
37
|
+
/** How the RESPONSE body is decoded. */
|
|
38
|
+
export var HttpApiTransportResponseDecoding;
|
|
39
|
+
(function (HttpApiTransportResponseDecoding) {
|
|
40
|
+
/** Parse as JSON; a 2xx with an unparsable body is a contract failure at the target. */
|
|
41
|
+
HttpApiTransportResponseDecoding["JSON"] = "json";
|
|
42
|
+
/** Keep the raw text (a CSV export, an XML document); nothing is parsed. */
|
|
43
|
+
HttpApiTransportResponseDecoding["TEXT"] = "text";
|
|
44
|
+
/** Read nothing — for a write whose body carries no information (a 204). */
|
|
45
|
+
HttpApiTransportResponseDecoding["NONE"] = "none";
|
|
46
|
+
})(HttpApiTransportResponseDecoding || (HttpApiTransportResponseDecoding = {}));
|
|
21
47
|
/**
|
|
22
48
|
* Every transport failure carries WHAT was attempted and HOW OFTEN, so the adapter's refusal
|
|
23
49
|
* names the remote reality instead of a generic network error. Never carries the request
|
|
@@ -59,11 +85,46 @@ export class HttpApiRateBudget {
|
|
|
59
85
|
}
|
|
60
86
|
}
|
|
61
87
|
/**
|
|
62
|
-
*
|
|
88
|
+
* Frame one request body: the wire bytes and the `Content-Type` that describes them.
|
|
89
|
+
*
|
|
90
|
+
* MULTIPART deliberately contributes NO header — `FormData` carries a boundary the platform
|
|
91
|
+
* generates while serializing, and a `Content-Type` written here would name a different one, so
|
|
92
|
+
* the target would parse zero parts from a body that looks well formed.
|
|
93
|
+
*/
|
|
94
|
+
function frameBody(body) {
|
|
95
|
+
if (body === undefined)
|
|
96
|
+
return {};
|
|
97
|
+
switch (body.encoding) {
|
|
98
|
+
case HttpApiTransportBodyEncoding.JSON:
|
|
99
|
+
return { payload: JSON.stringify(body.value), contentType: 'application/json' };
|
|
100
|
+
case HttpApiTransportBodyEncoding.FORM_URLENCODED:
|
|
101
|
+
return { payload: new URLSearchParams(body.value).toString(), contentType: 'application/x-www-form-urlencoded' };
|
|
102
|
+
case HttpApiTransportBodyEncoding.MULTIPART:
|
|
103
|
+
return { payload: body.value };
|
|
104
|
+
case HttpApiTransportBodyEncoding.TEXT:
|
|
105
|
+
return { payload: body.value, contentType: body.contentType };
|
|
106
|
+
case HttpApiTransportBodyEncoding.BINARY:
|
|
107
|
+
return { payload: body.value, contentType: body.contentType };
|
|
108
|
+
default: {
|
|
109
|
+
const exhaustiveCheck = body;
|
|
110
|
+
return exhaustiveCheck;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Execute one remote call under the caller's semantics.
|
|
116
|
+
*
|
|
117
|
+
* Retry applies to a timeout, a network error, or a retryable status (429/502/503/504) — and ONLY
|
|
118
|
+
* when the request declares itself `retrySafe`. Any other non-2xx status is a terminal remote
|
|
119
|
+
* answer and is thrown on the first attempt: retrying a 400/401/403/404 re-asks a question whose
|
|
120
|
+
* answer is final.
|
|
63
121
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
122
|
+
* The `retrySafe` gate arrived with S3a (#331). Every call before it was a read or a
|
|
123
|
+
* delete-by-key, so the policy could be "retry every transient" and be right; a hand-authored
|
|
124
|
+
* write makes that policy a duplicate-submission engine. Note a 429 is gated too, and that is
|
|
125
|
+
* deliberate rather than an oversight: a 429 means the vendor did not act, but a TIMEOUT on the
|
|
126
|
+
* same request means we do not know whether it acted, and one gate that is honest about both
|
|
127
|
+
* beats two that invite the reader to work out which case they are in.
|
|
67
128
|
*/
|
|
68
129
|
export async function executeHttpApiTransportCall(request, semantics, fetchImpl, rateBudget) {
|
|
69
130
|
if (rateBudget && !rateBudget.tryConsume()) {
|
|
@@ -78,23 +139,33 @@ export async function executeHttpApiTransportCall(request, semantics, fetchImpl,
|
|
|
78
139
|
const abort = new AbortController();
|
|
79
140
|
const timeout = setTimeout(() => abort.abort(), semantics.timeoutMs);
|
|
80
141
|
try {
|
|
142
|
+
const framed = frameBody(request.body);
|
|
81
143
|
const response = await fetchImpl(request.url, {
|
|
82
144
|
method: request.method,
|
|
83
|
-
headers:
|
|
145
|
+
// The caller's own headers win: a provider that must send its own `Content-Type` for a
|
|
146
|
+
// text body has already declared it, and the framing default must not overwrite it.
|
|
147
|
+
headers: framed.contentType === undefined
|
|
84
148
|
? request.headers
|
|
85
|
-
: { 'Content-Type':
|
|
86
|
-
body:
|
|
149
|
+
: { 'Content-Type': framed.contentType, ...request.headers },
|
|
150
|
+
body: framed.payload,
|
|
87
151
|
signal: abort.signal,
|
|
88
152
|
});
|
|
89
153
|
const bodyText = await response.text();
|
|
90
154
|
if (!response.ok) {
|
|
91
155
|
const error = new HttpApiTransportError(`HTTP-API remote answered ${response.status} for ${request.method} ${request.url}`, { url: request.url, method: request.method, status: response.status, attempts: attempt, kind: HttpApiTransportFailureKind.REMOTE_ERROR });
|
|
92
|
-
if (RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {
|
|
156
|
+
if (request.retrySafe && RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {
|
|
93
157
|
lastError = error;
|
|
94
158
|
continue;
|
|
95
159
|
}
|
|
96
160
|
throw error;
|
|
97
161
|
}
|
|
162
|
+
const decoding = request.responseDecoding ?? HttpApiTransportResponseDecoding.JSON;
|
|
163
|
+
if (decoding === HttpApiTransportResponseDecoding.NONE) {
|
|
164
|
+
return { status: response.status, json: undefined };
|
|
165
|
+
}
|
|
166
|
+
if (decoding === HttpApiTransportResponseDecoding.TEXT) {
|
|
167
|
+
return { status: response.status, json: undefined, text: bodyText };
|
|
168
|
+
}
|
|
98
169
|
if (bodyText.length === 0) {
|
|
99
170
|
return { status: response.status, json: undefined };
|
|
100
171
|
}
|
|
@@ -108,7 +179,7 @@ export async function executeHttpApiTransportCall(request, semantics, fetchImpl,
|
|
|
108
179
|
}
|
|
109
180
|
catch (error) {
|
|
110
181
|
if (error instanceof HttpApiTransportError) {
|
|
111
|
-
if (error.detail.kind === HttpApiTransportFailureKind.REMOTE_ERROR && RETRYABLE_STATUS.has(error.detail.status ?? 0) && attempt < maxAttempts) {
|
|
182
|
+
if (request.retrySafe && error.detail.kind === HttpApiTransportFailureKind.REMOTE_ERROR && RETRYABLE_STATUS.has(error.detail.status ?? 0) && attempt < maxAttempts) {
|
|
112
183
|
lastError = error;
|
|
113
184
|
continue;
|
|
114
185
|
}
|
|
@@ -118,7 +189,7 @@ export async function executeHttpApiTransportCall(request, semantics, fetchImpl,
|
|
|
118
189
|
const transportError = new HttpApiTransportError(isAbort
|
|
119
190
|
? `HTTP-API call timed out after ${semantics.timeoutMs}ms: ${request.method} ${request.url}`
|
|
120
191
|
: `HTTP-API network failure for ${request.method} ${request.url}: ${error instanceof Error ? error.message : String(error)}`, { url: request.url, method: request.method, attempts: attempt, kind: isAbort ? HttpApiTransportFailureKind.TIMEOUT : HttpApiTransportFailureKind.NETWORK });
|
|
121
|
-
if (attempt < maxAttempts) {
|
|
192
|
+
if (request.retrySafe && attempt < maxAttempts) {
|
|
122
193
|
lastError = transportError;
|
|
123
194
|
continue;
|
|
124
195
|
}
|
|
@@ -128,7 +199,9 @@ export async function executeHttpApiTransportCall(request, semantics, fetchImpl,
|
|
|
128
199
|
clearTimeout(timeout);
|
|
129
200
|
}
|
|
130
201
|
}
|
|
131
|
-
// Unreachable
|
|
202
|
+
// Unreachable: every path in the loop either returns or throws — a non-retry-safe request
|
|
203
|
+
// throws on its first attempt, and a retry-safe one throws on its last. Kept for control-flow
|
|
204
|
+
// honesty, and because a future edit that adds a `continue` should land somewhere honest.
|
|
132
205
|
throw lastError ?? new HttpApiTransportError(`HTTP-API call failed for ${request.method} ${request.url}`, { url: request.url, method: request.method, attempts: maxAttempts, kind: HttpApiTransportFailureKind.NETWORK });
|
|
133
206
|
}
|
|
134
207
|
function delay(ms) {
|
package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-api-transport.backend.js","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-transport.backend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * HTTP transport for the HTTP-API resource repository — the ONE place a remote call leaves the\n * process, carrying the binding's declared remote-call semantics (ETL decision D10 / R15):\n * per-call timeout, bounded retry for idempotent read-family calls only, and an optional local\n * rate budget. Engine-independent by design (no DI, no ErrorBuilder): the adapter maps\n * {@link HttpApiTransportError} into its ordinary error projection.\n */\n\nimport type {\n HttpApiErasureOperationMethod,\n HttpApiRemoteCallSemantics,\n HttpApiRestOperationMethod,\n} from '@wildo-ai/saas-models/external-data';\n\n/**\n * How a transport attempt failed — each member names a DIFFERENT remedy: TIMEOUT/NETWORK are\n * environmental (retryable), REMOTE_ERROR carries the target's own final answer, INVALID_JSON is\n * a contract breach at the target, RATE_BUDGET_EXHAUSTED is the binding's own local ceiling.\n */\nexport enum HttpApiTransportFailureKind {\n TIMEOUT = 'TIMEOUT',\n NETWORK = 'NETWORK',\n REMOTE_ERROR = 'REMOTE_ERROR',\n INVALID_JSON = 'INVALID_JSON',\n RATE_BUDGET_EXHAUSTED = 'RATE_BUDGET_EXHAUSTED',\n}\n\n/** Minimal fetch shape — injectable so unit tests run without a network. */\nexport type HttpApiFetchLike = (\n url: string,\n init: {\n method: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n },\n) => Promise<{\n status: number;\n ok: boolean;\n text(): Promise<string>;\n}>;\n\nexport interface HttpApiTransportRequest {\n /**\n * Read-family methods, plus the erasure family's `DELETE` — the transport is deliberately\n * method-agnostic plumbing; WHICH methods a caller may compile is governed one layer up (the\n * read compilers speak GET/POST, only the stance-6b erasure door speaks DELETE).\n */\n method: `${HttpApiRestOperationMethod}` | `${HttpApiErasureOperationMethod}`;\n url: string;\n headers: Record<string, string>;\n /** JSON body, serialized by the transport (POST-shaped reads: JSON-RPC, search endpoints). */\n jsonBody?: unknown;\n}\n\nexport interface HttpApiTransportResponse {\n status: number;\n /** Parsed JSON body; `undefined` for an empty body. */\n json: unknown;\n}\n\n/**\n * Every transport failure carries WHAT was attempted and HOW OFTEN, so the adapter's refusal\n * names the remote reality instead of a generic network error. Never carries the request\n * headers (they hold credentials).\n */\nexport class HttpApiTransportError extends Error {\n constructor(\n message: string,\n public readonly detail: {\n readonly url: string;\n readonly method: string;\n /** HTTP status of the LAST attempt; undefined when no response was received. */\n readonly status?: number;\n readonly attempts: number;\n readonly kind: HttpApiTransportFailureKind;\n },\n ) {\n super(message);\n this.name = 'HttpApiTransportError';\n }\n}\n\nconst RETRYABLE_STATUS = new Set([429, 502, 503, 504]);\n\n/**\n * A per-binding local rate budget (`maxRequestsPerMinute`) — a sliding-window counter, not a\n * fairness scheduler. When the window is full the call REFUSES immediately rather than queueing:\n * queueing inside a request lifecycle turns a rate problem into a latency problem the caller\n * cannot see (scope-down paper: refusal is the honest failure mode).\n */\nexport class HttpApiRateBudget {\n private readonly timestamps: number[] = [];\n\n constructor(private readonly maxRequestsPerMinute?: number) {}\n\n /** Returns true when the call may proceed (and records it); false when the budget is exhausted. */\n tryConsume(nowMs: number = Date.now()): boolean {\n if (this.maxRequestsPerMinute === undefined) return true;\n const windowStart = nowMs - 60_000;\n while (this.timestamps.length > 0 && this.timestamps[0] <= windowStart) {\n this.timestamps.shift();\n }\n if (this.timestamps.length >= this.maxRequestsPerMinute) return false;\n this.timestamps.push(nowMs);\n return true;\n }\n}\n\n/**\n * Execute one remote read-family call under the binding's semantics.\n *\n * Retry policy applies to IDEMPOTENT failures only: a timeout, a network error, or a retryable\n * status (429/502/503/504). Any other non-2xx status is a terminal remote answer and is thrown\n * on the first attempt — retrying a 400/401/403/404 re-asks a question whose answer is final.\n */\nexport async function executeHttpApiTransportCall(\n request: HttpApiTransportRequest,\n semantics: Pick<HttpApiRemoteCallSemantics, 'timeoutMs' | 'retry'>,\n fetchImpl: HttpApiFetchLike,\n rateBudget?: HttpApiRateBudget,\n): Promise<HttpApiTransportResponse> {\n if (rateBudget && !rateBudget.tryConsume()) {\n throw new HttpApiTransportError(\n `HTTP-API rate budget exhausted for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, attempts: 0, kind: HttpApiTransportFailureKind.RATE_BUDGET_EXHAUSTED },\n );\n }\n\n const maxAttempts = semantics.retry.maxAttempts;\n let lastError: HttpApiTransportError | undefined;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n if (attempt > 1) {\n await delay(semantics.retry.backoffMs * (attempt - 1));\n }\n\n const abort = new AbortController();\n const timeout = setTimeout(() => abort.abort(), semantics.timeoutMs);\n try {\n const response = await fetchImpl(request.url, {\n method: request.method,\n headers: request.jsonBody === undefined\n ? request.headers\n : { 'Content-Type': 'application/json', ...request.headers },\n body: request.jsonBody === undefined ? undefined : JSON.stringify(request.jsonBody),\n signal: abort.signal,\n });\n const bodyText = await response.text();\n\n if (!response.ok) {\n const error = new HttpApiTransportError(\n `HTTP-API remote answered ${response.status} for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, status: response.status, attempts: attempt, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n if (RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {\n lastError = error;\n continue;\n }\n throw error;\n }\n\n if (bodyText.length === 0) {\n return { status: response.status, json: undefined };\n }\n try {\n return { status: response.status, json: JSON.parse(bodyText) };\n } catch {\n // A 2xx with unparsable JSON is a CONTRACT failure, not a transient — never retried.\n throw new HttpApiTransportError(\n `HTTP-API remote answered ${response.status} with a non-JSON body for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, status: response.status, attempts: attempt, kind: HttpApiTransportFailureKind.INVALID_JSON },\n );\n }\n } catch (error) {\n if (error instanceof HttpApiTransportError) {\n if (error.detail.kind === HttpApiTransportFailureKind.REMOTE_ERROR && RETRYABLE_STATUS.has(error.detail.status ?? 0) && attempt < maxAttempts) {\n lastError = error;\n continue;\n }\n throw error;\n }\n const isAbort = error instanceof Error && error.name === 'AbortError';\n const transportError = new HttpApiTransportError(\n isAbort\n ? `HTTP-API call timed out after ${semantics.timeoutMs}ms: ${request.method} ${request.url}`\n : `HTTP-API network failure for ${request.method} ${request.url}: ${error instanceof Error ? error.message : String(error)}`,\n { url: request.url, method: request.method, attempts: attempt, kind: isAbort ? HttpApiTransportFailureKind.TIMEOUT : HttpApiTransportFailureKind.NETWORK },\n );\n if (attempt < maxAttempts) {\n lastError = transportError;\n continue;\n }\n throw transportError;\n } finally {\n clearTimeout(timeout);\n }\n }\n\n // Unreachable while the loop throws on its last attempt; kept for control-flow honesty.\n throw lastError ?? new HttpApiTransportError(\n `HTTP-API call failed for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, attempts: maxAttempts, kind: HttpApiTransportFailureKind.NETWORK },\n );\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"http-api-transport.backend.js","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-transport.backend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * HTTP transport for the HTTP-API resource repository — the ONE place a remote call leaves the\n * process, carrying the binding's declared remote-call semantics (ETL decision D10 / R15):\n * per-call timeout, bounded retry for idempotent read-family calls only, and an optional local\n * rate budget. Engine-independent by design (no DI, no ErrorBuilder): the adapter maps\n * {@link HttpApiTransportError} into its ordinary error projection.\n */\n\nimport type { API_HttpMethod } from '@wildo-ai/external-connectors-models';\nimport type { HttpApiRemoteCallSemantics } from '@wildo-ai/saas-models/external-data';\n\n/**\n * How a transport attempt failed — each member names a DIFFERENT remedy: TIMEOUT/NETWORK are\n * environmental (retryable), REMOTE_ERROR carries the target's own final answer, INVALID_JSON is\n * a contract breach at the target, RATE_BUDGET_EXHAUSTED is the binding's own local ceiling.\n */\nexport enum HttpApiTransportFailureKind {\n TIMEOUT = 'TIMEOUT',\n NETWORK = 'NETWORK',\n REMOTE_ERROR = 'REMOTE_ERROR',\n INVALID_JSON = 'INVALID_JSON',\n RATE_BUDGET_EXHAUSTED = 'RATE_BUDGET_EXHAUSTED',\n}\n\n/**\n * Minimal fetch shape — injectable so unit tests run without a network.\n *\n * `body` widened beyond `string` for S3a (#331): a hand-authored provider operation may upload a\n * file (`FormData`, so the platform picks the multipart boundary — a transport that wrote its own\n * `Content-Type` would produce a boundary the body does not use) or send raw bytes.\n */\nexport type HttpApiFetchLike = (\n url: string,\n init: {\n method: string;\n headers: Record<string, string>;\n body?: string | FormData | Uint8Array;\n signal?: AbortSignal;\n },\n) => Promise<{\n status: number;\n ok: boolean;\n text(): Promise<string>;\n}>;\n\n/**\n * How a request body is encoded on the wire. Slice 1 needed JSON alone, because every ETL call is\n * a read; a hand-authored WRITE reaches vendors that take form bodies and file uploads, so the\n * encoding is carried on the request rather than inferred from the method.\n */\nexport enum HttpApiTransportBodyEncoding {\n JSON = 'json',\n FORM_URLENCODED = 'form-urlencoded',\n /** `FormData`; the transport sends NO `Content-Type`, so the platform sets it with its boundary. */\n MULTIPART = 'multipart',\n /** A raw text body under a caller-declared media type. */\n TEXT = 'text',\n /** Raw bytes under a caller-declared media type. */\n BINARY = 'binary',\n}\n\n/** The request body, discriminated so each encoding carries exactly what it needs. */\nexport type HttpApiTransportBody =\n | { encoding: HttpApiTransportBodyEncoding.JSON; value: unknown }\n | { encoding: HttpApiTransportBodyEncoding.FORM_URLENCODED; value: Readonly<Record<string, string>> }\n | { encoding: HttpApiTransportBodyEncoding.MULTIPART; value: FormData }\n | { encoding: HttpApiTransportBodyEncoding.TEXT; value: string; contentType: string }\n | { encoding: HttpApiTransportBodyEncoding.BINARY; value: Uint8Array; contentType: string };\n\n/** How the RESPONSE body is decoded. */\nexport enum HttpApiTransportResponseDecoding {\n /** Parse as JSON; a 2xx with an unparsable body is a contract failure at the target. */\n JSON = 'json',\n /** Keep the raw text (a CSV export, an XML document); nothing is parsed. */\n TEXT = 'text',\n /** Read nothing — for a write whose body carries no information (a 204). */\n NONE = 'none',\n}\n\nexport interface HttpApiTransportRequest {\n /**\n * The transport is deliberately method-agnostic plumbing; WHICH methods a caller may compile is\n * governed one layer up (the read compilers speak GET/POST, the stance-6b erasure door speaks\n * DELETE, a provider operation speaks whatever it declares). The vocabulary is\n * `API_HttpMethod` — the one named HTTP-method source this repository already has — rather than\n * a third list beside the two read/erasure ones.\n */\n method: `${API_HttpMethod}`;\n url: string;\n headers: Record<string, string>;\n body?: HttpApiTransportBody;\n /** Absent = {@link HttpApiTransportResponseDecoding.JSON}, which is what every caller did before S3a. */\n responseDecoding?: HttpApiTransportResponseDecoding;\n /**\n * Whether re-sending this exact request is safe. REQUIRED, and deliberately not defaulted from\n * the method.\n *\n * Before S3a every call through here was a read or a delete-by-key, so retrying a timeout was\n * always right and the policy could stay implicit. The moment a hand-authored PUT/PATCH/POST\n * write arrives, an implicit retry duplicates it — and a default derived from the method would\n * be wrong in BOTH directions: it would stop retrying the POST-shaped reads the ETL depends on\n * (JSON-RPC, search endpoints), and it would happily retry a POST that charges a card. So each\n * caller answers, and the compiler makes every framing site answer.\n */\n retrySafe: boolean;\n}\n\nexport interface HttpApiTransportResponse {\n status: number;\n /** Parsed JSON body; `undefined` for an empty body or a non-JSON decoding. */\n json: unknown;\n /** Raw body text, present for {@link HttpApiTransportResponseDecoding.TEXT}. */\n text?: string;\n}\n\n/**\n * Every transport failure carries WHAT was attempted and HOW OFTEN, so the adapter's refusal\n * names the remote reality instead of a generic network error. Never carries the request\n * headers (they hold credentials).\n */\nexport class HttpApiTransportError extends Error {\n constructor(\n message: string,\n public readonly detail: {\n readonly url: string;\n readonly method: string;\n /** HTTP status of the LAST attempt; undefined when no response was received. */\n readonly status?: number;\n readonly attempts: number;\n readonly kind: HttpApiTransportFailureKind;\n },\n ) {\n super(message);\n this.name = 'HttpApiTransportError';\n }\n}\n\nconst RETRYABLE_STATUS = new Set([429, 502, 503, 504]);\n\n/**\n * A per-binding local rate budget (`maxRequestsPerMinute`) — a sliding-window counter, not a\n * fairness scheduler. When the window is full the call REFUSES immediately rather than queueing:\n * queueing inside a request lifecycle turns a rate problem into a latency problem the caller\n * cannot see (scope-down paper: refusal is the honest failure mode).\n */\nexport class HttpApiRateBudget {\n private readonly timestamps: number[] = [];\n\n constructor(private readonly maxRequestsPerMinute?: number) {}\n\n /** Returns true when the call may proceed (and records it); false when the budget is exhausted. */\n tryConsume(nowMs: number = Date.now()): boolean {\n if (this.maxRequestsPerMinute === undefined) return true;\n const windowStart = nowMs - 60_000;\n while (this.timestamps.length > 0 && this.timestamps[0] <= windowStart) {\n this.timestamps.shift();\n }\n if (this.timestamps.length >= this.maxRequestsPerMinute) return false;\n this.timestamps.push(nowMs);\n return true;\n }\n}\n\n/**\n * Frame one request body: the wire bytes and the `Content-Type` that describes them.\n *\n * MULTIPART deliberately contributes NO header — `FormData` carries a boundary the platform\n * generates while serializing, and a `Content-Type` written here would name a different one, so\n * the target would parse zero parts from a body that looks well formed.\n */\nfunction frameBody(body: HttpApiTransportBody | undefined): { payload?: string | FormData | Uint8Array; contentType?: string } {\n if (body === undefined) return {};\n switch (body.encoding) {\n case HttpApiTransportBodyEncoding.JSON:\n return { payload: JSON.stringify(body.value), contentType: 'application/json' };\n case HttpApiTransportBodyEncoding.FORM_URLENCODED:\n return { payload: new URLSearchParams(body.value as Record<string, string>).toString(), contentType: 'application/x-www-form-urlencoded' };\n case HttpApiTransportBodyEncoding.MULTIPART:\n return { payload: body.value };\n case HttpApiTransportBodyEncoding.TEXT:\n return { payload: body.value, contentType: body.contentType };\n case HttpApiTransportBodyEncoding.BINARY:\n return { payload: body.value, contentType: body.contentType };\n default: {\n const exhaustiveCheck: never = body;\n return exhaustiveCheck;\n }\n }\n}\n\n/**\n * Execute one remote call under the caller's semantics.\n *\n * Retry applies to a timeout, a network error, or a retryable status (429/502/503/504) — and ONLY\n * when the request declares itself `retrySafe`. Any other non-2xx status is a terminal remote\n * answer and is thrown on the first attempt: retrying a 400/401/403/404 re-asks a question whose\n * answer is final.\n *\n * The `retrySafe` gate arrived with S3a (#331). Every call before it was a read or a\n * delete-by-key, so the policy could be \"retry every transient\" and be right; a hand-authored\n * write makes that policy a duplicate-submission engine. Note a 429 is gated too, and that is\n * deliberate rather than an oversight: a 429 means the vendor did not act, but a TIMEOUT on the\n * same request means we do not know whether it acted, and one gate that is honest about both\n * beats two that invite the reader to work out which case they are in.\n */\nexport async function executeHttpApiTransportCall(\n request: HttpApiTransportRequest,\n semantics: Pick<HttpApiRemoteCallSemantics, 'timeoutMs' | 'retry'>,\n fetchImpl: HttpApiFetchLike,\n rateBudget?: HttpApiRateBudget,\n): Promise<HttpApiTransportResponse> {\n if (rateBudget && !rateBudget.tryConsume()) {\n throw new HttpApiTransportError(\n `HTTP-API rate budget exhausted for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, attempts: 0, kind: HttpApiTransportFailureKind.RATE_BUDGET_EXHAUSTED },\n );\n }\n\n const maxAttempts = semantics.retry.maxAttempts;\n let lastError: HttpApiTransportError | undefined;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n if (attempt > 1) {\n await delay(semantics.retry.backoffMs * (attempt - 1));\n }\n\n const abort = new AbortController();\n const timeout = setTimeout(() => abort.abort(), semantics.timeoutMs);\n try {\n const framed = frameBody(request.body);\n const response = await fetchImpl(request.url, {\n method: request.method,\n // The caller's own headers win: a provider that must send its own `Content-Type` for a\n // text body has already declared it, and the framing default must not overwrite it.\n headers: framed.contentType === undefined\n ? request.headers\n : { 'Content-Type': framed.contentType, ...request.headers },\n body: framed.payload,\n signal: abort.signal,\n });\n const bodyText = await response.text();\n\n if (!response.ok) {\n const error = new HttpApiTransportError(\n `HTTP-API remote answered ${response.status} for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, status: response.status, attempts: attempt, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n if (request.retrySafe && RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {\n lastError = error;\n continue;\n }\n throw error;\n }\n\n const decoding = request.responseDecoding ?? HttpApiTransportResponseDecoding.JSON;\n if (decoding === HttpApiTransportResponseDecoding.NONE) {\n return { status: response.status, json: undefined };\n }\n if (decoding === HttpApiTransportResponseDecoding.TEXT) {\n return { status: response.status, json: undefined, text: bodyText };\n }\n if (bodyText.length === 0) {\n return { status: response.status, json: undefined };\n }\n try {\n return { status: response.status, json: JSON.parse(bodyText) };\n } catch {\n // A 2xx with unparsable JSON is a CONTRACT failure, not a transient — never retried.\n throw new HttpApiTransportError(\n `HTTP-API remote answered ${response.status} with a non-JSON body for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, status: response.status, attempts: attempt, kind: HttpApiTransportFailureKind.INVALID_JSON },\n );\n }\n } catch (error) {\n if (error instanceof HttpApiTransportError) {\n if (request.retrySafe && error.detail.kind === HttpApiTransportFailureKind.REMOTE_ERROR && RETRYABLE_STATUS.has(error.detail.status ?? 0) && attempt < maxAttempts) {\n lastError = error;\n continue;\n }\n throw error;\n }\n const isAbort = error instanceof Error && error.name === 'AbortError';\n const transportError = new HttpApiTransportError(\n isAbort\n ? `HTTP-API call timed out after ${semantics.timeoutMs}ms: ${request.method} ${request.url}`\n : `HTTP-API network failure for ${request.method} ${request.url}: ${error instanceof Error ? error.message : String(error)}`,\n { url: request.url, method: request.method, attempts: attempt, kind: isAbort ? HttpApiTransportFailureKind.TIMEOUT : HttpApiTransportFailureKind.NETWORK },\n );\n if (request.retrySafe && attempt < maxAttempts) {\n lastError = transportError;\n continue;\n }\n throw transportError;\n } finally {\n clearTimeout(timeout);\n }\n }\n\n // Unreachable: every path in the loop either returns or throws — a non-retry-safe request\n // throws on its first attempt, and a retry-safe one throws on its last. Kept for control-flow\n // honesty, and because a future edit that adds a `continue` should land somewhere honest.\n throw lastError ?? new HttpApiTransportError(\n `HTTP-API call failed for ${request.method} ${request.url}`,\n { url: request.url, method: request.method, attempts: maxAttempts, kind: HttpApiTransportFailureKind.NETWORK },\n );\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
|
package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infrastructure-tier-contract.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/infrastructure-tier-contract.backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AAEH;;;;;;;GAOG;AACH,oBAAY,kBAAkB;IAC5B,gGAAgG;IAChG,eAAe,oCAAoC;IACnD,gFAAgF;IAChF,SAAS,8BAA8B;IACvC,oFAAoF;IACpF,oBAAoB,sBAAsB;IAC1C,sEAAsE;IACtE,eAAe,oCAAoC;IACnD,qFAAqF;IACrF,WAAW,gCAAgC;IAC3C,+DAA+D;IAC/D,WAAW,gCAAgC;IAC3C,yCAAyC;IACzC,uBAAuB,0BAA0B;IACjD,iEAAiE;IACjE,sBAAsB,yBAAyB;IAC/C,wCAAwC;IACxC,sBAAsB,yBAAyB;CAChD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,oBAAY,iCAAiC;IAC3C;;;OAGG;IACH,aAAa,kBAAkB;IAC/B;;;;;;;;;;;OAWG;IACH,cAAc,kBAAkB;IAChC;;;;OAIG;IACH,iBAAiB,qBAAqB;IACtC;;;;;OAKG;IACH,cAAc,kBAAkB;IAChC;;;;OAIG;IACH,kBAAkB,qBAAqB;IACvC;;;OAGG;IACH,WAAW,eAAe;IAC1B;;;;;;;;;OASG;IACH,yBAAyB,6BAA6B;IACtD;;;;OAIG;IACH,kBAAkB,sBAAsB;CACzC;AAED,oBAAY,4BAA4B;IACtC,6CAA6C;IAC7C,SAAS,cAAc;IACvB,sFAAsF;IACtF,MAAM,WAAW;IACjB,mGAAmG;IACnG,cAAc,mBAAmB;CAClC;AAED;;;;GAIG;AACH,MAAM,MAAM,gCAAgC,GACxC;IAAE,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,OAAO,EAAE,4BAA4B,CAAC,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7F;IAAE,OAAO,EAAE,4BAA4B,CAAC,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"infrastructure-tier-contract.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/infrastructure-tier-contract.backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AAEH;;;;;;;GAOG;AACH,oBAAY,kBAAkB;IAC5B,gGAAgG;IAChG,eAAe,oCAAoC;IACnD,gFAAgF;IAChF,SAAS,8BAA8B;IACvC,oFAAoF;IACpF,oBAAoB,sBAAsB;IAC1C,sEAAsE;IACtE,eAAe,oCAAoC;IACnD,qFAAqF;IACrF,WAAW,gCAAgC;IAC3C,+DAA+D;IAC/D,WAAW,gCAAgC;IAC3C,yCAAyC;IACzC,uBAAuB,0BAA0B;IACjD,iEAAiE;IACjE,sBAAsB,yBAAyB;IAC/C,wCAAwC;IACxC,sBAAsB,yBAAyB;CAChD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,oBAAY,iCAAiC;IAC3C;;;OAGG;IACH,aAAa,kBAAkB;IAC/B;;;;;;;;;;;OAWG;IACH,cAAc,kBAAkB;IAChC;;;;OAIG;IACH,iBAAiB,qBAAqB;IACtC;;;;;OAKG;IACH,cAAc,kBAAkB;IAChC;;;;OAIG;IACH,kBAAkB,qBAAqB;IACvC;;;OAGG;IACH,WAAW,eAAe;IAC1B;;;;;;;;;OASG;IACH,yBAAyB,6BAA6B;IACtD;;;;OAIG;IACH,kBAAkB,sBAAsB;CACzC;AAED,oBAAY,4BAA4B;IACtC,6CAA6C;IAC7C,SAAS,cAAc;IACvB,sFAAsF;IACtF,MAAM,WAAW;IACjB,mGAAmG;IACnG,cAAc,mBAAmB;CAClC;AAED;;;;GAIG;AACH,MAAM,MAAM,gCAAgC,GACxC;IAAE,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,OAAO,EAAE,4BAA4B,CAAC,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7F;IAAE,OAAO,EAAE,4BAA4B,CAAC,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA4I7E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,kBAAkB,EAClB,MAAM,CAAC,iCAAiC,EAAE,gCAAgC,CAAC,CAyR5E,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8CAA8C,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM3F,CAAC;AAEF;;;;;;;;GAQG;AACH,oBAAY,sCAAsC;IAChD,YAAY,gBAAgB;IAC5B,4BAA4B,+BAA+B;CAC5D;AAED,eAAO,MAAM,0CAA0C,EAAE,MAAM,CAC7D,sCAAsC,EACtC,MAAM,CAcP,CAAC"}
|
|
@@ -251,7 +251,15 @@ const SCHEMA_VALIDATION_WAIVED_PRE_BUILT_WRITE = {
|
|
|
251
251
|
compensation: 'Shape only, never values: `describeGuardedMutationInexpressibility` refuses a mutation that '
|
|
252
252
|
+ 'cannot be expressed on every adapter. Nothing checks what the mutation SAYS.',
|
|
253
253
|
};
|
|
254
|
-
/**
|
|
254
|
+
/**
|
|
255
|
+
* The plain reason SEVEN doors give: they accept `RepositoryOptions` and forward them unchanged.
|
|
256
|
+
*
|
|
257
|
+
* ALL EIGHT doors do that now. {@link InfrastructureDoor.COUNT_DOCUMENTS} states its own cell rather
|
|
258
|
+
* than reusing this one because it has a longer story to tell — it was the one door that accepted no
|
|
259
|
+
* options at all (issue #104), and its cell records that rather than letting the repair erase it.
|
|
260
|
+
* This comment previously read "every door BUT COUNT_DOCUMENTS accepts them", which was true when it
|
|
261
|
+
* was written and became a false description of the tier the moment the door was fixed.
|
|
262
|
+
*/
|
|
255
263
|
const TRANSACTION_PARTICIPATION_PRESERVED = {
|
|
256
264
|
posture: PRESERVED,
|
|
257
265
|
how: 'Accepts `RepositoryOptions` and forwards them to the primitive, so a caller already inside a '
|