@wildo-ai/saas-backend-lib 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +14 -3
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +138 -24
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +8 -3
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +48 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +102 -30
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js +16 -0
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +96 -32
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js +32 -7
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +80 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +298 -23
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +71 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +85 -5
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +146 -4
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts +3 -26
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js +3 -68
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +533 -43
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +54 -13
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +263 -13
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +376 -58
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +264 -7
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +414 -5
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +16 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +140 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +65 -6
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +45 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +146 -46
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +43 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +52 -3
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
- package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +20 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts +27 -0
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.js +29 -0
- package/dist/esm/databases/services/redis.service.js.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +134 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts +41 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +72 -4
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +60 -19
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.js +7 -1
- package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
- package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +306 -7
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +539 -45
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts +24 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +83 -11
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +76 -13
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js +36 -28
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +214 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js +566 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
- package/dist/esm/files/services/files.backend.service.d.ts +87 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +252 -19
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js +12 -0
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +200 -44
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +107 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +519 -56
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts +151 -41
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +308 -143
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/index.d.ts +15 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +45 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +82 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +20 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +21 -3
- package/dist/esm/inject/models/service-types.js.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.js +32 -4
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +84 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +235 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts +64 -2
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +152 -6
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +108 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +432 -101
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +54 -7
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts +5 -5
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +18 -8
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +20 -18
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js +1 -4
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js +1 -4
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts +3 -3
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js +26 -4
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts +9 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +88 -15
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.js +3 -3
- package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +91 -7
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +47 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +343 -77
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +3 -23
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +77 -2
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +5 -3
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +41 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +87 -4
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js +24 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts +117 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +175 -14
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +385 -49
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +12 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +41 -3
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +83 -20
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
- package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -9
- package/dist/esm/.builder.pid +0 -9
|
@@ -5,74 +5,61 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { injectable } from 'inversify';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
VIDEO_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.VIDEO_PROVIDER,
|
|
24
|
-
// Text → vector embeddings (RAG plan DL2) — its own protocol kind, wired like IMAGE_PROVIDER.
|
|
25
|
-
EMBEDDINGS_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER,
|
|
26
|
-
// Document bytes → text (OCR) — its own protocol kind, wired like EMBEDDINGS_PROVIDER. Without
|
|
27
|
-
// this row `getRuntimeContract(ref, DOCUMENT_EXTRACTION_PROVIDER)` is structurally `undefined`,
|
|
28
|
-
// so a provider could declare the transport and the engine could never resolve it.
|
|
29
|
-
DOCUMENT_EXTRACTION_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,
|
|
30
|
-
// Coding agents over the Agent Client Protocol — a session transport, not a
|
|
31
|
-
// request/response one, and its own engine capability slot.
|
|
32
|
-
AGENT_CLIENT_PROTOCOL: ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL,
|
|
33
|
-
};
|
|
34
|
-
const EXTERNAL_KIND_TO_BACKEND_PROTOCOL = new Map(Object.entries(BACKEND_PROTOCOL_TO_EXTERNAL_KIND).map(([protocol, kind]) => [kind, protocol]));
|
|
8
|
+
import { composeBackendProviders, } from '@wildo-ai/external-connectors-private/backend-runtime';
|
|
9
|
+
// The protocol→kind hand map that stood here (`BACKEND_PROTOCOL_TO_EXTERNAL_KIND`, a THIRD enumeration
|
|
10
|
+
// of the protocol population) was retired 2026-09-05 (#327): a runtime contract's `kind` IS the exchange
|
|
11
|
+
// kind now, and `composeBackendProviders` refuses a binding whose authoring key disagrees with it.
|
|
12
|
+
/**
|
|
13
|
+
* The registry a host serves before `initialize` runs: EMPTY, and composed rather than hand-built so
|
|
14
|
+
* it is the same shape every consumer expects.
|
|
15
|
+
*
|
|
16
|
+
* It used to be the engine's eagerly composed catalogue, and that single default field initialiser is
|
|
17
|
+
* what put twenty-two provider modules — six of them pulling an `@ai-sdk/*` client at module top
|
|
18
|
+
* level — into every backend, minion and worker boot graph before any filtering could happen (audit
|
|
19
|
+
* finding BE-1). Providers now arrive through `resolveBackendProviderRegistry`, which imports only
|
|
20
|
+
* the refs the process declared, so nothing about this module evaluates a provider.
|
|
21
|
+
*/
|
|
22
|
+
const EMPTY_BACKEND_PROVIDER_REGISTRY = composeBackendProviders({ modules: new Map() });
|
|
35
23
|
let BackendProviderRegistryBackendService = class BackendProviderRegistryBackendService {
|
|
36
|
-
registry =
|
|
24
|
+
registry = EMPTY_BACKEND_PROVIDER_REGISTRY;
|
|
37
25
|
/** @wildo_source:part:start saas.external-providers.backend-provider-registry.runtime-filter facet:layer:backend facet:family:provider-registry */
|
|
38
26
|
/**
|
|
39
|
-
*
|
|
40
|
-
* (auth, billing, notifications, …) will resolve through.
|
|
27
|
+
* Adopt the registry a host RESOLVED, and re-check it against what that host declared.
|
|
41
28
|
*
|
|
42
|
-
* This is the seam that decides which providers a backend host can actually
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* matching backend contribution (`runtimeTargets: [{ kind: 'backend' }]`) so
|
|
49
|
-
* `wildo config sync` lists its ref in the generated provider-runtime
|
|
50
|
-
* artifact — otherwise it is filtered out here.
|
|
29
|
+
* This is the seam that decides which providers a backend host can actually reach at runtime. A
|
|
30
|
+
* provider authored only in a NON-backend scope (e.g. `providers.scopes.frontendServices.<app>`)
|
|
31
|
+
* never enters this registry, so any backend feature keyed on it (billing, transactional email,
|
|
32
|
+
* server-side LLM calls) resolves nothing and fails at startup. Author the provider under
|
|
33
|
+
* `providers.scopes.backend` in `./wildo.saas.config.ts` so `wildo config sync` lists its ref in
|
|
34
|
+
* the generated provider-runtime artifact — otherwise it is filtered out here.
|
|
51
35
|
*
|
|
52
36
|
* Composition model:
|
|
53
37
|
*
|
|
54
|
-
* 1. The **
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
38
|
+
* 1. The **runtime artifact** (`providerRuntime`, generated by `wildo config sync` and imported by
|
|
39
|
+
* the application bootstrap) declares which providers this specific process may expose.
|
|
40
|
+
* 2. `resolveBackendProviderRegistry` LOADS exactly those refs — an application-supplied module
|
|
41
|
+
* first, then the engine's on-demand map, then a dynamic import of the package the artifact
|
|
42
|
+
* names — and hands the composed result here. Nothing a process did not declare is imported,
|
|
43
|
+
* which is the whole point: a worker that declares one email provider evaluates one provider.
|
|
44
|
+
* 3. This method re-filters that registry to the artifact's `providerRefs` and REFUSES if any ref
|
|
45
|
+
* is still missing. That is not redundant with the loader: the loader deliberately does not
|
|
46
|
+
* throw, so this stays the one place a deployment gap is reported, and it reports ALL of them at
|
|
47
|
+
* once rather than the first import that failed.
|
|
48
|
+
*
|
|
49
|
+
* When `providerRuntime` is `undefined` no filtering is applied — the host declared no topology, so
|
|
50
|
+
* there is nothing to filter against, and the loader will have handed over the whole engine
|
|
51
|
+
* catalogue (platform applications that initialize their config later).
|
|
65
52
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
53
|
+
* `unresolvedReasons` carries the loader's per-ref explanation into the refusal below, so an
|
|
54
|
+
* operator is told WHY a ref did not resolve (no package declares it / the import threw / the
|
|
55
|
+
* package exports no fragment) instead of only that it was absent.
|
|
69
56
|
*/
|
|
70
|
-
initialize(registry
|
|
57
|
+
initialize(registry, providerRuntime, unresolvedReasons) {
|
|
71
58
|
if (!providerRuntime) {
|
|
72
59
|
this.registry = registry;
|
|
73
60
|
return;
|
|
74
61
|
}
|
|
75
|
-
this.registry = filterRegistryByProviderRuntime(registry, providerRuntime);
|
|
62
|
+
this.registry = filterRegistryByProviderRuntime(registry, providerRuntime, unresolvedReasons);
|
|
76
63
|
}
|
|
77
64
|
/** @wildo_source:part:end saas.external-providers.backend-provider-registry.runtime-filter */
|
|
78
65
|
getRegistry() {
|
|
@@ -88,18 +75,13 @@ let BackendProviderRegistryBackendService = class BackendProviderRegistryBackend
|
|
|
88
75
|
return [...this.registry.modules.values()].filter((provider) => (this.getProtocolBinding(provider.metadata.ref, protocolKind) !== undefined));
|
|
89
76
|
}
|
|
90
77
|
getProtocolBinding(providerRef, protocolKind) {
|
|
91
|
-
|
|
92
|
-
if (!backendProtocol)
|
|
93
|
-
return undefined;
|
|
94
|
-
return this.getProvider(providerRef)?.protocols.find((protocol) => protocol.protocol === backendProtocol);
|
|
78
|
+
return this.getProvider(providerRef)?.protocols.find((binding) => binding.runtimeContract.kind === protocolKind);
|
|
95
79
|
}
|
|
96
80
|
getRuntimeContract(providerRef, protocolKind) {
|
|
97
81
|
return this.getProtocolBinding(providerRef, protocolKind)?.runtimeContract;
|
|
98
82
|
}
|
|
99
83
|
getProtocolKinds(providerRef) {
|
|
100
|
-
return (this.getProvider(providerRef)?.protocols ?? [])
|
|
101
|
-
.map((protocol) => BACKEND_PROTOCOL_TO_EXTERNAL_KIND[protocol.protocol])
|
|
102
|
-
.filter((kind) => Boolean(kind));
|
|
84
|
+
return (this.getProvider(providerRef)?.protocols ?? []).map((binding) => binding.runtimeContract.kind);
|
|
103
85
|
}
|
|
104
86
|
};
|
|
105
87
|
BackendProviderRegistryBackendService = __decorate([
|
|
@@ -136,7 +118,7 @@ export { BackendProviderRegistryBackendService };
|
|
|
136
118
|
* from this runtime, which is exactly what Step 1 of the provider
|
|
137
119
|
* migration is supposed to make impossible to ignore.
|
|
138
120
|
*/
|
|
139
|
-
function filterRegistryByProviderRuntime(registry, providerRuntime) {
|
|
121
|
+
function filterRegistryByProviderRuntime(registry, providerRuntime, unresolvedReasons) {
|
|
140
122
|
const authoredRefs = providerRuntime.providerRefs && providerRuntime.providerRefs.length > 0
|
|
141
123
|
? providerRuntime.providerRefs
|
|
142
124
|
: Object.keys(providerRuntime.scope?.providers ?? {});
|
|
@@ -153,8 +135,12 @@ function filterRegistryByProviderRuntime(registry, providerRuntime) {
|
|
|
153
135
|
filteredModules.set(brandedRef, module);
|
|
154
136
|
}
|
|
155
137
|
if (missingRefs.length > 0) {
|
|
138
|
+
const explained = missingRefs.sort().map((ref) => {
|
|
139
|
+
const reason = unresolvedReasons?.get(ref);
|
|
140
|
+
return reason ? `${ref} — ${reason}` : ref;
|
|
141
|
+
});
|
|
156
142
|
throw new Error(`[BackendProviderRegistry] generated provider runtime claims providers `
|
|
157
|
-
+ `not present in the composed backend catalog
|
|
143
|
+
+ `not present in the composed backend catalog:\n - ${explained.join('\n - ')}\n`
|
|
158
144
|
+ `This is a discovery gap — verify that each provider's contributing package `
|
|
159
145
|
+ `is reachable from the backend runtime owner and re-run \`wildo config sync\`.`);
|
|
160
146
|
}
|
package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-provider-registry.backend.service.js","sourceRoot":"","sources":["../../../../../src/external-providers/services/backend-provider-registry.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { injectable } from 'inversify';\nimport {\n EngineBackendProviderRegistry,\n composeBackendProviders,\n type BackendProviderModule,\n type BackendProviderRegistry,\n type BackendProtocolBinding,\n type ProviderProtocolRuntimeContract,\n} from '@wildo-ai/external-connectors-private/backend';\nimport { ExternalProvider_ExchangeProtocol_Kind } from '@wildo-ai/external-connectors-models';\nimport type { ProviderRuntimeArtifact } from '~wildo-backend-lib/config/models/provider-runtime-artifact.backend.schemas';\n\nconst BACKEND_PROTOCOL_TO_EXTERNAL_KIND: Record<string, ExternalProvider_ExchangeProtocol_Kind> = {\n REST_API: ExternalProvider_ExchangeProtocol_Kind.REST_API,\n WEBHOOK_ORIGINATOR: ExternalProvider_ExchangeProtocol_Kind.WEBHOOK_ORIGINATOR,\n LLM_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.LLM_PROVIDER,\n EMAIL_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER,\n SSO_OAUTH2: ExternalProvider_ExchangeProtocol_Kind.SSO_OAUTH2,\n BILLING_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.BILLING_PROVIDER,\n SMS_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n // Multimodal generation (artifact-modality axis). IMAGE_PROVIDER is wired;\n // AUDIO/VIDEO are reserved (protocol resolvable, but no runtime-contract arm\n // and no provider serves them yet).\n IMAGE_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.IMAGE_PROVIDER,\n AUDIO_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.AUDIO_PROVIDER,\n VIDEO_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.VIDEO_PROVIDER,\n // Text → vector embeddings (RAG plan DL2) — its own protocol kind, wired like IMAGE_PROVIDER.\n EMBEDDINGS_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER,\n // Document bytes → text (OCR) — its own protocol kind, wired like EMBEDDINGS_PROVIDER. Without\n // this row `getRuntimeContract(ref, DOCUMENT_EXTRACTION_PROVIDER)` is structurally `undefined`,\n // so a provider could declare the transport and the engine could never resolve it.\n DOCUMENT_EXTRACTION_PROVIDER: ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,\n // Coding agents over the Agent Client Protocol — a session transport, not a\n // request/response one, and its own engine capability slot.\n AGENT_CLIENT_PROTOCOL: ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL,\n};\n\nconst EXTERNAL_KIND_TO_BACKEND_PROTOCOL = new Map(\n Object.entries(BACKEND_PROTOCOL_TO_EXTERNAL_KIND).map(([protocol, kind]) => [kind, protocol]),\n);\n\n@injectable()\nexport class BackendProviderRegistryBackendService {\n private registry: BackendProviderRegistry = EngineBackendProviderRegistry;\n\n /** @wildo_source:part:start saas.external-providers.backend-provider-registry.runtime-filter facet:layer:backend facet:family:provider-registry */\n /**\n * Initialize the backend provider registry that all downstream services\n * (auth, billing, notifications, …) will resolve through.\n *\n * This is the seam that decides which providers a backend host can actually\n * reach at runtime. A provider authored only in a NON-backend scope (e.g.\n * `providers.scopes.frontendServices.<app>`) never enters this registry, so\n * any backend feature keyed on it (billing, transactional email, server-side\n * LLM calls) resolves nothing and fails at startup. Author the provider under\n * `providers.scopes.backend` in `./wildo.saas.config.ts` AND declare a\n * matching backend contribution (`runtimeTargets: [{ kind: 'backend' }]`) so\n * `wildo config sync` lists its ref in the generated provider-runtime\n * artifact — otherwise it is filtered out here.\n *\n * Composition model:\n *\n * 1. The **catalog** is the union of engine-shipped providers\n * (`EngineBackendProviderRegistry`) and any application-contributed\n * providers (passed in via `registry`). This is what is *available*.\n * 2. The **runtime artifact** (`providerRuntime`, generated by\n * `wildo config sync` and imported by the application bootstrap)\n * declares which providers this specific backend process is *allowed*\n * to expose, scoped by the authored `providers.scopes.backend`.\n * 3. The active registry is the catalog filtered to the artifact's\n * `providerRefs`. Any ref claimed by the artifact but missing from the\n * catalog is a deployment-time error and fails startup loudly — there\n * is no silent fallback to the unfiltered catalog.\n *\n * When `providerRuntime` is `undefined`, no filtering is applied and the\n * full catalog is exposed (legacy / pre-materialization callers, and\n * platform applications that initialize their config later).\n */\n initialize(\n registry: BackendProviderRegistry = EngineBackendProviderRegistry,\n providerRuntime?: ProviderRuntimeArtifact,\n ): void {\n if (!providerRuntime) {\n this.registry = registry;\n return;\n }\n\n this.registry = filterRegistryByProviderRuntime(registry, providerRuntime);\n }\n /** @wildo_source:part:end saas.external-providers.backend-provider-registry.runtime-filter */\n\n getRegistry(): BackendProviderRegistry {\n return this.registry;\n }\n\n getProvider(providerRef: string): BackendProviderModule | undefined {\n return this.registry.getProviderByRef(providerRef as never);\n }\n\n hasProvider(providerRef: string): boolean {\n return Boolean(this.getProvider(providerRef));\n }\n\n getProvidersWithProtocol(protocolKind: ExternalProvider_ExchangeProtocol_Kind): BackendProviderModule[] {\n return [...this.registry.modules.values()].filter((provider) => (\n this.getProtocolBinding(provider.metadata.ref, protocolKind) !== undefined\n ));\n }\n\n getProtocolBinding(\n providerRef: string,\n protocolKind: ExternalProvider_ExchangeProtocol_Kind,\n ): BackendProtocolBinding | undefined {\n const backendProtocol = EXTERNAL_KIND_TO_BACKEND_PROTOCOL.get(protocolKind);\n if (!backendProtocol) return undefined;\n return this.getProvider(providerRef)?.protocols.find((protocol) => protocol.protocol === backendProtocol);\n }\n\n getRuntimeContract(\n providerRef: string,\n protocolKind: ExternalProvider_ExchangeProtocol_Kind,\n ): ProviderProtocolRuntimeContract | undefined {\n return this.getProtocolBinding(providerRef, protocolKind)?.runtimeContract;\n }\n\n getProtocolKinds(providerRef: string): ExternalProvider_ExchangeProtocol_Kind[] {\n return (this.getProvider(providerRef)?.protocols ?? [])\n .map((protocol) => BACKEND_PROTOCOL_TO_EXTERNAL_KIND[protocol.protocol])\n .filter((kind): kind is ExternalProvider_ExchangeProtocol_Kind => Boolean(kind));\n }\n}\n\n/**\n * Build a restricted registry containing only the providers authored for\n * this backend process by the materialized `providerRuntime` artifact.\n *\n * The authored ref set comes from the artifact in this priority order:\n *\n * 1. `providerRuntime.providerRefs` — the canonical projection emitted by\n * `materializeSaasProviderRuntimeArtifacts`.\n * 2. Keys of `providerRuntime.scope.providers` — fallback for older\n * artifacts written before `providerRefs` was added.\n *\n * Post-2026-05-10 invariant: after the Option-B fix landed in\n * `selectScopedProviderRuntimeArtifact` (canonical) and the per-host\n * projection sites in minion / Node-worker startup (`selectMinionProviderRuntimeScope`,\n * `selectWorkerProviderRuntimeScope`), the canonical path ALWAYS\n * populates `providerRefs` from the per-host projected scope. The\n * fallback branch is unreachable for any artifact produced by the\n * current CLI sync; it only fires for legacy generated modules\n * predating that projection fix. Kept as defense-in-depth — the\n * schema marks `providerRefs` optional and would let a hand-crafted\n * artifact omit the field.\n *\n * If a ref is claimed by the artifact but missing from the composed\n * catalog, startup fails with a single error naming every missing ref.\n * This is deployment-correctness, not defensive coding: the artifact is\n * generated from `wildo.saas.config.ts` after companion-export discovery,\n * so any miss means the contributing package is not actually reachable\n * from this runtime, which is exactly what Step 1 of the provider\n * migration is supposed to make impossible to ignore.\n */\nfunction filterRegistryByProviderRuntime(\n registry: BackendProviderRegistry,\n providerRuntime: ProviderRuntimeArtifact,\n): BackendProviderRegistry {\n const authoredRefs = providerRuntime.providerRefs && providerRuntime.providerRefs.length > 0\n ? providerRuntime.providerRefs\n : Object.keys(providerRuntime.scope?.providers ?? {});\n\n const authoredRefSet = new Set(authoredRefs);\n\n type BrandedRef = Parameters<typeof registry.getProviderByRef>[0];\n const filteredModules = new Map<BrandedRef, BackendProviderModule>();\n const missingRefs: string[] = [];\n\n for (const ref of authoredRefSet) {\n const brandedRef = ref as BrandedRef;\n const module = registry.getProviderByRef(brandedRef);\n if (!module) {\n missingRefs.push(ref);\n continue;\n }\n filteredModules.set(brandedRef, module);\n }\n\n if (missingRefs.length > 0) {\n throw new Error(\n `[BackendProviderRegistry] generated provider runtime claims providers `\n + `not present in the composed backend catalog: [${missingRefs.sort().join(', ')}]. `\n + `This is a discovery gap — verify that each provider's contributing package `\n + `is reachable from the backend runtime owner and re-run \\`wildo config sync\\`.`,\n );\n }\n\n return composeBackendProviders({ modules: filteredModules });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"backend-provider-registry.backend.service.js","sourceRoot":"","sources":["../../../../../src/external-providers/services/backend-provider-registry.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { injectable } from 'inversify';\nimport {\n composeBackendProviders,\n type BackendProviderModule,\n type BackendProviderRegistry,\n type BackendProtocolBinding,\n type ProviderProtocolRuntimeContract,\n} from '@wildo-ai/external-connectors-private/backend-runtime';\nimport { ExternalProvider_ExchangeProtocol_Kind } from '@wildo-ai/external-connectors-models';\nimport type { ProviderRuntimeArtifact } from '~wildo-backend-lib/config/models/provider-runtime-artifact.backend.schemas';\n\n// The protocol→kind hand map that stood here (`BACKEND_PROTOCOL_TO_EXTERNAL_KIND`, a THIRD enumeration\n// of the protocol population) was retired 2026-09-05 (#327): a runtime contract's `kind` IS the exchange\n// kind now, and `composeBackendProviders` refuses a binding whose authoring key disagrees with it.\n\n/**\n * The registry a host serves before `initialize` runs: EMPTY, and composed rather than hand-built so\n * it is the same shape every consumer expects.\n *\n * It used to be the engine's eagerly composed catalogue, and that single default field initialiser is\n * what put twenty-two provider modules — six of them pulling an `@ai-sdk/*` client at module top\n * level — into every backend, minion and worker boot graph before any filtering could happen (audit\n * finding BE-1). Providers now arrive through `resolveBackendProviderRegistry`, which imports only\n * the refs the process declared, so nothing about this module evaluates a provider.\n */\nconst EMPTY_BACKEND_PROVIDER_REGISTRY: BackendProviderRegistry = composeBackendProviders({ modules: new Map() });\n\n@injectable()\nexport class BackendProviderRegistryBackendService {\n private registry: BackendProviderRegistry = EMPTY_BACKEND_PROVIDER_REGISTRY;\n\n /** @wildo_source:part:start saas.external-providers.backend-provider-registry.runtime-filter facet:layer:backend facet:family:provider-registry */\n /**\n * Adopt the registry a host RESOLVED, and re-check it against what that host declared.\n *\n * This is the seam that decides which providers a backend host can actually reach at runtime. A\n * provider authored only in a NON-backend scope (e.g. `providers.scopes.frontendServices.<app>`)\n * never enters this registry, so any backend feature keyed on it (billing, transactional email,\n * server-side LLM calls) resolves nothing and fails at startup. Author the provider under\n * `providers.scopes.backend` in `./wildo.saas.config.ts` so `wildo config sync` lists its ref in\n * the generated provider-runtime artifact — otherwise it is filtered out here.\n *\n * Composition model:\n *\n * 1. The **runtime artifact** (`providerRuntime`, generated by `wildo config sync` and imported by\n * the application bootstrap) declares which providers this specific process may expose.\n * 2. `resolveBackendProviderRegistry` LOADS exactly those refs — an application-supplied module\n * first, then the engine's on-demand map, then a dynamic import of the package the artifact\n * names — and hands the composed result here. Nothing a process did not declare is imported,\n * which is the whole point: a worker that declares one email provider evaluates one provider.\n * 3. This method re-filters that registry to the artifact's `providerRefs` and REFUSES if any ref\n * is still missing. That is not redundant with the loader: the loader deliberately does not\n * throw, so this stays the one place a deployment gap is reported, and it reports ALL of them at\n * once rather than the first import that failed.\n *\n * When `providerRuntime` is `undefined` no filtering is applied — the host declared no topology, so\n * there is nothing to filter against, and the loader will have handed over the whole engine\n * catalogue (platform applications that initialize their config later).\n *\n * `unresolvedReasons` carries the loader's per-ref explanation into the refusal below, so an\n * operator is told WHY a ref did not resolve (no package declares it / the import threw / the\n * package exports no fragment) instead of only that it was absent.\n */\n initialize(\n registry: BackendProviderRegistry,\n providerRuntime?: ProviderRuntimeArtifact,\n unresolvedReasons?: ReadonlyMap<string, string>,\n ): void {\n if (!providerRuntime) {\n this.registry = registry;\n return;\n }\n\n this.registry = filterRegistryByProviderRuntime(registry, providerRuntime, unresolvedReasons);\n }\n /** @wildo_source:part:end saas.external-providers.backend-provider-registry.runtime-filter */\n\n getRegistry(): BackendProviderRegistry {\n return this.registry;\n }\n\n getProvider(providerRef: string): BackendProviderModule | undefined {\n return this.registry.getProviderByRef(providerRef as never);\n }\n\n hasProvider(providerRef: string): boolean {\n return Boolean(this.getProvider(providerRef));\n }\n\n getProvidersWithProtocol(protocolKind: ExternalProvider_ExchangeProtocol_Kind): BackendProviderModule[] {\n return [...this.registry.modules.values()].filter((provider) => (\n this.getProtocolBinding(provider.metadata.ref, protocolKind) !== undefined\n ));\n }\n\n getProtocolBinding(\n providerRef: string,\n protocolKind: ExternalProvider_ExchangeProtocol_Kind,\n ): BackendProtocolBinding | undefined {\n return this.getProvider(providerRef)?.protocols.find((binding) => binding.runtimeContract.kind === protocolKind);\n }\n\n getRuntimeContract(\n providerRef: string,\n protocolKind: ExternalProvider_ExchangeProtocol_Kind,\n ): ProviderProtocolRuntimeContract | undefined {\n return this.getProtocolBinding(providerRef, protocolKind)?.runtimeContract;\n }\n\n getProtocolKinds(providerRef: string): ExternalProvider_ExchangeProtocol_Kind[] {\n return (this.getProvider(providerRef)?.protocols ?? []).map((binding) => binding.runtimeContract.kind);\n }\n}\n\n/**\n * Build a restricted registry containing only the providers authored for\n * this backend process by the materialized `providerRuntime` artifact.\n *\n * The authored ref set comes from the artifact in this priority order:\n *\n * 1. `providerRuntime.providerRefs` — the canonical projection emitted by\n * `materializeSaasProviderRuntimeArtifacts`.\n * 2. Keys of `providerRuntime.scope.providers` — fallback for older\n * artifacts written before `providerRefs` was added.\n *\n * Post-2026-05-10 invariant: after the Option-B fix landed in\n * `selectScopedProviderRuntimeArtifact` (canonical) and the per-host\n * projection sites in minion / Node-worker startup (`selectMinionProviderRuntimeScope`,\n * `selectWorkerProviderRuntimeScope`), the canonical path ALWAYS\n * populates `providerRefs` from the per-host projected scope. The\n * fallback branch is unreachable for any artifact produced by the\n * current CLI sync; it only fires for legacy generated modules\n * predating that projection fix. Kept as defense-in-depth — the\n * schema marks `providerRefs` optional and would let a hand-crafted\n * artifact omit the field.\n *\n * If a ref is claimed by the artifact but missing from the composed\n * catalog, startup fails with a single error naming every missing ref.\n * This is deployment-correctness, not defensive coding: the artifact is\n * generated from `wildo.saas.config.ts` after companion-export discovery,\n * so any miss means the contributing package is not actually reachable\n * from this runtime, which is exactly what Step 1 of the provider\n * migration is supposed to make impossible to ignore.\n */\nfunction filterRegistryByProviderRuntime(\n registry: BackendProviderRegistry,\n providerRuntime: ProviderRuntimeArtifact,\n unresolvedReasons?: ReadonlyMap<string, string>,\n): BackendProviderRegistry {\n const authoredRefs = providerRuntime.providerRefs && providerRuntime.providerRefs.length > 0\n ? providerRuntime.providerRefs\n : Object.keys(providerRuntime.scope?.providers ?? {});\n\n const authoredRefSet = new Set(authoredRefs);\n\n type BrandedRef = Parameters<typeof registry.getProviderByRef>[0];\n const filteredModules = new Map<BrandedRef, BackendProviderModule>();\n const missingRefs: string[] = [];\n\n for (const ref of authoredRefSet) {\n const brandedRef = ref as BrandedRef;\n const module = registry.getProviderByRef(brandedRef);\n if (!module) {\n missingRefs.push(ref);\n continue;\n }\n filteredModules.set(brandedRef, module);\n }\n\n if (missingRefs.length > 0) {\n const explained = missingRefs.sort().map((ref) => {\n const reason = unresolvedReasons?.get(ref);\n return reason ? `${ref} — ${reason}` : ref;\n });\n throw new Error(\n `[BackendProviderRegistry] generated provider runtime claims providers `\n + `not present in the composed backend catalog:\\n - ${explained.join('\\n - ')}\\n`\n + `This is a discovery gap — verify that each provider's contributing package `\n + `is reachable from the backend runtime owner and re-run \\`wildo config sync\\`.`,\n );\n }\n\n return composeBackendProviders({ modules: filteredModules });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-extraction.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/external-providers/services/document-extraction.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,EAQL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gCAAgC,EAIhC,KAAK,oDAAoD,
|
|
1
|
+
{"version":3,"file":"document-extraction.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/external-providers/services/document-extraction.backend.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
58
58
|
};
|
|
59
59
|
import { injectable, inject, optional } from 'inversify';
|
|
60
60
|
import { EngineCapability, ErrorType, ErrorCustomMessageReference, AgentCallOutcome, AgentCallTraceKind, AgentTraceabilityLevel, } from '@wildo-ai/saas-models';
|
|
61
|
-
import { DocumentExtractionProvider_OperationKey, ExternalProvider_ExchangeProtocol_Kind, resolveDocumentExtractionModelForApplicability, } from '@wildo-ai/external-connectors-models';
|
|
61
|
+
import { DocumentExtractionProvider_OperationKey, ExternalProvider_ExchangeProtocol_Kind, resolveDocumentExtractionModelForApplicability, ProviderProtocolRuntimeKind, } from '@wildo-ai/external-connectors-models';
|
|
62
62
|
import { SAAS_SERVICE_TYPES } from '../../inject/models/service-types.js';
|
|
63
63
|
import { ErrorBuilderBackendService } from '../../errors/services/error-builder.backend.service.js';
|
|
64
64
|
/**
|
|
@@ -162,7 +162,7 @@ let DocumentExtractionBackendService = class DocumentExtractionBackendService {
|
|
|
162
162
|
return { configured: false, reason: 'no_provider_for_capability' };
|
|
163
163
|
}
|
|
164
164
|
const runtimeContract = this.externalProvidersRegistry.getProviderRuntimeContract(providerRef, ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER);
|
|
165
|
-
if (runtimeContract?.kind !==
|
|
165
|
+
if (runtimeContract?.kind !== ProviderProtocolRuntimeKind.DOCUMENT_EXTRACTION) {
|
|
166
166
|
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
|
|
167
167
|
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
168
168
|
context: {
|
|
@@ -285,7 +285,7 @@ let DocumentExtractionBackendService = class DocumentExtractionBackendService {
|
|
|
285
285
|
// read the contract through the CONFIG registry, and this confirms the RUNTIME registry still
|
|
286
286
|
// agrees. Unreachable unless the registry mutated mid-call; named rather than assumed.
|
|
287
287
|
const contract = this.backendProviderRegistry.getRuntimeContract(binding.providerRef, protocolKind);
|
|
288
|
-
if (contract?.kind !==
|
|
288
|
+
if (contract?.kind !== ProviderProtocolRuntimeKind.DOCUMENT_EXTRACTION) {
|
|
289
289
|
throw this.errorBuilder.buildError(ErrorType.INTERNAL, undefined, {
|
|
290
290
|
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
291
291
|
context: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-extraction.backend.service.js","sourceRoot":"","sources":["../../../../../src/external-providers/services/document-extraction.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;;;;;;;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,2BAA2B,EAC3B,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GAIvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,uCAAuC,EACvC,sCAAsC,EACtC,8CAA8C,GAE/C,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAI9G;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAO,CAAC;AAE9D,wGAAwG;AACxG,MAAM,wCAAwC,GAAG,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,4BAA4B,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAN,IAAY,8BAaX;AAbD,WAAY,8BAA8B;IACxC;;;;OAIG;IACH,6EAA2C,CAAA;IAC3C;;;;OAIG;IACH,+EAA6C,CAAA;AAC/C,CAAC,EAbW,8BAA8B,KAA9B,8BAA8B,QAazC;AAED,kFAAkF;AAClF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAE9B;IAGA;IAJlB,YACkB,YAA4C,EAC5D,OAAe;IACf,kGAAkG;IAClF,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,iBAAY,GAAZ,YAAY,CAAgC;QAG5C,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAkEM,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAKxB;IAEA;IAEA;IAEA;IAIA;IAGA;IAjBT,QAAQ,CAA+D;IAEjF,YAEmB,MAAqB,EAErB,YAAwC,EAExC,yBAAkE,EAElE,uBAA8D,EAI9D,cAAmC,EAGnC,gBAA0C;QAb1C,WAAM,GAAN,MAAM,CAAe;QAErB,iBAAY,GAAZ,YAAY,CAA4B;QAExC,8BAAyB,GAAzB,yBAAyB,CAAyC;QAElE,4BAAuB,GAAvB,uBAAuB,CAAuC;QAI9D,mBAAc,GAAd,cAAc,CAAqB;QAGnC,qBAAgB,GAAhB,gBAAgB,CAA0B;QAE3D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;;OASG;IACI,cAAc,CAAC,aAA+C;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,qCAAqC,CACtF,gBAAgB,CAAC,sBAAsB,CACxC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAC/E,WAAW,EACX,sCAAsC,CAAC,4BAA4B,CACpE,CAAC;QACF,IAAI,eAAe,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,WAAW;oBACX,OAAO,EAAE,aAAa,WAAW,yGAAyG;iBAC3I;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,0CAA0C,CAAC,WAAW,CAAC,CAAC;QAClH,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,uCAAuC,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAChG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,WAAW;oBACX,OAAO,EAAE,aAAa,WAAW,sFAAsF;iBACxH;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,8CAA8C,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;QAClG,6FAA6F;QAC7F,uFAAuF;QACvF,oEAAoE;QACpE,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,WAAW;oBACX,aAAa;oBACb,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;oBAC7C,OAAO,EAAE,kEAAkE,aAAa,kBAAkB,WAAW,IAAI;iBAC1H;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;gBACP,aAAa;gBACb,WAAW;gBACX,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,kBAAkB,EAAE,UAAU,CAAC,KAAK,CAAC,kBAAkB;gBACvD,gBAAgB,EAAE,IAAI,CAAC,GAAG,CACxB,eAAe,CAAC,gBAAgB,IAAI,6CAA6C,EACjF,6CAA6C,CAC9C;gBACD,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,wCAAwC;gBACpF,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,YAAY,EAAE,eAAe,CAAC,YAAY;gBAC1C,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU;gBACnD,YAAY,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;aAClD;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,OAA0C,EAAE,QAAgB,EAAE,UAAkB;QAC9F,OAAO,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAC/G,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,KAAK,CAAC,mBAAmB,CAC9B,OAAmC;QAEnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,OAAO,EAAE,qFAAqF;0BAC1F,2HAA2H;iBAChI;aACF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE;gBAClE,sBAAsB,EAAE,2BAA2B,CAAC,UAAU;gBAC9D,OAAO,EAAE;oBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;oBAC3C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;oBAC9C,OAAO,EAAE,qFAAqF;0BAC1F,2FAA2F;iBAChG;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,sCAAsC,CAAC,4BAA4B,CAAC;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE;gBACrE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,YAAY;oBACZ,OAAO,EAAE,uHAAuH;iBACjI;aACF,CAAC,CAAC;QACL,CAAC;QACD,iGAAiG;QACjG,8FAA8F;QAC9F,uFAAuF;QACvF,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACpG,IAAI,QAAQ,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE;gBAChE,sBAAsB,EAAE,2BAA2B,CAAC,aAAa;gBACjE,OAAO,EAAE;oBACP,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,OAAO,EAAE,kFAAkF;iBAC5F;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;gBAC/C,OAAO,EAAE,gBAAgB,CAAC,OAAO;gBACjC,aAAa;gBACb,SAAS;gBACT,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAClC,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;gBAC/C,OAAO,EAAE,gBAAgB,CAAC,OAAO;gBACjC,aAAa;gBACb,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,iBAAiB,CAC7B,OAA0C,EAC1C,MAAc,EACd,OAAmC;QAEnC,IAAI,SAA8C,CAAC;QACnD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7E,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,uBAAuB,CAAC;uBAC1C,KAAK,CAAC,YAAY,KAAK,8BAA8B,CAAC,oBAAoB,EAAE,CAAC;oBAChF,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,oEAAoE,EAAE;oBAClF,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,OAAO;oBACP,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,oGAAoG;QACpG,MAAM,SAAS,IAAI,IAAI,uBAAuB,CAC5C,8BAA8B,CAAC,oBAAoB,EACnD,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,UAAU,CACtB,OAA0C,EAC1C,MAAc,EACd,OAAmC;QAEnC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAEjG,+FAA+F;QAC/F,+FAA+F;QAC/F,gGAAgG;QAChG,6FAA6F;QAC7F,6FAA6F;QAC7F,kDAAkD;QAClD,MAAM,WAAW,GAAG,QAAQ,OAAO,CAAC,QAAQ,WAAW,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAE7F,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,sCAAsC,CAAC,CAAC;QAClG,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,EAAE;iBAC/D;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE;oBAC7D,wFAAwF;oBACxF,uFAAuF;oBACvF,oBAAoB,EAAE,KAAK;iBAC5B,CAAC;gBACF,MAAM,EAAE,eAAe,CAAC,MAAM;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,cAAc,EAAE,CAAC;YACxB,0FAA0F;YAC1F,MAAM,IAAI,uBAAuB,CAC/B,8BAA8B,CAAC,oBAAoB,EACnD,iCAAiC,OAAO,CAAC,WAAW,qBAAqB;kBACrE,CAAC,cAAc,YAAY,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CACxF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,oEAAoE;YACpE,+FAA+F;YAC/F,8FAA8F;YAC9F,wFAAwF;YACxF,gEAAgE;YAChE,gEAAgE;YAChE,yDAAyD;YACzD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;YAC7E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;YAC/E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC;YAC7C,MAAM,YAAY,GAAG,iBAAiB,IAAI,mBAAmB,IAAI,aAAa;gBAC5E,CAAC,CAAC,8BAA8B,CAAC,oBAAoB;gBACrD,CAAC,CAAC,8BAA8B,CAAC,mBAAmB,CAAC;YACvD,4FAA4F;YAC5F,uDAAuD;YACvD,MAAM,IAAI,uBAAuB,CAC/B,YAAY,EACZ,iCAAiC,OAAO,CAAC,WAAW,mBAAmB,QAAQ,CAAC,MAAM,GAAG,EACzF,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,MAA0C,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuC,CAAC;QACzE,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,wFAAwF;YACxF,MAAM,IAAI,uBAAuB,CAC/B,8BAA8B,CAAC,oBAAoB,EACnD,iCAAiC,OAAO,CAAC,WAAW,4CAA4C;kBAC5F,CAAC,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAC5E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,2FAA2F;YAC3F,2FAA2F;YAC3F,4EAA4E;YAC5E,MAAM,IAAI,uBAAuB,CAC/B,8BAA8B,CAAC,oBAAoB,EACnD,iCAAiC,OAAO,CAAC,WAAW,4CAA4C,CACjG,CAAC;QACJ,CAAC;QAED,8FAA8F;QAC9F,4FAA4F;QAC5F,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExG,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC9B,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;YACtE,KAAK,EAAE;gBACL,GAAG,CAAC,OAAO,MAAM,CAAC,UAAU,EAAE,eAAe,KAAK,QAAQ;oBACxD,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE;oBACvD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,MAAM,CAAC,UAAU,EAAE,cAAc,KAAK,QAAQ;oBACvD,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAC/B,OAAmC,EACnC,OAA0C,EAC1C,IAQC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC;QAC1E,IAAI,KAAK,KAAK,sBAAsB,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClD,MAAM,KAAK,GAAmB;YAC5B,QAAQ,EAAE,mCAAmC;YAC7C,0FAA0F;YAC1F,0FAA0F;YAC1F,yFAAyF;YACzF,4FAA4F;YAC5F,yFAAyF;YACzF,IAAI,EAAE,kBAAkB,CAAC,UAAU;YACnC,QAAQ,EAAE,OAAO,CAAC,WAAW;YAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,wEAAwE;YACxE,KAAK,EAAE;gBACL,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE;YACD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO;gBAC3C,CAAC,CAAC;oBACE,MAAM,EAAE;wBACN,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,gFAAgF;wBAChF,+EAA+E;wBAC/E,mFAAmF;wBACnF,0EAA0E;wBAC1E,iDAAiD;wBACjD,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnG;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,aAAa;gBACb,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,KAAK,EAAE;oBACL,qFAAqF;oBACrF,wFAAwF;oBACxF,qFAAqF;oBACrF,qFAAqF;oBACrF,uFAAuF;oBACvF,sFAAsF;oBACtF,4BAA4B;oBAC5B,kBAAkB,EAAE,IAAI;iBACzB;aACF;YACD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO;gBAC3C,CAAC,CAAC;oBACE,KAAK,EAAE,IAAI,CAAC,KAAK,YAAY,uBAAuB;wBAClD,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;wBAChE,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK;4BAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;4BACxD,CAAC,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE;iBAClE;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,mDAAmD,EAAE;gBACjE,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,KAAK,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AAzcY,gCAAgC;IAD5C,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAEjC,WAAA,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;IAE9C,WAAA,MAAM,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,CAAA;IAE3D,WAAA,MAAM,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,CAAA;IAGzD,WAAA,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;IAC7C,WAAA,QAAQ,EAAE,CAAA;IAEV,WAAA,MAAM,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAA;IAClD,WAAA,QAAQ,EAAE,CAAA;+CAVoB,0BAA0B;GAPhD,gCAAgC,CAyc5C","sourcesContent":["/**\n * Document-extraction execution service — the ONE seam through which the engine turns document\n * BYTES into text using an external provider (OCR).\n *\n * Its only caller is `FileTextExtractionBackendService`, which owns the CHOICE between this\n * provider path and the local `pdfjs-dist` text-layer path. That split is deliberate: this\n * service knows how to talk to a provider and nothing about fallbacks, and the file service knows\n * about fallbacks and nothing about HTTP.\n *\n * ## Selection is by APPLICABILITY CLASS, never by model id (the standing model-selection rule)\n *\n * A caller names a {@link DocumentExtraction_Applicability} class; this service resolves\n * 1. the PROVIDER — the application's `EngineCapability.AI_DOCUMENT_EXTRACTION` selection\n * (`defineSaaSProviders` → `selection[AI_DOCUMENT_EXTRACTION].primary`), independent of the\n * chat and embeddings providers by construction;\n * 2. the MODEL — `resolveDocumentExtractionModelForApplicability` against the framework catalog.\n *\n * ## Why a direct HTTPS call instead of the AI SDK\n *\n * Every sibling provider seam in this package hands an API key to an `@ai-sdk/*` client factory.\n * This one cannot: **`@ai-sdk/mistral@4.0.12` has ZERO OCR support** — the package exports no\n * `ocr` symbol and no client method reaching `POST /v1/ocr`, because the AI SDK models language,\n * embedding and image models and document extraction is none of them. So the request is built\n * here from the provider's declared `baseUrl`, `endpointPath` and `apiKey` header shape.\n *\n * That is a cost, and it is worth naming what it buys back: the contract declares the route and\n * the auth header, so a second provider in this family is a module edit rather than a change here.\n *\n * ## Failure posture — THREE outcomes, not two, and the third is the whole point\n *\n * A caller must be able to distinguish \"these bytes are not a readable document\" from \"I could\n * not ask\". Collapsing them is not a tidiness issue: `RagIngestionBackendService` deletes a\n * field's entire chunk set when an ingestion pass yields no text, so reporting a provider OUTAGE\n * as an unreadable document would silently destroy a live, already-embedded corpus and report\n * success. {@link DocumentExtractionFailureClass} carries that distinction, and\n * `FileTextExtractionBackendService` branches on it.\n *\n * ## Observability\n *\n * Every physical extraction emits ONE agent-call trace through the standard sink chain. Its\n * `input` and `output` are SUMMARIES — mime type, byte length, page count, character count. The\n * document bytes and the extracted text never enter a trace, a log, or an error `context` at any\n * verbosity: an uploaded contract is application content, not telemetry. The API key is read\n * through the standard provider-secret path and is never logged, never placed in an error\n * context, and never included in a diagnostic dump of the request.\n */\n\nimport { injectable, inject, optional } from 'inversify';\nimport {\n EngineCapability,\n ErrorType,\n ErrorCustomMessageReference,\n AgentCallOutcome,\n AgentCallTraceKind,\n AgentTraceabilityLevel,\n type AgentCallTrace,\n type AgentCallTraceSink,\n type AgentTraceabilityPolicy,\n} from '@wildo-ai/saas-models';\nimport {\n DocumentExtraction_Applicability,\n DocumentExtractionProvider_OperationKey,\n ExternalProvider_ExchangeProtocol_Kind,\n resolveDocumentExtractionModelForApplicability,\n type DocumentExtractionProvider_ExtractDocumentTextOutput,\n} from '@wildo-ai/external-connectors-models';\n\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\nimport type { BackendProviderRegistryBackendService } from '~wildo-backend-lib/external-providers/services/backend-provider-registry.backend.service';\n\n/**\n * Engine-side ceiling on the document bytes sent in one extraction request, applied as\n * `min(provider-declared, engine)` — and UNCONDITIONAL, so a provider that declares no limit\n * (the wired one does not; Mistral publishes none) still cannot produce an unbounded request.\n *\n * 24 MB, chosen from measurement rather than convention. Live probes against `POST /v1/ocr` on\n * 2026-08-27, isolating the body-size axis with one-page documents:\n * - 8 MB document (10.7 MB encoded body) → HTTP 200 in 4.9 s\n * - 32 MB document (42.7 MB encoded body) → HTTP 200 in 19.8 s\n * Nothing was refused, so the provider's true maximum is UNESTABLISHED. What the probes DID\n * establish is that latency scales with body size, and 20 s inside a synchronous extraction call\n * is already past the point where the local fallback (240 ms for a 129-page document) is the\n * better answer. So this ceiling exists to bound LATENCY and memory, not to mirror a published\n * limit — because there is no published limit to mirror.\n *\n * Base64 inflates by 4/3, so 24 MB of document is a ~32 MB request body.\n */\nexport const DOCUMENT_EXTRACTION_ENGINE_MAX_DOCUMENT_BYTES = 24 * 1024 * 1024;\n\n/**\n * Wall-clock budget for one extraction request. Measured basis: a 129-page, 994 KB document\n * completed in 4.4 s, and the 32 MB probe took 19.8 s. 120 s leaves generous headroom over both\n * while still guaranteeing the call terminates — an extraction runs inside an ingestion sweep,\n * and a request that hangs forever would stall the sweep rather than merely lose one document.\n */\nexport const DOCUMENT_EXTRACTION_REQUEST_TIMEOUT_MS = 120_000;\n\n/** Attempts per extraction when the provider declares none. See the Mistral module for why 2, not 3. */\nconst DOCUMENT_EXTRACTION_DEFAULT_MAX_ATTEMPTS = 2;\n\n/**\n * The `agentRef` extraction traces carry. Not a registered flows-actors agent — extraction is a\n * protocol-kind execution, not an agent modality — but the trace contract keys analytics spans on\n * `agentRef`, so the engine names its extraction executor stably here.\n */\nexport const DOCUMENT_EXTRACTION_TRACE_AGENT_REF = 'engine:document-extraction';\n\n/**\n * WHY an extraction failed, in the only two senses a caller can act on differently.\n *\n * This is the service's most load-bearing output after the text itself. See the file header: the\n * consequence of confusing the two is corpus deletion, not a misleading log line.\n */\nexport enum DocumentExtractionFailureClass {\n /**\n * The provider read the request and judged the DOCUMENT unprocessable — corrupt bytes, an\n * unsupported format, a password-protected file. PERMANENT: re-sending the same bytes cannot\n * succeed, so a sweep may safely stop retrying and skip the document.\n */\n UNREADABLE_DOCUMENT = 'unreadable_document',\n /**\n * The provider could not be reached, refused the credential, throttled, or failed internally —\n * a network error, a 401/403, a 429, any 5xx, or a timeout. TRANSIENT and, decisively, says\n * NOTHING about the document. A caller must not conclude anything about the bytes from this.\n */\n PROVIDER_UNAVAILABLE = 'provider_unavailable',\n}\n\n/** A failed extraction, classified. Thrown as {@link DocumentExtractionError}. */\nexport class DocumentExtractionError extends Error {\n constructor(\n public readonly failureClass: DocumentExtractionFailureClass,\n message: string,\n /** Provider HTTP status, when the failure came from a response rather than from the transport. */\n public readonly httpStatus?: number,\n ) {\n super(message);\n this.name = 'DocumentExtractionError';\n }\n}\n\n/** The resolved class→provider→model binding for extraction. */\nexport interface DocumentExtractionResolvedBinding {\n applicability: DocumentExtraction_Applicability;\n providerRef: string;\n /** Concrete model id — never authored at a call site. */\n model: string;\n /** MIME types the resolved model can process, from its catalog row. */\n supportedMimeTypes: readonly string[];\n /** Effective document-byte ceiling: `min(provider-declared, engine ceiling)`. */\n maxDocumentBytes: number;\n /** Attempts per call, including the first. */\n maxAttempts: number;\n baseUrl: string;\n endpointPath: string;\n apiKeyHeaderName: string;\n apiKeyPrefix: string;\n}\n\n/** Discriminated \"is provider extraction possible here?\" answer. */\nexport type DocumentExtractionBindingResolution =\n | { configured: true; binding: DocumentExtractionResolvedBinding }\n | {\n configured: false;\n /**\n * Why nothing is configured. Always the BENIGN shape — no provider fills the capability.\n * A provider that IS selected but cannot serve THROWS instead, because a misconfiguration\n * that presented as a deliberate opt-out would never be noticed.\n */\n reason: 'no_provider_for_capability';\n };\n\nexport interface ExtractDocumentTextRequest {\n /**\n * The document. A `Buffer` on the request object rather than a field of a Zod-shaped input, so\n * that no diagnostic path can casually serialize an application's private document — see the\n * input schema's JSDoc in `document-extraction.external-connectors-models.schemas.ts`.\n */\n document: Buffer;\n mimeType: string;\n applicability: DocumentExtraction_Applicability;\n /** Diagnostic correlation only — never sent to the provider. */\n fileId?: string;\n}\n\n/**\n * The shape of the provider's OCR response that this service reads.\n *\n * spec-cite: https://docs.mistral.ai/api/endpoint/ocr — the 200 response carries `pages` (an array\n * of page objects, each with `markdown`), `model`, and `usage_info` with `pages_processed` and\n * `doc_size_bytes`. Confirmed by live call on 2026-08-27, which returned exactly these keys.\n *\n * Deliberately a LOOSE local shape rather than a strict parse of the whole response: the provider\n * documents many fields this engine does not consume (`images`, `tables`, `hyperlinks`, `header`,\n * `footer`, `dimensions`, `confidence_scores`, `blocks`, `document_annotation`), and rejecting a\n * response for carrying a field we do not read would turn every additive vendor change into an\n * outage. What IS validated is the part we depend on, below.\n */\ninterface DocumentExtractionProviderResponse {\n pages?: Array<{ markdown?: unknown }>;\n model?: unknown;\n usage_info?: { pages_processed?: unknown; doc_size_bytes?: unknown };\n}\n\n@injectable()\nexport class DocumentExtractionBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService)\n private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService)\n private readonly externalProvidersRegistry: ExternalProvidersRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.BackendProviderRegistryService)\n private readonly backendProviderRegistry: BackendProviderRegistryBackendService,\n // Appended LAST deliberately — DI constructor positions are order-sensitive.\n @inject(SAAS_SERVICE_TYPES.AgentCallTraceSink)\n @optional()\n private readonly agentTraceSink?: AgentCallTraceSink,\n @inject(SAAS_SERVICE_TYPES.AgentTraceabilityPolicy)\n @optional()\n private readonly agentTracePolicy?: AgentTraceabilityPolicy,\n ) {\n this.logDebug = this.logger.debugByType('DocumentExtractionBackendService');\n this.logger.setDebugTypeLogging('DocumentExtractionBackendService', false);\n }\n\n /**\n * Resolve the current class→provider→model binding, or report \"not configured\".\n *\n * `configured: false` covers exactly the benign absence (no declared provider fills\n * `AI_DOCUMENT_EXTRACTION`) — an application that ingests only born-digital PDFs may leave the\n * capability unset on purpose, and the file service falls back to the local library. A provider\n * that IS selected but cannot serve — no contract, `extractDocumentText` undeclared, model\n * unresolvable — THROWS a named CONFIGURATION error, because that is an operator mistake and\n * silence would make it indistinguishable from the deliberate opt-out.\n */\n public resolveBinding(applicability: DocumentExtraction_Applicability): DocumentExtractionBindingResolution {\n const providerRef = this.externalProvidersRegistry.getPrimaryProviderForEngineCapability(\n EngineCapability.AI_DOCUMENT_EXTRACTION,\n );\n if (!providerRef) {\n return { configured: false, reason: 'no_provider_for_capability' };\n }\n\n const runtimeContract = this.externalProvidersRegistry.getProviderRuntimeContract(\n providerRef,\n ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,\n );\n if (runtimeContract?.kind !== 'document-extraction') {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef,\n message: `Provider \"${providerRef}\" is selected for AI_DOCUMENT_EXTRACTION but declares no DOCUMENT_EXTRACTION_PROVIDER runtime contract.`,\n },\n });\n }\n\n const semanticOperations = this.externalProvidersRegistry.getDocumentExtractionSemanticOperationKeys(providerRef);\n if (!semanticOperations.includes(DocumentExtractionProvider_OperationKey.EXTRACT_DOCUMENT_TEXT)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef,\n message: `Provider \"${providerRef}\"'s document-extraction contract does not declare the extractDocumentText operation.`,\n },\n });\n }\n\n const resolution = resolveDocumentExtractionModelForApplicability({ applicability, providerRef });\n // `=== false` rather than `!…`: this compiler configuration narrows the literal-discriminant\n // union on the explicit comparison but not on the truthiness form (the embeddings seam\n // measured this; it is copied deliberately rather than re-derived).\n if (resolution.resolved === false) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef,\n applicability,\n failure: resolution.failure,\n consideredModels: resolution.consideredModels,\n message: `No document-extraction model resolves for applicability class \"${applicability}\" on provider \"${providerRef}\".`,\n },\n });\n }\n\n return {\n configured: true,\n binding: {\n applicability,\n providerRef,\n model: resolution.model,\n supportedMimeTypes: resolution.entry.supportedMimeTypes,\n maxDocumentBytes: Math.min(\n runtimeContract.maxDocumentBytes ?? DOCUMENT_EXTRACTION_ENGINE_MAX_DOCUMENT_BYTES,\n DOCUMENT_EXTRACTION_ENGINE_MAX_DOCUMENT_BYTES,\n ),\n maxAttempts: runtimeContract.maxAttempts ?? DOCUMENT_EXTRACTION_DEFAULT_MAX_ATTEMPTS,\n baseUrl: runtimeContract.baseUrl,\n endpointPath: runtimeContract.endpointPath,\n apiKeyHeaderName: runtimeContract.apiKey.headerName,\n apiKeyPrefix: runtimeContract.apiKey.prefix ?? '',\n },\n };\n }\n\n /**\n * Whether the resolved binding can process this MIME type and this many bytes, WITHOUT making a\n * request. Consulted by the file service before any egress: sending a document the model cannot\n * read spends an egress of application content to learn something the catalog already knew.\n */\n public canServe(binding: DocumentExtractionResolvedBinding, mimeType: string, byteLength: number): boolean {\n return binding.supportedMimeTypes.includes(mimeType.toLowerCase()) && byteLength <= binding.maxDocumentBytes;\n }\n\n /**\n * Extract one document's text through the configured provider.\n *\n * assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — this is the ONE egress through\n * which application DOCUMENTS leave the deployment for an external extraction provider; every\n * physical call emits an agent-call trace (provider, model, pages, outcome) through the standard\n * sink chain, so a reviewer can enumerate what was sent and when.\n * assurance-control: WILDO.PRIVACY.DATA_MINIMIZATION — only the document bytes reach the\n * provider: no filename, no row context, no identifiers, no organization or user id. The\n * document is sent as an inline data URI rather than uploaded to the provider's file store,\n * which means the provider retains no object of ours to delete (its Files API states a 30-day\n * retention that an inline request never enters). Observability surfaces receive SUMMARIES only\n * — the bytes and the extracted text never enter a trace, a log, or an error context.\n * assurance-control: WILDO.PRIVACY.THIRD_PARTY_PROCESSING — routing documents here makes the\n * provider a PROCESSOR of application content. It is opt-in by construction: no bytes leave\n * unless an application selects a provider for `AI_DOCUMENT_EXTRACTION`, and with no selection\n * the local library serves every extraction with no egress at all.\n *\n * Throws {@link DocumentExtractionError} with a {@link DocumentExtractionFailureClass}. See the\n * file header for why the caller MUST branch on that class rather than treating any failure as\n * an unreadable document.\n */\n public async extractDocumentText(\n request: ExtractDocumentTextRequest,\n ): Promise<DocumentExtractionProvider_ExtractDocumentTextOutput> {\n const resolutionResult = this.resolveBinding(request.applicability);\n if (!resolutionResult.configured) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n applicability: request.applicability,\n message: 'extractDocumentText was called with no AI_DOCUMENT_EXTRACTION provider configured. '\n + 'Callers must consult resolveBinding() first — FileTextExtractionBackendService does, and falls back to the local library.',\n },\n });\n }\n const binding = resolutionResult.binding;\n\n if (!this.canServe(binding, request.mimeType, request.document.length)) {\n throw this.errorBuilder.buildError(ErrorType.VALIDATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.VALIDATION,\n context: {\n mimeType: request.mimeType,\n documentByteLength: request.document.length,\n maxDocumentBytes: binding.maxDocumentBytes,\n supportedMimeTypes: binding.supportedMimeTypes,\n message: 'The resolved document-extraction model cannot serve this MIME type or byte length. '\n + 'Callers must consult canServe() first, which is a pure catalog check and costs no egress.',\n },\n });\n }\n\n const protocolKind = ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER;\n const apiKey = this.externalProvidersRegistry.getProviderApiKey(binding.providerRef, protocolKind);\n if (!apiKey) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef: binding.providerRef,\n protocolKind,\n message: 'API key not found for the document-extraction provider. Configure the provider secret in the application environment.',\n },\n });\n }\n // Read through `backendProviderRegistry` as well, matching the embeddings seam: `resolveBinding`\n // read the contract through the CONFIG registry, and this confirms the RUNTIME registry still\n // agrees. Unreachable unless the registry mutated mid-call; named rather than assumed.\n const contract = this.backendProviderRegistry.getRuntimeContract(binding.providerRef, protocolKind);\n if (contract?.kind !== 'document-extraction') {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef: binding.providerRef,\n message: 'Document-extraction runtime contract vanished between resolution and invocation.',\n },\n });\n }\n\n const startTime = Date.now();\n const callTimestamp = new Date(startTime).toISOString();\n try {\n const output = await this.invokeWithRetries(binding, apiKey, request);\n await this.emitExtractionTrace(request, binding, {\n outcome: AgentCallOutcome.SUCCESS,\n callTimestamp,\n startTime,\n pageCount: output.pageCount,\n characterCount: output.text.length,\n usage: output.usage,\n });\n return output;\n } catch (error) {\n await this.emitExtractionTrace(request, binding, {\n outcome: AgentCallOutcome.FAILURE,\n callTimestamp,\n startTime,\n error,\n });\n throw error;\n }\n }\n\n /**\n * Attempt the call up to `binding.maxAttempts` times, retrying ONLY\n * {@link DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE}.\n *\n * An `UNREADABLE_DOCUMENT` is never retried, and that asymmetry is the point: the same bytes\n * will be judged the same way, so a retry spends a page of billed quota to receive the identical\n * refusal. The classification is what makes the retry policy expressible at all.\n */\n private async invokeWithRetries(\n binding: DocumentExtractionResolvedBinding,\n apiKey: string,\n request: ExtractDocumentTextRequest,\n ): Promise<DocumentExtractionProvider_ExtractDocumentTextOutput> {\n let lastError: DocumentExtractionError | undefined;\n for (let attempt = 1; attempt <= Math.max(1, binding.maxAttempts); attempt++) {\n try {\n return await this.invokeOnce(binding, apiKey, request);\n } catch (error) {\n if (!(error instanceof DocumentExtractionError)\n || error.failureClass !== DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE) {\n throw error;\n }\n lastError = error;\n this.logDebug('Document extraction attempt failed with a transient provider fault', {\n providerRef: binding.providerRef,\n attempt,\n maxAttempts: binding.maxAttempts,\n httpStatus: error.httpStatus,\n });\n }\n }\n // Unreachable with `maxAttempts >= 1` unless every attempt threw, in which case `lastError` is set.\n throw lastError ?? new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n 'Document extraction exhausted its attempts without producing a result.',\n );\n }\n\n /** One physical HTTPS request against the provider's declared route. */\n private async invokeOnce(\n binding: DocumentExtractionResolvedBinding,\n apiKey: string,\n request: ExtractDocumentTextRequest,\n ): Promise<DocumentExtractionProvider_ExtractDocumentTextOutput> {\n const url = `${binding.baseUrl.replace(/\\/+$/, '')}/${binding.endpointPath.replace(/^\\/+/, '')}`;\n\n // The document travels as an inline data URI. The provider's document chunk accepts a URL, and\n // a `data:` URI is the form that keeps the bytes inside THIS request — the alternative (upload\n // to the provider's file store, then reference the id) would leave an object of ours sitting in\n // their retention window, and the alternative-alternative (a public URL to our object store)\n // would require exposing application documents to the internet. Verified working against the\n // live API on 2026-08-27 for a 129-page document.\n const documentUrl = `data:${request.mimeType};base64,${request.document.toString('base64')}`;\n\n const abortController = new AbortController();\n const timeout = setTimeout(() => abortController.abort(), DOCUMENT_EXTRACTION_REQUEST_TIMEOUT_MS);\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n [binding.apiKeyHeaderName]: `${binding.apiKeyPrefix}${apiKey}`,\n },\n body: JSON.stringify({\n model: binding.model,\n document: { type: 'document_url', document_url: documentUrl },\n // Images are not requested: this seam produces TEXT, and asking for base64 images would\n // multiply the response size by an order of magnitude for bytes nothing here consumes.\n include_image_base64: false,\n }),\n signal: abortController.signal,\n });\n } catch (transportError) {\n // A transport failure — DNS, TCP, TLS, or our own abort. Says nothing about the document.\n throw new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n `Document-extraction provider \"${binding.providerRef}\" was unreachable: `\n + (transportError instanceof Error ? transportError.message : String(transportError)),\n );\n } finally {\n clearTimeout(timeout);\n }\n\n if (!response.ok) {\n // The status→class mapping, and every boundary in it is deliberate:\n // - 4xx generally means the provider READ our request and refused THIS DOCUMENT → permanent.\n // - 401/403 is a CREDENTIAL fault, not a document fault. Classifying it as unreadable would\n // make a rotated key look like a corpus of corrupt files, and would silently delete\n // chunk sets across every document while the key was wrong.\n // - 408/429 are explicitly retryable by their own definition.\n // - 5xx is the provider's fault, never the document's.\n const isCredentialFault = response.status === 401 || response.status === 403;\n const isThrottleOrTimeout = response.status === 408 || response.status === 429;\n const isServerFault = response.status >= 500;\n const failureClass = isCredentialFault || isThrottleOrTimeout || isServerFault\n ? DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE\n : DocumentExtractionFailureClass.UNREADABLE_DOCUMENT;\n // The response BODY is deliberately not carried into the message: a provider error body can\n // echo request content, and this message reaches logs.\n throw new DocumentExtractionError(\n failureClass,\n `Document-extraction provider \"${binding.providerRef}\" answered HTTP ${response.status}.`,\n response.status,\n );\n }\n\n let parsed: DocumentExtractionProviderResponse;\n try {\n parsed = (await response.json()) as DocumentExtractionProviderResponse;\n } catch (parseError) {\n // A 200 whose body is not JSON is the provider misbehaving, not the document being bad.\n throw new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n `Document-extraction provider \"${binding.providerRef}\" returned a 200 with an unreadable body: `\n + (parseError instanceof Error ? parseError.message : String(parseError)),\n );\n }\n\n if (!Array.isArray(parsed.pages)) {\n // Validate the ONE field this engine depends on. A response with no `pages` array is not a\n // document with no text — it is a contract violation, and treating it as \"this document is\n // empty\" is precisely how an upstream change would silently empty a corpus.\n throw new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n `Document-extraction provider \"${binding.providerRef}\" returned a response with no pages array.`,\n );\n }\n\n // Per-page markdown, joined in document order. Non-string page content is skipped rather than\n // stringified — `String(undefined)` in a retrieval corpus is worse than a shorter document.\n const pageTexts = parsed.pages.map((page) => (typeof page?.markdown === 'string' ? page.markdown : ''));\n\n return {\n text: pageTexts.join('\\n'),\n pageCount: parsed.pages.length,\n model: typeof parsed.model === 'string' ? parsed.model : binding.model,\n usage: {\n ...(typeof parsed.usage_info?.pages_processed === 'number'\n ? { pagesProcessed: parsed.usage_info.pages_processed }\n : {}),\n ...(typeof parsed.usage_info?.doc_size_bytes === 'number'\n ? { documentSizeBytes: parsed.usage_info.doc_size_bytes }\n : {}),\n },\n };\n }\n\n /**\n * One trace per physical extraction call — summaries only (file header: the bytes and the\n * extracted text never enter the trace). Best-effort: a sink failure never turns a successful\n * extraction into a failed one (the agents-service discipline).\n */\n private async emitExtractionTrace(\n request: ExtractDocumentTextRequest,\n binding: DocumentExtractionResolvedBinding,\n call: {\n outcome: AgentCallOutcome;\n callTimestamp: string;\n startTime: number;\n pageCount?: number;\n characterCount?: number;\n usage?: { pagesProcessed?: number; documentSizeBytes?: number };\n error?: unknown;\n },\n ): Promise<void> {\n const sink = this.agentTraceSink;\n if (!sink) {\n return;\n }\n const level = this.agentTracePolicy?.level ?? AgentTraceabilityLevel.NONE;\n if (level === AgentTraceabilityLevel.NONE) {\n return;\n }\n const executionTime = Date.now() - call.startTime;\n const trace: AgentCallTrace = {\n agentRef: DOCUMENT_EXTRACTION_TRACE_AGENT_REF,\n // GENERATION rather than a dedicated kind: extraction has no trace kind of its own today,\n // and inventing one is a change to the shared observability vocabulary (and to every sink\n // that switches on it) that this workstream has no evidence to justify. What matters for\n // correctness — that no document content is emitted — is enforced by the payload below, not\n // by the kind. Revisit if a sink ever needs to price or aggregate extraction separately.\n kind: AgentCallTraceKind.GENERATION,\n provider: binding.providerRef,\n model: binding.model,\n callTimestamp: call.callTimestamp,\n outcome: call.outcome,\n // Summaries by contract — never the document, never the extracted text.\n input: {\n applicability: binding.applicability,\n mimeType: request.mimeType,\n documentByteLength: request.document.length,\n ...(request.fileId !== undefined ? { fileId: request.fileId } : {}),\n },\n ...(call.outcome === AgentCallOutcome.SUCCESS\n ? {\n output: {\n pageCount: call.pageCount,\n characterCount: call.characterCount,\n // The provider's own billing unit lives in `output`, not in `usage`: the shared\n // `LLMProvider_UsageSchema` has token dimensions only, and widening it for one\n // protocol would push a page concept onto every LLM and embedding trace. If a sink\n // ever needs to price extraction, that is the moment to add the dimension\n // deliberately — not a side effect of this seam.\n ...(call.usage?.pagesProcessed !== undefined ? { pagesProcessed: call.usage.pagesProcessed } : {}),\n },\n }\n : {}),\n context: {\n callTimestamp: call.callTimestamp,\n executionTime,\n finishedAt: new Date().toISOString(),\n usage: {\n // TRUE, and the value is reasoned rather than copied. `tokenUsageComplete` means \"no\n // token dimension THE OPERATION REQUIRES is missing\". An OCR call requires none — it is\n // billed per page and the provider reports no tokens at all — so the required set is\n // empty and is vacuously satisfied. Writing `false` here would flag every extraction\n // trace as incomplete forever for lacking tokens it structurally cannot have, which is\n // exactly the defect the embeddings arm's operation-aware completeness was written to\n // avoid, one protocol over.\n tokenUsageComplete: true,\n },\n },\n ...(call.outcome === AgentCallOutcome.FAILURE\n ? {\n error: call.error instanceof DocumentExtractionError\n ? { name: call.error.failureClass, message: call.error.message }\n : call.error instanceof Error\n ? { name: call.error.name, message: call.error.message }\n : { message: 'Unknown document-extraction invocation error' },\n }\n : {}),\n };\n try {\n await sink.recordAgentCall({ trace, level });\n } catch (sinkError) {\n this.logDebug('Document-extraction trace sink failed (non-fatal)', {\n providerRef: binding.providerRef,\n error: sinkError instanceof Error ? sinkError.message : String(sinkError),\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"document-extraction.backend.service.js","sourceRoot":"","sources":["../../../../../src/external-providers/services/document-extraction.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Document-extraction execution service — the ONE seam through which the engine turns document\n * BYTES into text using an external provider (OCR).\n *\n * Its only caller is `FileTextExtractionBackendService`, which owns the CHOICE between this\n * provider path and the local `pdfjs-dist` text-layer path. That split is deliberate: this\n * service knows how to talk to a provider and nothing about fallbacks, and the file service knows\n * about fallbacks and nothing about HTTP.\n *\n * ## Selection is by APPLICABILITY CLASS, never by model id (the standing model-selection rule)\n *\n * A caller names a {@link DocumentExtraction_Applicability} class; this service resolves\n * 1. the PROVIDER — the application's `EngineCapability.AI_DOCUMENT_EXTRACTION` selection\n * (`defineSaaSProviders` → `selection[AI_DOCUMENT_EXTRACTION].primary`), independent of the\n * chat and embeddings providers by construction;\n * 2. the MODEL — `resolveDocumentExtractionModelForApplicability` against the framework catalog.\n *\n * ## Why a direct HTTPS call instead of the AI SDK\n *\n * Every sibling provider seam in this package hands an API key to an `@ai-sdk/*` client factory.\n * This one cannot: **`@ai-sdk/mistral@4.0.12` has ZERO OCR support** — the package exports no\n * `ocr` symbol and no client method reaching `POST /v1/ocr`, because the AI SDK models language,\n * embedding and image models and document extraction is none of them. So the request is built\n * here from the provider's declared `baseUrl`, `endpointPath` and `apiKey` header shape.\n *\n * That is a cost, and it is worth naming what it buys back: the contract declares the route and\n * the auth header, so a second provider in this family is a module edit rather than a change here.\n *\n * ## Failure posture — THREE outcomes, not two, and the third is the whole point\n *\n * A caller must be able to distinguish \"these bytes are not a readable document\" from \"I could\n * not ask\". Collapsing them is not a tidiness issue: `RagIngestionBackendService` deletes a\n * field's entire chunk set when an ingestion pass yields no text, so reporting a provider OUTAGE\n * as an unreadable document would silently destroy a live, already-embedded corpus and report\n * success. {@link DocumentExtractionFailureClass} carries that distinction, and\n * `FileTextExtractionBackendService` branches on it.\n *\n * ## Observability\n *\n * Every physical extraction emits ONE agent-call trace through the standard sink chain. Its\n * `input` and `output` are SUMMARIES — mime type, byte length, page count, character count. The\n * document bytes and the extracted text never enter a trace, a log, or an error `context` at any\n * verbosity: an uploaded contract is application content, not telemetry. The API key is read\n * through the standard provider-secret path and is never logged, never placed in an error\n * context, and never included in a diagnostic dump of the request.\n */\n\nimport { injectable, inject, optional } from 'inversify';\nimport {\n EngineCapability,\n ErrorType,\n ErrorCustomMessageReference,\n AgentCallOutcome,\n AgentCallTraceKind,\n AgentTraceabilityLevel,\n type AgentCallTrace,\n type AgentCallTraceSink,\n type AgentTraceabilityPolicy,\n} from '@wildo-ai/saas-models';\nimport {\n DocumentExtraction_Applicability,\n DocumentExtractionProvider_OperationKey,\n ExternalProvider_ExchangeProtocol_Kind,\n resolveDocumentExtractionModelForApplicability,\n type DocumentExtractionProvider_ExtractDocumentTextOutput,\n ProviderProtocolRuntimeKind,\n} from '@wildo-ai/external-connectors-models';\n\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\nimport type { BackendProviderRegistryBackendService } from '~wildo-backend-lib/external-providers/services/backend-provider-registry.backend.service';\n\n/**\n * Engine-side ceiling on the document bytes sent in one extraction request, applied as\n * `min(provider-declared, engine)` — and UNCONDITIONAL, so a provider that declares no limit\n * (the wired one does not; Mistral publishes none) still cannot produce an unbounded request.\n *\n * 24 MB, chosen from measurement rather than convention. Live probes against `POST /v1/ocr` on\n * 2026-08-27, isolating the body-size axis with one-page documents:\n * - 8 MB document (10.7 MB encoded body) → HTTP 200 in 4.9 s\n * - 32 MB document (42.7 MB encoded body) → HTTP 200 in 19.8 s\n * Nothing was refused, so the provider's true maximum is UNESTABLISHED. What the probes DID\n * establish is that latency scales with body size, and 20 s inside a synchronous extraction call\n * is already past the point where the local fallback (240 ms for a 129-page document) is the\n * better answer. So this ceiling exists to bound LATENCY and memory, not to mirror a published\n * limit — because there is no published limit to mirror.\n *\n * Base64 inflates by 4/3, so 24 MB of document is a ~32 MB request body.\n */\nexport const DOCUMENT_EXTRACTION_ENGINE_MAX_DOCUMENT_BYTES = 24 * 1024 * 1024;\n\n/**\n * Wall-clock budget for one extraction request. Measured basis: a 129-page, 994 KB document\n * completed in 4.4 s, and the 32 MB probe took 19.8 s. 120 s leaves generous headroom over both\n * while still guaranteeing the call terminates — an extraction runs inside an ingestion sweep,\n * and a request that hangs forever would stall the sweep rather than merely lose one document.\n */\nexport const DOCUMENT_EXTRACTION_REQUEST_TIMEOUT_MS = 120_000;\n\n/** Attempts per extraction when the provider declares none. See the Mistral module for why 2, not 3. */\nconst DOCUMENT_EXTRACTION_DEFAULT_MAX_ATTEMPTS = 2;\n\n/**\n * The `agentRef` extraction traces carry. Not a registered flows-actors agent — extraction is a\n * protocol-kind execution, not an agent modality — but the trace contract keys analytics spans on\n * `agentRef`, so the engine names its extraction executor stably here.\n */\nexport const DOCUMENT_EXTRACTION_TRACE_AGENT_REF = 'engine:document-extraction';\n\n/**\n * WHY an extraction failed, in the only two senses a caller can act on differently.\n *\n * This is the service's most load-bearing output after the text itself. See the file header: the\n * consequence of confusing the two is corpus deletion, not a misleading log line.\n */\nexport enum DocumentExtractionFailureClass {\n /**\n * The provider read the request and judged the DOCUMENT unprocessable — corrupt bytes, an\n * unsupported format, a password-protected file. PERMANENT: re-sending the same bytes cannot\n * succeed, so a sweep may safely stop retrying and skip the document.\n */\n UNREADABLE_DOCUMENT = 'unreadable_document',\n /**\n * The provider could not be reached, refused the credential, throttled, or failed internally —\n * a network error, a 401/403, a 429, any 5xx, or a timeout. TRANSIENT and, decisively, says\n * NOTHING about the document. A caller must not conclude anything about the bytes from this.\n */\n PROVIDER_UNAVAILABLE = 'provider_unavailable',\n}\n\n/** A failed extraction, classified. Thrown as {@link DocumentExtractionError}. */\nexport class DocumentExtractionError extends Error {\n constructor(\n public readonly failureClass: DocumentExtractionFailureClass,\n message: string,\n /** Provider HTTP status, when the failure came from a response rather than from the transport. */\n public readonly httpStatus?: number,\n ) {\n super(message);\n this.name = 'DocumentExtractionError';\n }\n}\n\n/** The resolved class→provider→model binding for extraction. */\nexport interface DocumentExtractionResolvedBinding {\n applicability: DocumentExtraction_Applicability;\n providerRef: string;\n /** Concrete model id — never authored at a call site. */\n model: string;\n /** MIME types the resolved model can process, from its catalog row. */\n supportedMimeTypes: readonly string[];\n /** Effective document-byte ceiling: `min(provider-declared, engine ceiling)`. */\n maxDocumentBytes: number;\n /** Attempts per call, including the first. */\n maxAttempts: number;\n baseUrl: string;\n endpointPath: string;\n apiKeyHeaderName: string;\n apiKeyPrefix: string;\n}\n\n/** Discriminated \"is provider extraction possible here?\" answer. */\nexport type DocumentExtractionBindingResolution =\n | { configured: true; binding: DocumentExtractionResolvedBinding }\n | {\n configured: false;\n /**\n * Why nothing is configured. Always the BENIGN shape — no provider fills the capability.\n * A provider that IS selected but cannot serve THROWS instead, because a misconfiguration\n * that presented as a deliberate opt-out would never be noticed.\n */\n reason: 'no_provider_for_capability';\n };\n\nexport interface ExtractDocumentTextRequest {\n /**\n * The document. A `Buffer` on the request object rather than a field of a Zod-shaped input, so\n * that no diagnostic path can casually serialize an application's private document — see the\n * input schema's JSDoc in `document-extraction.external-connectors-models.schemas.ts`.\n */\n document: Buffer;\n mimeType: string;\n applicability: DocumentExtraction_Applicability;\n /** Diagnostic correlation only — never sent to the provider. */\n fileId?: string;\n}\n\n/**\n * The shape of the provider's OCR response that this service reads.\n *\n * spec-cite: https://docs.mistral.ai/api/endpoint/ocr — the 200 response carries `pages` (an array\n * of page objects, each with `markdown`), `model`, and `usage_info` with `pages_processed` and\n * `doc_size_bytes`. Confirmed by live call on 2026-08-27, which returned exactly these keys.\n *\n * Deliberately a LOOSE local shape rather than a strict parse of the whole response: the provider\n * documents many fields this engine does not consume (`images`, `tables`, `hyperlinks`, `header`,\n * `footer`, `dimensions`, `confidence_scores`, `blocks`, `document_annotation`), and rejecting a\n * response for carrying a field we do not read would turn every additive vendor change into an\n * outage. What IS validated is the part we depend on, below.\n */\ninterface DocumentExtractionProviderResponse {\n pages?: Array<{ markdown?: unknown }>;\n model?: unknown;\n usage_info?: { pages_processed?: unknown; doc_size_bytes?: unknown };\n}\n\n@injectable()\nexport class DocumentExtractionBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger)\n private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService)\n private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService)\n private readonly externalProvidersRegistry: ExternalProvidersRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.BackendProviderRegistryService)\n private readonly backendProviderRegistry: BackendProviderRegistryBackendService,\n // Appended LAST deliberately — DI constructor positions are order-sensitive.\n @inject(SAAS_SERVICE_TYPES.AgentCallTraceSink)\n @optional()\n private readonly agentTraceSink?: AgentCallTraceSink,\n @inject(SAAS_SERVICE_TYPES.AgentTraceabilityPolicy)\n @optional()\n private readonly agentTracePolicy?: AgentTraceabilityPolicy,\n ) {\n this.logDebug = this.logger.debugByType('DocumentExtractionBackendService');\n this.logger.setDebugTypeLogging('DocumentExtractionBackendService', false);\n }\n\n /**\n * Resolve the current class→provider→model binding, or report \"not configured\".\n *\n * `configured: false` covers exactly the benign absence (no declared provider fills\n * `AI_DOCUMENT_EXTRACTION`) — an application that ingests only born-digital PDFs may leave the\n * capability unset on purpose, and the file service falls back to the local library. A provider\n * that IS selected but cannot serve — no contract, `extractDocumentText` undeclared, model\n * unresolvable — THROWS a named CONFIGURATION error, because that is an operator mistake and\n * silence would make it indistinguishable from the deliberate opt-out.\n */\n public resolveBinding(applicability: DocumentExtraction_Applicability): DocumentExtractionBindingResolution {\n const providerRef = this.externalProvidersRegistry.getPrimaryProviderForEngineCapability(\n EngineCapability.AI_DOCUMENT_EXTRACTION,\n );\n if (!providerRef) {\n return { configured: false, reason: 'no_provider_for_capability' };\n }\n\n const runtimeContract = this.externalProvidersRegistry.getProviderRuntimeContract(\n providerRef,\n ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,\n );\n if (runtimeContract?.kind !== ProviderProtocolRuntimeKind.DOCUMENT_EXTRACTION) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef,\n message: `Provider \"${providerRef}\" is selected for AI_DOCUMENT_EXTRACTION but declares no DOCUMENT_EXTRACTION_PROVIDER runtime contract.`,\n },\n });\n }\n\n const semanticOperations = this.externalProvidersRegistry.getDocumentExtractionSemanticOperationKeys(providerRef);\n if (!semanticOperations.includes(DocumentExtractionProvider_OperationKey.EXTRACT_DOCUMENT_TEXT)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef,\n message: `Provider \"${providerRef}\"'s document-extraction contract does not declare the extractDocumentText operation.`,\n },\n });\n }\n\n const resolution = resolveDocumentExtractionModelForApplicability({ applicability, providerRef });\n // `=== false` rather than `!…`: this compiler configuration narrows the literal-discriminant\n // union on the explicit comparison but not on the truthiness form (the embeddings seam\n // measured this; it is copied deliberately rather than re-derived).\n if (resolution.resolved === false) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef,\n applicability,\n failure: resolution.failure,\n consideredModels: resolution.consideredModels,\n message: `No document-extraction model resolves for applicability class \"${applicability}\" on provider \"${providerRef}\".`,\n },\n });\n }\n\n return {\n configured: true,\n binding: {\n applicability,\n providerRef,\n model: resolution.model,\n supportedMimeTypes: resolution.entry.supportedMimeTypes,\n maxDocumentBytes: Math.min(\n runtimeContract.maxDocumentBytes ?? DOCUMENT_EXTRACTION_ENGINE_MAX_DOCUMENT_BYTES,\n DOCUMENT_EXTRACTION_ENGINE_MAX_DOCUMENT_BYTES,\n ),\n maxAttempts: runtimeContract.maxAttempts ?? DOCUMENT_EXTRACTION_DEFAULT_MAX_ATTEMPTS,\n baseUrl: runtimeContract.baseUrl,\n endpointPath: runtimeContract.endpointPath,\n apiKeyHeaderName: runtimeContract.apiKey.headerName,\n apiKeyPrefix: runtimeContract.apiKey.prefix ?? '',\n },\n };\n }\n\n /**\n * Whether the resolved binding can process this MIME type and this many bytes, WITHOUT making a\n * request. Consulted by the file service before any egress: sending a document the model cannot\n * read spends an egress of application content to learn something the catalog already knew.\n */\n public canServe(binding: DocumentExtractionResolvedBinding, mimeType: string, byteLength: number): boolean {\n return binding.supportedMimeTypes.includes(mimeType.toLowerCase()) && byteLength <= binding.maxDocumentBytes;\n }\n\n /**\n * Extract one document's text through the configured provider.\n *\n * assurance-control: WILDO.INTEGRATION.OUTBOUND_ACTIVITY_AUDIT — this is the ONE egress through\n * which application DOCUMENTS leave the deployment for an external extraction provider; every\n * physical call emits an agent-call trace (provider, model, pages, outcome) through the standard\n * sink chain, so a reviewer can enumerate what was sent and when.\n * assurance-control: WILDO.PRIVACY.DATA_MINIMIZATION — only the document bytes reach the\n * provider: no filename, no row context, no identifiers, no organization or user id. The\n * document is sent as an inline data URI rather than uploaded to the provider's file store,\n * which means the provider retains no object of ours to delete (its Files API states a 30-day\n * retention that an inline request never enters). Observability surfaces receive SUMMARIES only\n * — the bytes and the extracted text never enter a trace, a log, or an error context.\n * assurance-control: WILDO.PRIVACY.THIRD_PARTY_PROCESSING — routing documents here makes the\n * provider a PROCESSOR of application content. It is opt-in by construction: no bytes leave\n * unless an application selects a provider for `AI_DOCUMENT_EXTRACTION`, and with no selection\n * the local library serves every extraction with no egress at all.\n *\n * Throws {@link DocumentExtractionError} with a {@link DocumentExtractionFailureClass}. See the\n * file header for why the caller MUST branch on that class rather than treating any failure as\n * an unreadable document.\n */\n public async extractDocumentText(\n request: ExtractDocumentTextRequest,\n ): Promise<DocumentExtractionProvider_ExtractDocumentTextOutput> {\n const resolutionResult = this.resolveBinding(request.applicability);\n if (!resolutionResult.configured) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n applicability: request.applicability,\n message: 'extractDocumentText was called with no AI_DOCUMENT_EXTRACTION provider configured. '\n + 'Callers must consult resolveBinding() first — FileTextExtractionBackendService does, and falls back to the local library.',\n },\n });\n }\n const binding = resolutionResult.binding;\n\n if (!this.canServe(binding, request.mimeType, request.document.length)) {\n throw this.errorBuilder.buildError(ErrorType.VALIDATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.VALIDATION,\n context: {\n mimeType: request.mimeType,\n documentByteLength: request.document.length,\n maxDocumentBytes: binding.maxDocumentBytes,\n supportedMimeTypes: binding.supportedMimeTypes,\n message: 'The resolved document-extraction model cannot serve this MIME type or byte length. '\n + 'Callers must consult canServe() first, which is a pure catalog check and costs no egress.',\n },\n });\n }\n\n const protocolKind = ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER;\n const apiKey = this.externalProvidersRegistry.getProviderApiKey(binding.providerRef, protocolKind);\n if (!apiKey) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef: binding.providerRef,\n protocolKind,\n message: 'API key not found for the document-extraction provider. Configure the provider secret in the application environment.',\n },\n });\n }\n // Read through `backendProviderRegistry` as well, matching the embeddings seam: `resolveBinding`\n // read the contract through the CONFIG registry, and this confirms the RUNTIME registry still\n // agrees. Unreachable unless the registry mutated mid-call; named rather than assumed.\n const contract = this.backendProviderRegistry.getRuntimeContract(binding.providerRef, protocolKind);\n if (contract?.kind !== ProviderProtocolRuntimeKind.DOCUMENT_EXTRACTION) {\n throw this.errorBuilder.buildError(ErrorType.INTERNAL, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n providerRef: binding.providerRef,\n message: 'Document-extraction runtime contract vanished between resolution and invocation.',\n },\n });\n }\n\n const startTime = Date.now();\n const callTimestamp = new Date(startTime).toISOString();\n try {\n const output = await this.invokeWithRetries(binding, apiKey, request);\n await this.emitExtractionTrace(request, binding, {\n outcome: AgentCallOutcome.SUCCESS,\n callTimestamp,\n startTime,\n pageCount: output.pageCount,\n characterCount: output.text.length,\n usage: output.usage,\n });\n return output;\n } catch (error) {\n await this.emitExtractionTrace(request, binding, {\n outcome: AgentCallOutcome.FAILURE,\n callTimestamp,\n startTime,\n error,\n });\n throw error;\n }\n }\n\n /**\n * Attempt the call up to `binding.maxAttempts` times, retrying ONLY\n * {@link DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE}.\n *\n * An `UNREADABLE_DOCUMENT` is never retried, and that asymmetry is the point: the same bytes\n * will be judged the same way, so a retry spends a page of billed quota to receive the identical\n * refusal. The classification is what makes the retry policy expressible at all.\n */\n private async invokeWithRetries(\n binding: DocumentExtractionResolvedBinding,\n apiKey: string,\n request: ExtractDocumentTextRequest,\n ): Promise<DocumentExtractionProvider_ExtractDocumentTextOutput> {\n let lastError: DocumentExtractionError | undefined;\n for (let attempt = 1; attempt <= Math.max(1, binding.maxAttempts); attempt++) {\n try {\n return await this.invokeOnce(binding, apiKey, request);\n } catch (error) {\n if (!(error instanceof DocumentExtractionError)\n || error.failureClass !== DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE) {\n throw error;\n }\n lastError = error;\n this.logDebug('Document extraction attempt failed with a transient provider fault', {\n providerRef: binding.providerRef,\n attempt,\n maxAttempts: binding.maxAttempts,\n httpStatus: error.httpStatus,\n });\n }\n }\n // Unreachable with `maxAttempts >= 1` unless every attempt threw, in which case `lastError` is set.\n throw lastError ?? new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n 'Document extraction exhausted its attempts without producing a result.',\n );\n }\n\n /** One physical HTTPS request against the provider's declared route. */\n private async invokeOnce(\n binding: DocumentExtractionResolvedBinding,\n apiKey: string,\n request: ExtractDocumentTextRequest,\n ): Promise<DocumentExtractionProvider_ExtractDocumentTextOutput> {\n const url = `${binding.baseUrl.replace(/\\/+$/, '')}/${binding.endpointPath.replace(/^\\/+/, '')}`;\n\n // The document travels as an inline data URI. The provider's document chunk accepts a URL, and\n // a `data:` URI is the form that keeps the bytes inside THIS request — the alternative (upload\n // to the provider's file store, then reference the id) would leave an object of ours sitting in\n // their retention window, and the alternative-alternative (a public URL to our object store)\n // would require exposing application documents to the internet. Verified working against the\n // live API on 2026-08-27 for a 129-page document.\n const documentUrl = `data:${request.mimeType};base64,${request.document.toString('base64')}`;\n\n const abortController = new AbortController();\n const timeout = setTimeout(() => abortController.abort(), DOCUMENT_EXTRACTION_REQUEST_TIMEOUT_MS);\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n [binding.apiKeyHeaderName]: `${binding.apiKeyPrefix}${apiKey}`,\n },\n body: JSON.stringify({\n model: binding.model,\n document: { type: 'document_url', document_url: documentUrl },\n // Images are not requested: this seam produces TEXT, and asking for base64 images would\n // multiply the response size by an order of magnitude for bytes nothing here consumes.\n include_image_base64: false,\n }),\n signal: abortController.signal,\n });\n } catch (transportError) {\n // A transport failure — DNS, TCP, TLS, or our own abort. Says nothing about the document.\n throw new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n `Document-extraction provider \"${binding.providerRef}\" was unreachable: `\n + (transportError instanceof Error ? transportError.message : String(transportError)),\n );\n } finally {\n clearTimeout(timeout);\n }\n\n if (!response.ok) {\n // The status→class mapping, and every boundary in it is deliberate:\n // - 4xx generally means the provider READ our request and refused THIS DOCUMENT → permanent.\n // - 401/403 is a CREDENTIAL fault, not a document fault. Classifying it as unreadable would\n // make a rotated key look like a corpus of corrupt files, and would silently delete\n // chunk sets across every document while the key was wrong.\n // - 408/429 are explicitly retryable by their own definition.\n // - 5xx is the provider's fault, never the document's.\n const isCredentialFault = response.status === 401 || response.status === 403;\n const isThrottleOrTimeout = response.status === 408 || response.status === 429;\n const isServerFault = response.status >= 500;\n const failureClass = isCredentialFault || isThrottleOrTimeout || isServerFault\n ? DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE\n : DocumentExtractionFailureClass.UNREADABLE_DOCUMENT;\n // The response BODY is deliberately not carried into the message: a provider error body can\n // echo request content, and this message reaches logs.\n throw new DocumentExtractionError(\n failureClass,\n `Document-extraction provider \"${binding.providerRef}\" answered HTTP ${response.status}.`,\n response.status,\n );\n }\n\n let parsed: DocumentExtractionProviderResponse;\n try {\n parsed = (await response.json()) as DocumentExtractionProviderResponse;\n } catch (parseError) {\n // A 200 whose body is not JSON is the provider misbehaving, not the document being bad.\n throw new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n `Document-extraction provider \"${binding.providerRef}\" returned a 200 with an unreadable body: `\n + (parseError instanceof Error ? parseError.message : String(parseError)),\n );\n }\n\n if (!Array.isArray(parsed.pages)) {\n // Validate the ONE field this engine depends on. A response with no `pages` array is not a\n // document with no text — it is a contract violation, and treating it as \"this document is\n // empty\" is precisely how an upstream change would silently empty a corpus.\n throw new DocumentExtractionError(\n DocumentExtractionFailureClass.PROVIDER_UNAVAILABLE,\n `Document-extraction provider \"${binding.providerRef}\" returned a response with no pages array.`,\n );\n }\n\n // Per-page markdown, joined in document order. Non-string page content is skipped rather than\n // stringified — `String(undefined)` in a retrieval corpus is worse than a shorter document.\n const pageTexts = parsed.pages.map((page) => (typeof page?.markdown === 'string' ? page.markdown : ''));\n\n return {\n text: pageTexts.join('\\n'),\n pageCount: parsed.pages.length,\n model: typeof parsed.model === 'string' ? parsed.model : binding.model,\n usage: {\n ...(typeof parsed.usage_info?.pages_processed === 'number'\n ? { pagesProcessed: parsed.usage_info.pages_processed }\n : {}),\n ...(typeof parsed.usage_info?.doc_size_bytes === 'number'\n ? { documentSizeBytes: parsed.usage_info.doc_size_bytes }\n : {}),\n },\n };\n }\n\n /**\n * One trace per physical extraction call — summaries only (file header: the bytes and the\n * extracted text never enter the trace). Best-effort: a sink failure never turns a successful\n * extraction into a failed one (the agents-service discipline).\n */\n private async emitExtractionTrace(\n request: ExtractDocumentTextRequest,\n binding: DocumentExtractionResolvedBinding,\n call: {\n outcome: AgentCallOutcome;\n callTimestamp: string;\n startTime: number;\n pageCount?: number;\n characterCount?: number;\n usage?: { pagesProcessed?: number; documentSizeBytes?: number };\n error?: unknown;\n },\n ): Promise<void> {\n const sink = this.agentTraceSink;\n if (!sink) {\n return;\n }\n const level = this.agentTracePolicy?.level ?? AgentTraceabilityLevel.NONE;\n if (level === AgentTraceabilityLevel.NONE) {\n return;\n }\n const executionTime = Date.now() - call.startTime;\n const trace: AgentCallTrace = {\n agentRef: DOCUMENT_EXTRACTION_TRACE_AGENT_REF,\n // GENERATION rather than a dedicated kind: extraction has no trace kind of its own today,\n // and inventing one is a change to the shared observability vocabulary (and to every sink\n // that switches on it) that this workstream has no evidence to justify. What matters for\n // correctness — that no document content is emitted — is enforced by the payload below, not\n // by the kind. Revisit if a sink ever needs to price or aggregate extraction separately.\n kind: AgentCallTraceKind.GENERATION,\n provider: binding.providerRef,\n model: binding.model,\n callTimestamp: call.callTimestamp,\n outcome: call.outcome,\n // Summaries by contract — never the document, never the extracted text.\n input: {\n applicability: binding.applicability,\n mimeType: request.mimeType,\n documentByteLength: request.document.length,\n ...(request.fileId !== undefined ? { fileId: request.fileId } : {}),\n },\n ...(call.outcome === AgentCallOutcome.SUCCESS\n ? {\n output: {\n pageCount: call.pageCount,\n characterCount: call.characterCount,\n // The provider's own billing unit lives in `output`, not in `usage`: the shared\n // `LLMProvider_UsageSchema` has token dimensions only, and widening it for one\n // protocol would push a page concept onto every LLM and embedding trace. If a sink\n // ever needs to price extraction, that is the moment to add the dimension\n // deliberately — not a side effect of this seam.\n ...(call.usage?.pagesProcessed !== undefined ? { pagesProcessed: call.usage.pagesProcessed } : {}),\n },\n }\n : {}),\n context: {\n callTimestamp: call.callTimestamp,\n executionTime,\n finishedAt: new Date().toISOString(),\n usage: {\n // TRUE, and the value is reasoned rather than copied. `tokenUsageComplete` means \"no\n // token dimension THE OPERATION REQUIRES is missing\". An OCR call requires none — it is\n // billed per page and the provider reports no tokens at all — so the required set is\n // empty and is vacuously satisfied. Writing `false` here would flag every extraction\n // trace as incomplete forever for lacking tokens it structurally cannot have, which is\n // exactly the defect the embeddings arm's operation-aware completeness was written to\n // avoid, one protocol over.\n tokenUsageComplete: true,\n },\n },\n ...(call.outcome === AgentCallOutcome.FAILURE\n ? {\n error: call.error instanceof DocumentExtractionError\n ? { name: call.error.failureClass, message: call.error.message }\n : call.error instanceof Error\n ? { name: call.error.name, message: call.error.message }\n : { message: 'Unknown document-extraction invocation error' },\n }\n : {}),\n };\n try {\n await sink.recordAgentCall({ trace, level });\n } catch (sinkError) {\n this.logDebug('Document-extraction trace sink failed (non-fatal)', {\n providerRef: binding.providerRef,\n error: sinkError instanceof Error ? sinkError.message : String(sinkError),\n });\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/external-providers/services/embeddings.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,EAQL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EAIxB,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,
|
|
1
|
+
{"version":3,"file":"embeddings.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/external-providers/services/embeddings.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,EAQL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EAIxB,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EAEpC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAC1J,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,0FAA0F,CAAC;AAEtJ;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAE9D,2GAA2G;AAC3G,MAAM,WAAW,yBAAyB;IACxC,4FAA4F;IAC5F,aAAa,EAAE,wBAAwB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kGAAkG;AAClG,MAAM,MAAM,2BAA2B,GACnC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,GACxD;IACE,UAAU,EAAE,KAAK,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,4BAA4B,CAAC;CACtC,CAAC;AAEN,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,8BAA8B,CAAC;IACxC,aAAa,EAAE,wBAAwB,CAAC;CACzC;AAED,qBACa,wBAAwB;IAKjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAE1C,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAGxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAGhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAhBpC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAI9D,MAAM,EAAE,aAAa,EAErB,YAAY,EAAE,0BAA0B,EAExC,yBAAyB,EAAE,uCAAuC,EAElE,uBAAuB,EAAE,qCAAqC,EAG9D,cAAc,CAAC,EAAE,kBAAkB,EAGnC,gBAAgB,CAAC,EAAE,uBAAuB;IAM7D;;;;;;;;OAQG;IACI,cAAc,CAAC,aAAa,EAAE,wBAAwB,GAAG,2BAA2B;IAiE3F;;;;;;;;;;;;;;;;;OAiBG;IACU,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,mCAAmC,CAAC;IA+GjG;;;;OAIG;YACW,kBAAkB;CAmEjC"}
|
|
@@ -53,7 +53,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
53
53
|
import { injectable, inject, optional } from 'inversify';
|
|
54
54
|
import { embedMany } from 'ai';
|
|
55
55
|
import { EngineCapability, ErrorType, ErrorCustomMessageReference, AgentCallOutcome, AgentCallTraceKind, AgentTraceabilityLevel, } from '@wildo-ai/saas-models';
|
|
56
|
-
import { EmbeddingsProvider_OperationKey, ExternalProvider_ExchangeProtocol_Kind, resolveEmbeddingsModelForApplicability, } from '@wildo-ai/external-connectors-models';
|
|
56
|
+
import { EmbeddingsProvider_OperationKey, ExternalProvider_ExchangeProtocol_Kind, resolveEmbeddingsModelForApplicability, ProviderProtocolRuntimeKind, } from '@wildo-ai/external-connectors-models';
|
|
57
57
|
import { SAAS_SERVICE_TYPES } from '../../inject/models/service-types.js';
|
|
58
58
|
import { ErrorBuilderBackendService } from '../../errors/services/error-builder.backend.service.js';
|
|
59
59
|
/**
|
|
@@ -103,7 +103,7 @@ let EmbeddingsBackendService = class EmbeddingsBackendService {
|
|
|
103
103
|
return { configured: false, reason: 'no_provider_for_capability' };
|
|
104
104
|
}
|
|
105
105
|
const runtimeContract = this.externalProvidersRegistry.getProviderRuntimeContract(providerRef, ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER);
|
|
106
|
-
if (runtimeContract?.kind !==
|
|
106
|
+
if (runtimeContract?.kind !== ProviderProtocolRuntimeKind.EMBEDDINGS) {
|
|
107
107
|
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
|
|
108
108
|
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
109
109
|
context: {
|
|
@@ -203,14 +203,14 @@ let EmbeddingsBackendService = class EmbeddingsBackendService {
|
|
|
203
203
|
});
|
|
204
204
|
}
|
|
205
205
|
const contract = this.backendProviderRegistry.getRuntimeContract(binding.providerRef, protocolKind);
|
|
206
|
-
if (contract?.kind !==
|
|
206
|
+
if (contract?.kind !== ProviderProtocolRuntimeKind.EMBEDDINGS) {
|
|
207
207
|
// Unreachable past resolveBinding() unless the registry mutated mid-call; named anyway.
|
|
208
208
|
throw this.errorBuilder.buildError(ErrorType.INTERNAL, undefined, {
|
|
209
209
|
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
210
210
|
context: { providerRef: binding.providerRef, message: 'Embeddings runtime contract vanished between resolution and invocation.' },
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
|
-
const client = contract.sdkFactory(apiKey);
|
|
213
|
+
const client = (await contract.sdkFactory(apiKey));
|
|
214
214
|
if (typeof client?.textEmbeddingModel !== 'function') {
|
|
215
215
|
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
|
|
216
216
|
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|