@wildo-ai/saas-backend-lib 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/__tests__/fixture-deep-partial.d.ts.map +1 -1
- package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
- package/dist/esm/__tests__/setup.d.ts.map +1 -1
- package/dist/esm/__tests__/test-container.d.ts.map +1 -1
- package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.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.map +1 -1
- package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +12 -1
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +13 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +17 -0
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +57 -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 +95 -2
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +14 -3
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- 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.map +1 -1
- 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 +44 -6
- 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.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
- package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -1
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -1
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -1
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -1
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +5 -4
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +32 -0
- 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 +32 -1
- 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.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +9 -6
- 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 +9 -6
- 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.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +50 -3
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
- package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- 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 +107 -4
- 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 +176 -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.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -1
- 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 +21 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/index.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +4 -4
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +3 -0
- 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.map +1 -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.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +12 -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 +28 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
- package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
- package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
- package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -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.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.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 +102 -52
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +117 -71
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +26 -7
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +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.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +179 -98
- 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.map +1 -1
- package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +121 -0
- 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 +151 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +60 -4
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
- package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
- package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +221 -21
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
- package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +5 -0
- 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.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +8 -5
- 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.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +3 -1
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -1
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +36 -1
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
- package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.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.map +1 -1
- package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- 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.map +1 -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.map +1 -1
- 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.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.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 +107 -16
- 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 +118 -18
- 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.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +104 -5
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +263 -31
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +46 -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 +193 -6
- 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.map +1 -1
- 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.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.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +3 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +9 -0
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts +10 -0
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +49 -1
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +3 -0
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +3 -0
- 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 +50 -3
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
- package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +3 -3
- 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.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +10 -6
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +10 -6
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +47 -6
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +86 -36
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
- package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -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.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
- package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +49 -1
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +2 -0
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/models/index.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.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.map +1 -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.map +1 -1
- package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
- package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
- package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +23 -0
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +31 -0
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
- package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.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.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +10 -0
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -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 +26 -12
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
- package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +84 -0
- 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.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
- package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +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/models/saml-authentication.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +9 -2
- 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 +9 -2
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +218 -26
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +36 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +57 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
- package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +20 -181
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +40 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +43 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +27 -17
- 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 +27 -17
- 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 +72 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +153 -10
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -1
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +139 -1
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +474 -33
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +40 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +19 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +38 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +17 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +14 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +16 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +19 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +45 -2
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +37 -1
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -1
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
- package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
- package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -1
- package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-field-schema-path.backend.utils.js","sourceRoot":"","sources":["../../../../../src/files/utils/file-field-schema-path.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EACL,eAAe,EACf,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EAEb,YAAY,GACb,MAAM,0BAA0B,CAAC;AAelC,MAAM,OAAO,oCAAqC,SAAQ,KAAK;IAE3C;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,gBAAoC,EACpC,mBAAuC;QAEvD,KAAK,CACH,0EAA0E,SAAS,IAAI,CACxF,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QACjB,qBAAgB,GAAhB,gBAAgB,CAAoB;QACpC,wBAAmB,GAAnB,mBAAmB,CAAoB;QAKvD,IAAI,CAAC,IAAI,GAAG,sCAAsC,CAAC;IACrD,CAAC;CACF;AAED,MAAM,OAAO,yCAA0C,SAAQ,KAAK;IACtC;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CACH,wDAAwD,SAAS,iFAAiF,CACnJ,CAAC;QAHwB,cAAS,GAAT,SAAS,CAAQ;QAI3C,IAAI,CAAC,IAAI,GAAG,2CAA2C,CAAC;IAC1D,CAAC;CACF;AAED,MAAM,OAAO,+CAAgD,SAAQ,KAAK;IAC5C;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CACH,gEAAgE,SAAS,2HAA2H,CACrM,CAAC;QAHwB,cAAS,GAAT,SAAS,CAAQ;QAI3C,IAAI,CAAC,IAAI,GAAG,iDAAiD,CAAC;IAChE,CAAC;CACF;AAED,SAAS,kCAAkC,CAAC,MAAoB;IAC9D,IAAI,uBAAuB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAA+B,CAAC;IACxF,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAA8B,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAoB;IACtD,IAAI,uBAAuB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAA+B,CAAC;IACxF,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAA8B,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAc;IAEd,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,8BAA8B,CAAC,UAAU,CAAC,CAAC,CAAC,CACjF,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAwB,EACxB,KAAyB;IAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,gCAAgC,CACvC,MAA2C;IAE3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2C,CAAC;IAElE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,oCAAoC,CAC5C,KAAK,CAAC,SAAS,EACf,QAAQ,CAAC,YAAY,EACrB,KAAK,CAAC,YAAY,CACnB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACtD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,MAAgC,EAChC,aAAqB,EAAE,EACvB,gBAAiC,IAAI,OAAO,EAAU;IAEtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,gCAAgC,CAAC;gBACtC,8BAA8B,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;gBACnE,8BAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;aACrE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjE,OAAO,8BAA8B,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,8BAA8B,CAAC,eAAe,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO;gBACL;oBACE,SAAS,EAAE,UAAU;oBACrB,YAAY;iBACb;aACF,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,iBAAiB,CAAC,eAAe,EAAE,SAAS,CAA6B,CAAC;YAChG,OAAO,8BAA8B,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAC5E,MAAM,WAAW,GAAG,uBAAuB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YAC1E,MAAM,wBAAwB,GAAG,8BAA8B,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;YACxG,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,+CAA+C,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,eAAe,EAAE,OAAO,CAA+B,CAAC;YAClG,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,aAAa,GAAG,gCAAgC,CAAC;gBACrD,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,8BAA8B,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAChE,CAAC;gBACF,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC;aACtE,CAAC,CAAC;YACH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,+CAA+C,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;gBAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvE,OAAO,8BAA8B,CAAC,WAA2B,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;YACtD,MAAM,UAAU,GAAG,OAAO,UAAU,KAAK,UAAU;gBACjD,CAAC,CAAC,UAAU,EAAE;gBACd,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,8BAA8B,CAAC,UAAsC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC3G,CAAC;QAED,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,uBAAuB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACtE,OAAO,gCAAgC,CAAC;gBACtC,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC;gBACrE,8BAA8B,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC;aACvE,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,kCAAkC,CAAC,eAAe,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,gCAAgC,CACrC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAChG,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1D,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAClE,CAAC;YACF,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,yCAAyC,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAgC,EAChC,SAAiB;IAEjB,OAAO,8BAA8B,CAAC,MAAM,CAAC,CAAC,IAAI,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAI,KAAiC,CAAC,EAAE,IAAK,KAAiC,CAAC,GAAG,CAAC;IACpG,OAAO,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;QACjE,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,IAAa,EACb,kBAA0B;IAE1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAA+B,EAAE,CAAC;IAEnD,MAAM,KAAK,GAAG,CACZ,OAAgB,EAChB,UAAkB,EAClB,WAAmB,EACb,EAAE;QACR,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;gBAChF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,SAAS,GAAI,OAAmC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAExE,IAAI,UAAU,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClD,WAAW,CAAC,IAAI,CAAC;oBACf,kBAAkB;oBAClB,gBAAgB,EAAE,eAAe;oBACjC,gBAAgB,EAAE,WAAW,IAAI,SAAS;oBAC1C,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC;oBACxC,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,SAAkB,EAClB,kBAA0B;IAE1B,IACE,CAAC,SAAS;WACP,OAAO,SAAS,KAAK,QAAQ;WAC7B,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,UAAkB,EAAW,EAAE;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;gBACzB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,UAAU,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAE,OAAmC,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,gBAAyB,EACzB,SAAkB;IAElB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS,KAAK,IAAI,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,gBAA2C,CAAC;IACnE,MAAM,WAAW,GAAG,SAAoC,CAAC;IACzD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAC/B,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,2BAA2B,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA2C,EAC3C,WAAmB,EACnB,KAAc;IAEd,MAAM,kBAAkB,GAAG,WAAW;SACnC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;SAC5B,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAY,MAAM,CAAC;IAE9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAEA,OAAmC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;AAC7D,CAAC","sourcesContent":["/*\n * ## Coverage: unit tests only, accepted deliberately — 2026-09-08 (#467)\n *\n * This walker's descent through nested objects, arrays and discriminated unions — including its\n * refusals for records, maps, sets, tuples and plain unions — has never executed outside its own\n * unit tests. Every `z_file()` field declared in the engine and in BOTH example applications sits\n * at the TOP LEVEL of its resource, so nothing reaches the descent.\n *\n * Nothing is wrong here. The gap is that no application has a reason to declare the shape, and\n * buying the proof would mean authoring a declaration for the purpose of testing it — which proves\n * the harness more than the product. That trade was weighed and taken; the project's usual bar\n * (unit + integration + end-to-end for a shipped subsystem) is knowingly not met.\n *\n * **What would change the answer:** an application declaring a nested or repeated `z_file()` field.\n * Whoever does that first is the first party to execute this code path, and should treat a surprise\n * there as expected rather than as a new defect.\n *\n * Do NOT read this note as an invitation to narrow the walker to the shapes something uses today —\n * that was the third option and it was not chosen.\n */\n\nimport { z } from 'zod';\nimport {\n getFileMetadata,\n getZodDef,\n getZodDefArrayProperty,\n getZodDefProperty,\n getZodDefSchemaProperty,\n getZodDefStringProperty,\n getZodObjectShape,\n getZodType,\n isFileSchema,\n isZodArray,\n isZodDefault,\n isZodNullable,\n isZodObject,\n isZodOptional,\n type FileSchemaMetadata,\n unwrapSchema,\n} from '@wildo-ai/zod-decorators';\n\nexport interface ResolvedFileFieldSchemaMetadata {\n fieldName: string;\n fileMetadata: FileSchemaMetadata;\n}\n\nexport interface FileFieldValueOccurrence {\n canonicalFieldPath: string;\n runtimeFieldPath: string;\n ownerRuntimePath?: string;\n ownerStableId?: string;\n value: unknown;\n}\n\nexport class IncompatibleFileFieldSchemaPathError extends Error {\n constructor(\n public readonly fieldName: string,\n public readonly existingMetadata: FileSchemaMetadata,\n public readonly conflictingMetadata: FileSchemaMetadata,\n ) {\n super(\n `Incompatible z_file() metadata detected for canonical file field path \"${fieldName}\".`,\n );\n this.name = 'IncompatibleFileFieldSchemaPathError';\n }\n}\n\nexport class UnsupportedPlainUnionFileFieldSchemaError extends Error {\n constructor(public readonly fieldName: string) {\n super(\n `Unsupported z.union() file field schema detected at \"${fieldName}\". File fields inside non-discriminated unions must use z.discriminatedUnion().`,\n );\n this.name = 'UnsupportedPlainUnionFileFieldSchemaError';\n }\n}\n\nexport class UnsupportedDynamicContainerFileFieldSchemaError extends Error {\n constructor(public readonly fieldName: string) {\n super(\n `Unsupported dynamic-container file field schema detected at \"${fieldName}\". File fields inside z.record(), z.map(), z.set(), or z.tuple() are not supported by runtime file occurrence processing.`,\n );\n this.name = 'UnsupportedDynamicContainerFileFieldSchemaError';\n }\n}\n\nfunction getDiscriminatedUnionObjectOptions(schema: z.ZodTypeAny): z.ZodObject<any>[] {\n if (getZodDefStringProperty(schema, 'discriminator') === undefined) {\n return [];\n }\n\n const options = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n if (!options?.length) {\n return [];\n }\n\n return options.filter((option): option is z.ZodObject<any> => isZodObject(option));\n}\n\nfunction getPlainUnionObjectOptions(schema: z.ZodTypeAny): z.ZodObject<any>[] {\n if (getZodDefStringProperty(schema, 'discriminator') !== undefined) {\n return [];\n }\n\n const options = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n if (!options?.length) {\n return [];\n }\n\n return options.filter((option): option is z.ZodObject<any> => isZodObject(option));\n}\n\nfunction normalizeMetadataForComparison(\n value: unknown,\n): unknown {\n if (Array.isArray(value)) {\n return value.map(normalizeMetadataForComparison);\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, childValue]) => [key, normalizeMetadataForComparison(childValue)]),\n );\n }\n\n return value;\n}\n\nfunction areFileMetadataCompatible(\n left: FileSchemaMetadata,\n right: FileSchemaMetadata,\n): boolean {\n return JSON.stringify(normalizeMetadataForComparison(left))\n === JSON.stringify(normalizeMetadataForComparison(right));\n}\n\nfunction mergeCompatibleFileFieldMetadata(\n groups: ResolvedFileFieldSchemaMetadata[][],\n): ResolvedFileFieldSchemaMetadata[] {\n const merged = new Map<string, ResolvedFileFieldSchemaMetadata>();\n\n for (const group of groups) {\n for (const entry of group) {\n const existing = merged.get(entry.fieldName);\n if (!existing) {\n merged.set(entry.fieldName, entry);\n continue;\n }\n\n if (!areFileMetadataCompatible(existing.fileMetadata, entry.fileMetadata)) {\n throw new IncompatibleFileFieldSchemaPathError(\n entry.fieldName,\n existing.fileMetadata,\n entry.fileMetadata,\n );\n }\n }\n }\n\n return Array.from(merged.values()).sort((left, right) =>\n left.fieldName.localeCompare(right.fieldName),\n );\n}\n\nexport function collectFileFieldSchemaMetadata(\n schema: z.ZodTypeAny | undefined,\n pathPrefix: string = '',\n activeSchemas: WeakSet<object> = new WeakSet<object>(),\n): ResolvedFileFieldSchemaMetadata[] {\n if (!schema) {\n return [];\n }\n\n if (activeSchemas.has(schema)) {\n return [];\n }\n\n activeSchemas.add(schema);\n try {\n const rawSchemaType = getZodType(schema);\n if (rawSchemaType === 'pipe') {\n const inSchema = getZodDefSchemaProperty(schema, 'in');\n const outSchema = getZodDefSchemaProperty(schema, 'out');\n return mergeCompatibleFileFieldMetadata([\n collectFileFieldSchemaMetadata(inSchema, pathPrefix, activeSchemas),\n collectFileFieldSchemaMetadata(outSchema, pathPrefix, activeSchemas),\n ]);\n }\n\n if (isZodOptional(schema) || isZodNullable(schema) || isZodDefault(schema)) {\n const innerSchema = getZodDefSchemaProperty(schema, 'innerType');\n return collectFileFieldSchemaMetadata(innerSchema, pathPrefix, activeSchemas);\n }\n\n const unwrappedSchema = unwrapSchema(schema);\n if (unwrappedSchema !== schema) {\n return collectFileFieldSchemaMetadata(unwrappedSchema, pathPrefix, activeSchemas);\n }\n\n if (isFileSchema(unwrappedSchema)) {\n const fileMetadata = getFileMetadata(unwrappedSchema);\n if (!fileMetadata?.isFile || !pathPrefix) {\n return [];\n }\n\n return [\n {\n fieldName: pathPrefix,\n fileMetadata,\n },\n ];\n }\n\n if (isZodArray(unwrappedSchema)) {\n const elementSchema = getZodDefProperty(unwrappedSchema, 'element') as z.ZodTypeAny | undefined;\n return collectFileFieldSchemaMetadata(elementSchema, pathPrefix, activeSchemas);\n }\n\n const schemaType = getZodType(unwrappedSchema);\n if (schemaType === 'record' || schemaType === 'map' || schemaType === 'set') {\n const valueSchema = getZodDefSchemaProperty(unwrappedSchema, 'valueType');\n const dynamicContainerMetadata = collectFileFieldSchemaMetadata(valueSchema, pathPrefix, activeSchemas);\n if (dynamicContainerMetadata.length > 0) {\n throw new UnsupportedDynamicContainerFileFieldSchemaError(pathPrefix || '<root>');\n }\n return [];\n }\n\n if (schemaType === 'tuple') {\n const tupleItems = getZodDefArrayProperty(unwrappedSchema, 'items') as z.ZodTypeAny[] | undefined;\n const restSchema = getZodDefSchemaProperty(unwrappedSchema, 'rest');\n const tupleMetadata = mergeCompatibleFileFieldMetadata([\n ...((tupleItems ?? []).map((item) =>\n collectFileFieldSchemaMetadata(item, pathPrefix, activeSchemas)\n )),\n collectFileFieldSchemaMetadata(restSchema, pathPrefix, activeSchemas),\n ]);\n if (tupleMetadata.length > 0) {\n throw new UnsupportedDynamicContainerFileFieldSchemaError(pathPrefix || '<root>');\n }\n return [];\n }\n\n if (isZodObject(unwrappedSchema)) {\n const shape = getZodObjectShape(unwrappedSchema);\n return Object.entries(shape).flatMap(([fieldName, fieldSchema]) => {\n const nextPath = pathPrefix ? `${pathPrefix}.${fieldName}` : fieldName;\n return collectFileFieldSchemaMetadata(fieldSchema as z.ZodTypeAny, nextPath, activeSchemas);\n });\n }\n\n if (schemaType === 'lazy') {\n const lazyGetter = getZodDef(unwrappedSchema)?.getter;\n const lazySchema = typeof lazyGetter === 'function'\n ? lazyGetter()\n : undefined;\n return collectFileFieldSchemaMetadata(lazySchema as z.ZodTypeAny | undefined, pathPrefix, activeSchemas);\n }\n\n if (schemaType === 'intersection') {\n const leftSchema = getZodDefSchemaProperty(unwrappedSchema, 'left');\n const rightSchema = getZodDefSchemaProperty(unwrappedSchema, 'right');\n return mergeCompatibleFileFieldMetadata([\n collectFileFieldSchemaMetadata(leftSchema, pathPrefix, activeSchemas),\n collectFileFieldSchemaMetadata(rightSchema, pathPrefix, activeSchemas),\n ]);\n }\n\n const unionOptions = getDiscriminatedUnionObjectOptions(unwrappedSchema);\n if (unionOptions.length > 0) {\n return mergeCompatibleFileFieldMetadata(\n unionOptions.map((option) => collectFileFieldSchemaMetadata(option, pathPrefix, activeSchemas)),\n );\n }\n\n const plainUnionOptions = getPlainUnionObjectOptions(unwrappedSchema);\n if (plainUnionOptions.length > 0) {\n const plainUnionMetadata = plainUnionOptions.map((option) =>\n collectFileFieldSchemaMetadata(option, pathPrefix, activeSchemas),\n );\n if (plainUnionMetadata.some((entries) => entries.length > 0)) {\n throw new UnsupportedPlainUnionFileFieldSchemaError(pathPrefix || '<root>');\n }\n }\n\n return [];\n } finally {\n activeSchemas.delete(schema);\n }\n}\n\nexport function getFileFieldSchemaMetadataByPath(\n schema: z.ZodTypeAny | undefined,\n fieldName: string,\n): ResolvedFileFieldSchemaMetadata | undefined {\n return collectFileFieldSchemaMetadata(schema).find(\n (entry) => entry.fieldName === fieldName,\n );\n}\n\nfunction getOwnerStableId(owner: unknown): string | undefined {\n if (!owner || typeof owner !== 'object') {\n return undefined;\n }\n\n const candidateId = (owner as Record<string, unknown>).id ?? (owner as Record<string, unknown>)._id;\n return typeof candidateId === 'string' && candidateId.trim() !== ''\n ? candidateId\n : undefined;\n}\n\nexport function enumerateFileFieldValueOccurrences(\n data: unknown,\n canonicalFieldPath: string,\n): FileFieldValueOccurrence[] {\n if (!canonicalFieldPath.trim()) {\n return [];\n }\n\n const tokens = canonicalFieldPath.split('.').filter(Boolean);\n if (tokens.length === 0) {\n return [];\n }\n\n const occurrences: FileFieldValueOccurrence[] = [];\n\n const visit = (\n current: unknown,\n tokenIndex: number,\n runtimePath: string,\n ): void => {\n if (current === null || current === undefined) {\n return;\n }\n\n if (Array.isArray(current)) {\n current.forEach((item, index) => {\n const nextRuntimePath = runtimePath ? `${runtimePath}[${index}]` : `[${index}]`;\n visit(item, tokenIndex, nextRuntimePath);\n });\n return;\n }\n\n if (typeof current !== 'object') {\n return;\n }\n\n const token = tokens[tokenIndex];\n const nextValue = (current as Record<string, unknown>)[token];\n const nextRuntimePath = runtimePath ? `${runtimePath}.${token}` : token;\n\n if (tokenIndex === tokens.length - 1) {\n if (nextValue !== null && nextValue !== undefined) {\n occurrences.push({\n canonicalFieldPath,\n runtimeFieldPath: nextRuntimePath,\n ownerRuntimePath: runtimePath || undefined,\n ownerStableId: getOwnerStableId(current),\n value: nextValue,\n });\n }\n return;\n }\n\n visit(nextValue, tokenIndex + 1, nextRuntimePath);\n };\n\n visit(data, 0, '');\n return occurrences;\n}\n\nexport function hasExplicitCanonicalFieldMutation(\n patchData: unknown,\n canonicalFieldPath: string,\n): boolean {\n if (\n !patchData\n || typeof patchData !== 'object'\n || !canonicalFieldPath.trim()\n ) {\n return false;\n }\n\n const tokens = canonicalFieldPath.split('.').filter(Boolean);\n if (tokens.length === 0) {\n return false;\n }\n\n const visit = (current: unknown, tokenIndex: number): boolean => {\n if (Array.isArray(current)) {\n return current.length === 0\n ? true\n : current.some((item) => visit(item, tokenIndex));\n }\n\n if (!current || typeof current !== 'object') {\n return true;\n }\n\n const token = tokens[tokenIndex];\n if (!Object.prototype.hasOwnProperty.call(current, token)) {\n return false;\n }\n\n if (tokenIndex === tokens.length - 1) {\n return true;\n }\n\n return visit((current as Record<string, unknown>)[token], tokenIndex + 1);\n };\n\n return visit(patchData, 0);\n}\n\nexport function mergeEffectiveResourceState(\n existingResource: unknown,\n patchData: unknown,\n): unknown {\n if (patchData === undefined) {\n return existingResource;\n }\n\n if (patchData === null || existingResource === null) {\n return patchData;\n }\n\n if (Array.isArray(patchData)) {\n return patchData;\n }\n\n if (typeof patchData !== 'object') {\n return patchData;\n }\n\n if (Array.isArray(existingResource) || typeof existingResource !== 'object') {\n return patchData;\n }\n\n const existingRecord = existingResource as Record<string, unknown>;\n const patchRecord = patchData as Record<string, unknown>;\n const mergedEntries = new Map<string, unknown>(\n Object.entries(existingRecord),\n );\n\n for (const [key, value] of Object.entries(patchRecord)) {\n mergedEntries.set(key, mergeEffectiveResourceState(existingRecord[key], value));\n }\n\n return Object.fromEntries(mergedEntries);\n}\n\nexport function setValueAtRuntimePath(\n target: Record<string, unknown> | unknown[],\n runtimePath: string,\n value: unknown,\n): void {\n const normalizedSegments = runtimePath\n .replace(/\\[(\\d+)\\]/g, '.$1')\n .split('.')\n .filter(Boolean);\n\n if (normalizedSegments.length === 0) {\n return;\n }\n\n let current: unknown = target;\n\n for (let index = 0; index < normalizedSegments.length - 1; index += 1) {\n const segment = normalizedSegments[index];\n if (Array.isArray(current)) {\n current = current[Number(segment)];\n continue;\n }\n\n if (!current || typeof current !== 'object') {\n return;\n }\n\n current = (current as Record<string, unknown>)[segment];\n }\n\n const finalSegment = normalizedSegments[normalizedSegments.length - 1];\n if (Array.isArray(current)) {\n current[Number(finalSegment)] = value;\n return;\n }\n\n if (!current || typeof current !== 'object') {\n return;\n }\n\n (current as Record<string, unknown>)[finalSegment] = value;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"file-field-schema-path.backend.utils.js","sourceRoot":"","sources":["../../../../src/files/utils/file-field-schema-path.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * ## Coverage: unit tests only, accepted deliberately — 2026-09-08 (#467)\n *\n * This walker's descent through nested objects, arrays and discriminated unions — including its\n * refusals for records, maps, sets, tuples and plain unions — has never executed outside its own\n * unit tests. Every `z_file()` field declared in the engine and in BOTH example applications sits\n * at the TOP LEVEL of its resource, so nothing reaches the descent.\n *\n * Nothing is wrong here. The gap is that no application has a reason to declare the shape, and\n * buying the proof would mean authoring a declaration for the purpose of testing it — which proves\n * the harness more than the product. That trade was weighed and taken; the project's usual bar\n * (unit + integration + end-to-end for a shipped subsystem) is knowingly not met.\n *\n * **What would change the answer:** an application declaring a nested or repeated `z_file()` field.\n * Whoever does that first is the first party to execute this code path, and should treat a surprise\n * there as expected rather than as a new defect.\n *\n * Do NOT read this note as an invitation to narrow the walker to the shapes something uses today —\n * that was the third option and it was not chosen.\n */\n\nimport { z } from 'zod';\nimport {\n getFileMetadata,\n getZodDef,\n getZodDefArrayProperty,\n getZodDefProperty,\n getZodDefSchemaProperty,\n getZodDefStringProperty,\n getZodObjectShape,\n getZodType,\n isFileSchema,\n isZodArray,\n isZodDefault,\n isZodNullable,\n isZodObject,\n isZodOptional,\n type FileSchemaMetadata,\n unwrapSchema,\n} from '@wildo-ai/zod-decorators';\n\nexport interface ResolvedFileFieldSchemaMetadata {\n fieldName: string;\n fileMetadata: FileSchemaMetadata;\n}\n\nexport interface FileFieldValueOccurrence {\n canonicalFieldPath: string;\n runtimeFieldPath: string;\n ownerRuntimePath?: string;\n ownerStableId?: string;\n value: unknown;\n}\n\nexport class IncompatibleFileFieldSchemaPathError extends Error {\n constructor(\n public readonly fieldName: string,\n public readonly existingMetadata: FileSchemaMetadata,\n public readonly conflictingMetadata: FileSchemaMetadata,\n ) {\n super(\n `Incompatible z_file() metadata detected for canonical file field path \"${fieldName}\".`,\n );\n this.name = 'IncompatibleFileFieldSchemaPathError';\n }\n}\n\nexport class UnsupportedPlainUnionFileFieldSchemaError extends Error {\n constructor(public readonly fieldName: string) {\n super(\n `Unsupported z.union() file field schema detected at \"${fieldName}\". File fields inside non-discriminated unions must use z.discriminatedUnion().`,\n );\n this.name = 'UnsupportedPlainUnionFileFieldSchemaError';\n }\n}\n\nexport class UnsupportedDynamicContainerFileFieldSchemaError extends Error {\n constructor(public readonly fieldName: string) {\n super(\n `Unsupported dynamic-container file field schema detected at \"${fieldName}\". File fields inside z.record(), z.map(), z.set(), or z.tuple() are not supported by runtime file occurrence processing.`,\n );\n this.name = 'UnsupportedDynamicContainerFileFieldSchemaError';\n }\n}\n\nfunction getDiscriminatedUnionObjectOptions(schema: z.ZodTypeAny): z.ZodObject<any>[] {\n if (getZodDefStringProperty(schema, 'discriminator') === undefined) {\n return [];\n }\n\n const options = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n if (!options?.length) {\n return [];\n }\n\n return options.filter((option): option is z.ZodObject<any> => isZodObject(option));\n}\n\nfunction getPlainUnionObjectOptions(schema: z.ZodTypeAny): z.ZodObject<any>[] {\n if (getZodDefStringProperty(schema, 'discriminator') !== undefined) {\n return [];\n }\n\n const options = getZodDefArrayProperty(schema, 'options') as z.ZodTypeAny[] | undefined;\n if (!options?.length) {\n return [];\n }\n\n return options.filter((option): option is z.ZodObject<any> => isZodObject(option));\n}\n\nfunction normalizeMetadataForComparison(\n value: unknown,\n): unknown {\n if (Array.isArray(value)) {\n return value.map(normalizeMetadataForComparison);\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, childValue]) => [key, normalizeMetadataForComparison(childValue)]),\n );\n }\n\n return value;\n}\n\nfunction areFileMetadataCompatible(\n left: FileSchemaMetadata,\n right: FileSchemaMetadata,\n): boolean {\n return JSON.stringify(normalizeMetadataForComparison(left))\n === JSON.stringify(normalizeMetadataForComparison(right));\n}\n\nfunction mergeCompatibleFileFieldMetadata(\n groups: ResolvedFileFieldSchemaMetadata[][],\n): ResolvedFileFieldSchemaMetadata[] {\n const merged = new Map<string, ResolvedFileFieldSchemaMetadata>();\n\n for (const group of groups) {\n for (const entry of group) {\n const existing = merged.get(entry.fieldName);\n if (!existing) {\n merged.set(entry.fieldName, entry);\n continue;\n }\n\n if (!areFileMetadataCompatible(existing.fileMetadata, entry.fileMetadata)) {\n throw new IncompatibleFileFieldSchemaPathError(\n entry.fieldName,\n existing.fileMetadata,\n entry.fileMetadata,\n );\n }\n }\n }\n\n return Array.from(merged.values()).sort((left, right) =>\n left.fieldName.localeCompare(right.fieldName),\n );\n}\n\nexport function collectFileFieldSchemaMetadata(\n schema: z.ZodTypeAny | undefined,\n pathPrefix: string = '',\n activeSchemas: WeakSet<object> = new WeakSet<object>(),\n): ResolvedFileFieldSchemaMetadata[] {\n if (!schema) {\n return [];\n }\n\n if (activeSchemas.has(schema)) {\n return [];\n }\n\n activeSchemas.add(schema);\n try {\n const rawSchemaType = getZodType(schema);\n if (rawSchemaType === 'pipe') {\n const inSchema = getZodDefSchemaProperty(schema, 'in');\n const outSchema = getZodDefSchemaProperty(schema, 'out');\n return mergeCompatibleFileFieldMetadata([\n collectFileFieldSchemaMetadata(inSchema, pathPrefix, activeSchemas),\n collectFileFieldSchemaMetadata(outSchema, pathPrefix, activeSchemas),\n ]);\n }\n\n if (isZodOptional(schema) || isZodNullable(schema) || isZodDefault(schema)) {\n const innerSchema = getZodDefSchemaProperty(schema, 'innerType');\n return collectFileFieldSchemaMetadata(innerSchema, pathPrefix, activeSchemas);\n }\n\n const unwrappedSchema = unwrapSchema(schema);\n if (unwrappedSchema !== schema) {\n return collectFileFieldSchemaMetadata(unwrappedSchema, pathPrefix, activeSchemas);\n }\n\n if (isFileSchema(unwrappedSchema)) {\n const fileMetadata = getFileMetadata(unwrappedSchema);\n if (!fileMetadata?.isFile || !pathPrefix) {\n return [];\n }\n\n return [\n {\n fieldName: pathPrefix,\n fileMetadata,\n },\n ];\n }\n\n if (isZodArray(unwrappedSchema)) {\n const elementSchema = getZodDefProperty(unwrappedSchema, 'element') as z.ZodTypeAny | undefined;\n return collectFileFieldSchemaMetadata(elementSchema, pathPrefix, activeSchemas);\n }\n\n const schemaType = getZodType(unwrappedSchema);\n if (schemaType === 'record' || schemaType === 'map' || schemaType === 'set') {\n const valueSchema = getZodDefSchemaProperty(unwrappedSchema, 'valueType');\n const dynamicContainerMetadata = collectFileFieldSchemaMetadata(valueSchema, pathPrefix, activeSchemas);\n if (dynamicContainerMetadata.length > 0) {\n throw new UnsupportedDynamicContainerFileFieldSchemaError(pathPrefix || '<root>');\n }\n return [];\n }\n\n if (schemaType === 'tuple') {\n const tupleItems = getZodDefArrayProperty(unwrappedSchema, 'items') as z.ZodTypeAny[] | undefined;\n const restSchema = getZodDefSchemaProperty(unwrappedSchema, 'rest');\n const tupleMetadata = mergeCompatibleFileFieldMetadata([\n ...((tupleItems ?? []).map((item) =>\n collectFileFieldSchemaMetadata(item, pathPrefix, activeSchemas)\n )),\n collectFileFieldSchemaMetadata(restSchema, pathPrefix, activeSchemas),\n ]);\n if (tupleMetadata.length > 0) {\n throw new UnsupportedDynamicContainerFileFieldSchemaError(pathPrefix || '<root>');\n }\n return [];\n }\n\n if (isZodObject(unwrappedSchema)) {\n const shape = getZodObjectShape(unwrappedSchema);\n return Object.entries(shape).flatMap(([fieldName, fieldSchema]) => {\n const nextPath = pathPrefix ? `${pathPrefix}.${fieldName}` : fieldName;\n return collectFileFieldSchemaMetadata(fieldSchema as z.ZodTypeAny, nextPath, activeSchemas);\n });\n }\n\n if (schemaType === 'lazy') {\n const lazyGetter = getZodDef(unwrappedSchema)?.getter;\n const lazySchema = typeof lazyGetter === 'function'\n ? lazyGetter()\n : undefined;\n return collectFileFieldSchemaMetadata(lazySchema as z.ZodTypeAny | undefined, pathPrefix, activeSchemas);\n }\n\n if (schemaType === 'intersection') {\n const leftSchema = getZodDefSchemaProperty(unwrappedSchema, 'left');\n const rightSchema = getZodDefSchemaProperty(unwrappedSchema, 'right');\n return mergeCompatibleFileFieldMetadata([\n collectFileFieldSchemaMetadata(leftSchema, pathPrefix, activeSchemas),\n collectFileFieldSchemaMetadata(rightSchema, pathPrefix, activeSchemas),\n ]);\n }\n\n const unionOptions = getDiscriminatedUnionObjectOptions(unwrappedSchema);\n if (unionOptions.length > 0) {\n return mergeCompatibleFileFieldMetadata(\n unionOptions.map((option) => collectFileFieldSchemaMetadata(option, pathPrefix, activeSchemas)),\n );\n }\n\n const plainUnionOptions = getPlainUnionObjectOptions(unwrappedSchema);\n if (plainUnionOptions.length > 0) {\n const plainUnionMetadata = plainUnionOptions.map((option) =>\n collectFileFieldSchemaMetadata(option, pathPrefix, activeSchemas),\n );\n if (plainUnionMetadata.some((entries) => entries.length > 0)) {\n throw new UnsupportedPlainUnionFileFieldSchemaError(pathPrefix || '<root>');\n }\n }\n\n return [];\n } finally {\n activeSchemas.delete(schema);\n }\n}\n\nexport function getFileFieldSchemaMetadataByPath(\n schema: z.ZodTypeAny | undefined,\n fieldName: string,\n): ResolvedFileFieldSchemaMetadata | undefined {\n return collectFileFieldSchemaMetadata(schema).find(\n (entry) => entry.fieldName === fieldName,\n );\n}\n\nfunction getOwnerStableId(owner: unknown): string | undefined {\n if (!owner || typeof owner !== 'object') {\n return undefined;\n }\n\n const candidateId = (owner as Record<string, unknown>).id ?? (owner as Record<string, unknown>)._id;\n return typeof candidateId === 'string' && candidateId.trim() !== ''\n ? candidateId\n : undefined;\n}\n\nexport function enumerateFileFieldValueOccurrences(\n data: unknown,\n canonicalFieldPath: string,\n): FileFieldValueOccurrence[] {\n if (!canonicalFieldPath.trim()) {\n return [];\n }\n\n const tokens = canonicalFieldPath.split('.').filter(Boolean);\n if (tokens.length === 0) {\n return [];\n }\n\n const occurrences: FileFieldValueOccurrence[] = [];\n\n const visit = (\n current: unknown,\n tokenIndex: number,\n runtimePath: string,\n ): void => {\n if (current === null || current === undefined) {\n return;\n }\n\n if (Array.isArray(current)) {\n current.forEach((item, index) => {\n const nextRuntimePath = runtimePath ? `${runtimePath}[${index}]` : `[${index}]`;\n visit(item, tokenIndex, nextRuntimePath);\n });\n return;\n }\n\n if (typeof current !== 'object') {\n return;\n }\n\n const token = tokens[tokenIndex];\n const nextValue = (current as Record<string, unknown>)[token];\n const nextRuntimePath = runtimePath ? `${runtimePath}.${token}` : token;\n\n if (tokenIndex === tokens.length - 1) {\n if (nextValue !== null && nextValue !== undefined) {\n occurrences.push({\n canonicalFieldPath,\n runtimeFieldPath: nextRuntimePath,\n ownerRuntimePath: runtimePath || undefined,\n ownerStableId: getOwnerStableId(current),\n value: nextValue,\n });\n }\n return;\n }\n\n visit(nextValue, tokenIndex + 1, nextRuntimePath);\n };\n\n visit(data, 0, '');\n return occurrences;\n}\n\nexport function hasExplicitCanonicalFieldMutation(\n patchData: unknown,\n canonicalFieldPath: string,\n): boolean {\n if (\n !patchData\n || typeof patchData !== 'object'\n || !canonicalFieldPath.trim()\n ) {\n return false;\n }\n\n const tokens = canonicalFieldPath.split('.').filter(Boolean);\n if (tokens.length === 0) {\n return false;\n }\n\n const visit = (current: unknown, tokenIndex: number): boolean => {\n if (Array.isArray(current)) {\n return current.length === 0\n ? true\n : current.some((item) => visit(item, tokenIndex));\n }\n\n if (!current || typeof current !== 'object') {\n return true;\n }\n\n const token = tokens[tokenIndex];\n if (!Object.prototype.hasOwnProperty.call(current, token)) {\n return false;\n }\n\n if (tokenIndex === tokens.length - 1) {\n return true;\n }\n\n return visit((current as Record<string, unknown>)[token], tokenIndex + 1);\n };\n\n return visit(patchData, 0);\n}\n\nexport function mergeEffectiveResourceState(\n existingResource: unknown,\n patchData: unknown,\n): unknown {\n if (patchData === undefined) {\n return existingResource;\n }\n\n if (patchData === null || existingResource === null) {\n return patchData;\n }\n\n if (Array.isArray(patchData)) {\n return patchData;\n }\n\n if (typeof patchData !== 'object') {\n return patchData;\n }\n\n if (Array.isArray(existingResource) || typeof existingResource !== 'object') {\n return patchData;\n }\n\n const existingRecord = existingResource as Record<string, unknown>;\n const patchRecord = patchData as Record<string, unknown>;\n const mergedEntries = new Map<string, unknown>(\n Object.entries(existingRecord),\n );\n\n for (const [key, value] of Object.entries(patchRecord)) {\n mergedEntries.set(key, mergeEffectiveResourceState(existingRecord[key], value));\n }\n\n return Object.fromEntries(mergedEntries);\n}\n\nexport function setValueAtRuntimePath(\n target: Record<string, unknown> | unknown[],\n runtimePath: string,\n value: unknown,\n): void {\n const normalizedSegments = runtimePath\n .replace(/\\[(\\d+)\\]/g, '.$1')\n .split('.')\n .filter(Boolean);\n\n if (normalizedSegments.length === 0) {\n return;\n }\n\n let current: unknown = target;\n\n for (let index = 0; index < normalizedSegments.length - 1; index += 1) {\n const segment = normalizedSegments[index];\n if (Array.isArray(current)) {\n current = current[Number(segment)];\n continue;\n }\n\n if (!current || typeof current !== 'object') {\n return;\n }\n\n current = (current as Record<string, unknown>)[segment];\n }\n\n const finalSegment = normalizedSegments[normalizedSegments.length - 1];\n if (Array.isArray(current)) {\n current[Number(finalSegment)] = value;\n return;\n }\n\n if (!current || typeof current !== 'object') {\n return;\n }\n\n (current as Record<string, unknown>)[finalSegment] = value;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"file-upload.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/file-upload.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAQlG;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CASxF;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAAC,MAAM,CAwBzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,YAAY,GAAG,QAAuB,GAClD,IAAI,CASN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"file-uploader.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/file-uploader.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AA8B5G,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,sBAAsB,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GACtC,qBAAqB,GAAG,SAAS,CA8DnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader.utils.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"file-uploader.utils.js","sourceRoot":"","sources":["../../../../src/files/utils/file-uploader.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAqC/B;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,gBAAuC;IAEvC,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAEnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,QAAQ,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACvC,KAAK,8BAA8B,CAAC,YAAY;YAC9C,OAAO,YAAY,CAAC,MAAM;gBACxB,CAAC,CAAC;oBACE,UAAU,EAAE,YAAY,CAAC,MAAM;oBAC/B,oBAAoB,EAAE,sBAAsB,CAAC,IAAI;iBAClD;gBACH,CAAC,CAAC,SAAS,CAAC;QAEhB,KAAK,8BAA8B,CAAC,iBAAiB;YACnD,OAAO,YAAY,CAAC,eAAe;gBACjC,CAAC,CAAC;oBACE,UAAU,EAAE,YAAY,CAAC,eAAe;oBACxC,oBAAoB,EAAE,sBAAsB,CAAC,cAAc;iBAC5D;gBACH,CAAC,CAAC,SAAS,CAAC;QAEhB,sFAAsF;QACtF,+FAA+F;QAC/F,+FAA+F;QAC/F,8FAA8F;QAC9F,gGAAgG;QAChG,+EAA+E;QAC/E,KAAK,8BAA8B,CAAC,oBAAoB;YACtD,OAAO,YAAY,CAAC,iBAAiB;gBACnC,CAAC,CAAC;oBACE,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,YAAY;oBACvD,oBAAoB,EAAE,sBAAsB,CAAC,oBAAoB;iBAClE;gBACH,CAAC,CAAC,SAAS,CAAC;QAEhB,KAAK,8BAA8B,CAAC,mBAAmB;YACrD,OAAO,YAAY,CAAC,iBAAiB;gBACnC,CAAC,CAAC;oBACE,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,YAAY;oBACvD,oBAAoB,EAAE,sBAAsB,CAAC,mBAAmB;iBACjE;gBACH,CAAC,CAAC,SAAS,CAAC;QAEhB,kGAAkG;QAClG,sGAAsG;QACtG,iGAAiG;QACjG,iGAAiG;QACjG,wDAAwD;QACxD,KAAK,8BAA8B,CAAC,gBAAgB;YAClD,OAAO,YAAY,CAAC,MAAM;gBACxB,CAAC,CAAC;oBACE,UAAU,EAAE,YAAY,CAAC,MAAM;oBAC/B,oBAAoB,EAAE,sBAAsB,CAAC,IAAI;iBAClD;gBACH,CAAC,CAAC,SAAS,CAAC;QAEhB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC","sourcesContent":["import {\n ExecutionContext_ExecutionType,\n FileUploaderEntityType,\n} from '@wildo-ai/saas-models';\n\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\n\n/**\n * SINGLE SOURCE OF TRUTH — the machine file-uploader entity types are DERIVED-BY-CONTRACT from the\n * machine EXECUTION types, which are the authority.\n *\n * `FileUploaderEntityType.{ORGANIZATION,APPLICATION}_MACHINE` and\n * `ExecutionContext_ExecutionType.{ORGANIZATION,APPLICATION}_MACHINE` name the SAME machine\n * principal, so their string values MUST stay identical — the switch below projects the execution\n * type straight onto the entity type. They cannot physically share the literal: `FileUploaderEntityType`\n * lives in the upstream `zod-decorators` package (it cannot import the execution type), and TS\n * string-enum members must be literals (not computed from another enum). So instead these compile-time\n * assertions PIN the two equal. A future rename of a machine execution-type VALUE — exactly the\n * `org_api_key`→`organization_machine` recentering that silently left this uploader stranded on\n * `*_api_key` — then FAILS TO COMPILE here until the file-uploader enum is updated in lockstep.\n *\n * Only the MACHINE values are pinned. The human values legitimately DIFFER (`USER`=`user` vs\n * `USER_REQUEST`=`user_request`; `ANONYMOUS_USER`=`anonymous_user` vs `ANONYMOUS_SESSION`=\n * `anonymous_session`) — an entity/principal KIND is not the same concept as an execution KIND — so\n * pinning them would be wrong.\n */\ntype _StringEqual<A extends string, B extends string> = [A] extends [B] ? ([B] extends [A] ? true : false) : false;\ntype _Expect<T extends true> = T;\ntype _AssertOrgMachineUploaderTracksExecutionType = _Expect<\n _StringEqual<`${FileUploaderEntityType.ORGANIZATION_MACHINE}`, `${ExecutionContext_ExecutionType.ORGANIZATION_MACHINE}`>\n>;\ntype _AssertAppMachineUploaderTracksExecutionType = _Expect<\n _StringEqual<`${FileUploaderEntityType.APPLICATION_MACHINE}`, `${ExecutionContext_ExecutionType.APPLICATION_MACHINE}`>\n>;\n\nexport interface FileUploaderPrincipal {\n uploadedBy: string;\n uploadedByEntityType: FileUploaderEntityType;\n}\n\n/**\n * Derive the concrete uploader principal from the execution context.\n *\n * File ownership is intentionally stored as a lightweight raw id + entity type\n * pair. We do not resolve related entities here; callers can hydrate richer\n * display data separately when needed.\n */\nexport function resolveFileUploaderPrincipal(\n executionContext: ExecutionContext<any>,\n): FileUploaderPrincipal | undefined {\n const initiatorIds = executionContext.initiatorIds;\n\n if (!initiatorIds) {\n return undefined;\n }\n\n switch (executionContext.executionType) {\n case ExecutionContext_ExecutionType.USER_REQUEST:\n return initiatorIds.userId\n ? {\n uploadedBy: initiatorIds.userId,\n uploadedByEntityType: FileUploaderEntityType.USER,\n }\n : undefined;\n\n case ExecutionContext_ExecutionType.ANONYMOUS_SESSION:\n return initiatorIds.anonymousUserId\n ? {\n uploadedBy: initiatorIds.anonymousUserId,\n uploadedByEntityType: FileUploaderEntityType.ANONYMOUS_USER,\n }\n : undefined;\n\n // Machine principals (API key OR OAuth client): the uploader id is the authenticating\n // credential (`machineCredential.credentialId`), and the entity type is the credential-NEUTRAL\n // machine principal (`ORGANIZATION_MACHINE` / `APPLICATION_MACHINE`) — an api-key and an OAuth\n // client both resolve to the same machine principal, so labelling the upload `*_MACHINE` (not\n // `*_API_KEY`) is honest for both. The specific credential KIND (api-key vs OAuth client) is on\n // `machineCredential.authMethod` if a consumer ever needs to distinguish them.\n case ExecutionContext_ExecutionType.ORGANIZATION_MACHINE:\n return initiatorIds.machineCredential\n ? {\n uploadedBy: initiatorIds.machineCredential.credentialId,\n uploadedByEntityType: FileUploaderEntityType.ORGANIZATION_MACHINE,\n }\n : undefined;\n\n case ExecutionContext_ExecutionType.APPLICATION_MACHINE:\n return initiatorIds.machineCredential\n ? {\n uploadedBy: initiatorIds.machineCredential.credentialId,\n uploadedByEntityType: FileUploaderEntityType.APPLICATION_MACHINE,\n }\n : undefined;\n\n // A consumable-token context carries the userId the token was MINTED for (set by the token bridge\n // in `createExecutionContextFromRequest`). For a user-minted file upload grant that IS the uploader —\n // the person who delegated the upload, not the bearer who performed it. A token with no `userId`\n // (a machine-minted grant) resolves to nothing here; the upload handler then attributes the file\n // from the grant's own `minter` record. Issue #312, D7.\n case ExecutionContext_ExecutionType.CONSUMABLE_TOKEN:\n return initiatorIds.userId\n ? {\n uploadedBy: initiatorIds.userId,\n uploadedByEntityType: FileUploaderEntityType.USER,\n }\n : undefined;\n\n default:\n return undefined;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-validation.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"file-validation.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/file-validation.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-derivation.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"image-derivation.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/image-derivation.backend.utils.ts"],"names":[],"mappings":"AAkCA,sDAAsD;AACtD,MAAM,WAAW,yBAAyB;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAeD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C1F;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAarF;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB3F;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,mBAAmB,EAAE,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CA8CzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-thumbnail.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"image-thumbnail.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/image-thumbnail.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAiCvC;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QAAmB,CAAC;AAgB3D,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI7E;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe/F;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAgB/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"office-document-text-extraction.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"office-document-text-extraction.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/office-document-text-extraction.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAInD,CAAC;AAEH,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAIlD,CAAC;AAEH,4DAA4D;AAC5D,eAAO,MAAM,kCAAkC,EAAE,WAAW,CAAC,MAAM,CAGjE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAIzD,CAAC;AAuCH,yGAAyG;AACzG,oBAAY,+BAA+B;IACzC,uGAAuG;IACvG,oBAAoB,yBAAyB;IAC7C,0GAA0G;IAC1G,iBAAiB,sBAAsB;IACvC;;;OAGG;IACH,aAAa,kBAAkB;CAChC;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IAC1C,QAAQ,CAAC,OAAO,EAAE,+BAA+B;IAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAAnF,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,EAAW,KAAK,CAAC,EAAE,OAAO;CAIzG;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6GAA6G;IAC7G,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAuGD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,CA8FnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"office-document-text-extraction.backend.utils.js","sourceRoot":"","sources":["../../../../../src/files/utils/office-document-text-extraction.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,yEAAyE;IACzE,mEAAmE;IACnE,2EAA2E;CAC5E,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,yCAAyC;IACzC,gDAAgD;IAChD,iDAAiD;CAClD,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kCAAkC,GAAwB,IAAI,GAAG,CAAC;IAC7E,GAAG,oBAAoB;IACvB,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwB,IAAI,GAAG,CAAC;IACrE,oBAAoB;IACpB,0BAA0B;IAC1B,+BAA+B;CAChC,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,gHAAgH;AAChH,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACvD,KAAK,EAAE,MAAM;IACb,KAAK;IACL,QAAQ,EAAE,QAAQ,EAAE,gBAAgB;IACpC,IAAI,EAAE,GAAG;CACV,CAAC,CAAC;AAEH,yGAAyG;AACzG,MAAM,CAAN,IAAY,+BAUX;AAVD,WAAY,+BAA+B;IACzC,uGAAuG;IACvG,gFAA6C,CAAA;IAC7C,0GAA0G;IAC1G,0EAAuC,CAAA;IACvC;;;OAGG;IACH,kEAA+B,CAAA;AACjC,CAAC,EAVW,+BAA+B,KAA/B,+BAA+B,QAU1C;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACjC;IAAoE;IAAzF,YAAqB,OAAwC,EAAE,OAAe,EAAW,KAAe;QACtG,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,YAAO,GAAP,OAAO,CAAiC;QAA4B,UAAK,GAAL,KAAK,CAAU;QAEtG,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAqBD,SAAS,WAAW,CAAC,QAAgB;IACnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,yEAAyE;YAC5E;;;;eAIG;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,mBAAmB;gBAChH,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACvD,CAAC;QAEJ,KAAK,2EAA2E;YAC9E;;;;eAIG;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvF,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD,CAAC;QAEJ,KAAK,mEAAmE;YACtE;;;;;;;;eAQG;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,sBAAsB,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D,CAAC;QAEJ;YACE,yFAAyF;YACzF,6CAA6C;YAC7C,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,SAAS,4BAA4B,CAAC,IAAY,EAAE,KAAa;IAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,IAAa,EAAE,GAAa;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;QAC5E,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,yFAAyF;YACzF,sFAAsF;YACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,SAAS;QACX,CAAC;QACD,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAgB,EAChB,QAAgB;IAEhB,kGAAkG;IAClG,+FAA+F;IAC/F,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvD,MAAM,CAAC,QAAQ,CAAC;QAChB,MAAM,CAAC,iBAAiB,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,gBAAgB,IAAI,CAAC,CAAC;gBACtB,IAAI,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;oBAC3C,MAAM,IAAI,6BAA6B,CACrC,+BAA+B,CAAC,iBAAiB,EACjD,8BAA8B,mBAAmB,UAAU,CAC5D,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD;;;mBAGG;gBACH,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;gBACnC,IAAI,aAAa,GAAG,4BAA4B,EAAE,CAAC;oBACjD,MAAM,IAAI,6BAA6B,CACrC,+BAA+B,CAAC,iBAAiB,EACjD,oBAAoB,aAAa,wDAAwD,4BAA4B,QAAQ,CAC9H,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,6BAA6B,EAAE,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,6BAA6B,CACrC,+BAA+B,CAAC,oBAAoB,EACpD,8CAA8C,EAC9C,KAAK,CACN,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACzC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC,CACzG,CAAC;IAEF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,6BAA6B,CACrC,+BAA+B,CAAC,aAAa,EAC7C,6CAA6C,QAAQ,oBAAoB,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,yFAAyF;QACzF,2FAA2F;QAC3F,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,KAAK;QACjB,8FAA8F;QAC9F,oFAAoF;QACpF,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,6FAA6F;QAC7F,qBAAqB;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,MAAM,IAAI,GAAG,MAAM;SAChB,IAAI,CAAC,EAAE,CAAC;SACR,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;SAC3B,IAAI,EAAE,CAAC;IAEV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AAC/C,CAAC","sourcesContent":["/**\n * LOCAL text extraction for the two ZIP+XML document families — OOXML (`.docx` / `.xlsx` /\n * `.pptx`) and OpenDocument (`.odt` / `.ods` / `.odp`).\n *\n * ## Why these six, and not the other three (#434, decided 2026-09-09)\n *\n * The nine document types the `Documents` media group admits are THREE technical problems, and\n * treating them as one is what produced the original \"there is no local library for Office\" claim:\n *\n * | family | types | container |\n * |-----------------------|---------------------------|----------------------|\n * | OOXML | `.docx` `.xlsx` `.pptx` | ZIP + XML |\n * | OpenDocument | `.odt` `.ods` `.odp` | ZIP + XML — the SAME |\n * | legacy binary Office | `.doc` `.xls` `.ppt` | OLE2 compound file |\n *\n * The first two are one technique, which is why one module serves both. The third is a\n * pre-2007 binary format whose reader is a project rather than a dependency, and it stays\n * PROVIDER-ONLY — along with the genuinely provider-shaped case a local parser can never serve: a\n * scanned document whose text exists only inside images and needs real OCR.\n *\n * ## Why a local library at all, when a provider can already do it\n *\n * Because without one, a deployment with no `AI_DOCUMENT_EXTRACTION` provider accepted a `.docx`\n * upload, stored it, and produced NO corpus from it — logged at DEBUG and never an error. The media\n * group advertised nine types the deployment could not read, and said nothing.\n *\n * A local parser also keeps the document IN the deployment. Routing every `.docx` to a vendor for\n * text that is already sitting in plain XML inside the file is egress an operator has to declare\n * and a per-page cost, for a document that needs neither.\n *\n * The provider is NOT displaced: `FileTextExtractionBackendService` keeps its existing ladder, and\n * this module is the same rung `pdfjs-dist` occupies for PDF — the local library a provider falls\n * back to, and the only path when no provider is configured.\n *\n * ## What is extracted, and what is deliberately dropped\n *\n * Text, in document order, with a line break at each block boundary. Nothing else: no styling, no\n * cell coordinates, no slide numbers, no revision metadata. The consumer is a RAG corpus, which\n * embeds prose — a spreadsheet's cell addresses would be embedded noise, and a document's fonts\n * carry no meaning to retrieve.\n */\n\nimport { Buffer } from 'node:buffer';\n\n/** OOXML — the Office 2007+ ZIP container. */\nexport const OOXML_DOCUMENT_MIMES: ReadonlySet<string> = new Set([\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n]);\n\n/** OpenDocument — the same ZIP+XML technique, one `content.xml` per document. */\nexport const OPEN_DOCUMENT_MIMES: ReadonlySet<string> = new Set([\n 'application/vnd.oasis.opendocument.text',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.presentation',\n]);\n\n/** Every type this module can read without any provider. */\nexport const LOCALLY_EXTRACTABLE_DOCUMENT_MIMES: ReadonlySet<string> = new Set([\n ...OOXML_DOCUMENT_MIMES,\n ...OPEN_DOCUMENT_MIMES,\n]);\n\n/**\n * Pre-2007 binary Office. NOT served here, and the omission is a decision rather than a gap:\n * these are OLE2 compound files, a different container from a different era, and a reader for them\n * is a project. They remain extractable only through a configured provider.\n */\nexport const LEGACY_BINARY_OFFICE_MIMES: ReadonlySet<string> = new Set([\n 'application/msword',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-powerpoint',\n]);\n\n/**\n * Largest total of UNCOMPRESSED bytes this module will decompress out of one archive.\n *\n * A ZIP bomb is a real upload, not a hypothetical: a few hundred kilobytes can declare gigabytes,\n * and `unzipSync` would allocate every one of them before anything else could refuse. The cap is\n * applied from the central directory's declared sizes — BEFORE decompression — which is the only\n * point at which refusing is still cheap.\n *\n * 64 MiB because it is far above any genuine document's XML (a 500-page manuscript's\n * `document.xml` is single-digit megabytes) and far below a size that could exhaust a backend\n * serving many uploads at once.\n */\nconst MAX_TOTAL_UNCOMPRESSED_BYTES = 64 * 1024 * 1024;\n\n/** Bound on entries INSPECTED, so a pathological central directory cannot make the filter itself the attack. */\nconst MAX_ARCHIVE_ENTRIES = 4096;\n\n/**\n * Element names after which the walker emits a line break.\n *\n * ONE union across both families rather than a per-format table, because the walker never needs to\n * know which format it is reading — it needs to know which elements END A BLOCK, and the six\n * formats disagree only about spelling:\n *\n * - `w:p` / `w:tr` — WordprocessingML paragraph and table row\n * - `a:p` — DrawingML paragraph (every `.pptx` text frame)\n * - `text:p` / `text:h` / `text:table-row` — OpenDocument paragraph, heading, table row\n * - `si` / `c` — SpreadsheetML shared-string item and cell: one line per value, which is what\n * makes a sheet read as a list of values rather than one unbroken string\n */\nconst BLOCK_ELEMENT_NAMES: ReadonlySet<string> = new Set([\n 'w:p', 'w:tr',\n 'a:p',\n 'text:p', 'text:h', 'text:table-row',\n 'si', 'c',\n]);\n\n/** Why a local extraction could not be produced. The service maps these onto its own failure classes. */\nexport enum OfficeDocumentExtractionFailure {\n /** The bytes are not a readable ZIP container — a truncated upload, or a file whose extension lies. */\n UNREADABLE_CONTAINER = 'UNREADABLE_CONTAINER',\n /** A readable archive that declares more uncompressed bytes than {@link MAX_TOTAL_UNCOMPRESSED_BYTES}. */\n ARCHIVE_TOO_LARGE = 'ARCHIVE_TOO_LARGE',\n /**\n * A readable archive with none of the XML parts this format keeps its text in. Almost always a\n * mislabelled file — a `.zip` renamed, or a `.docx` MIME on something else entirely.\n */\n NO_TEXT_PARTS = 'NO_TEXT_PARTS',\n}\n\nexport class OfficeDocumentExtractionError extends Error {\n constructor(readonly failure: OfficeDocumentExtractionFailure, message: string, readonly cause?: unknown) {\n super(message);\n this.name = 'OfficeDocumentExtractionError';\n }\n}\n\nexport interface OfficeDocumentExtraction {\n readonly text: string;\n /** How many XML parts contributed — slides, sheets, or the single `content.xml`. Reported as `pageCount`. */\n readonly partCount: number;\n}\n\n/**\n * Which XML parts inside the archive hold this format's text, and in what order.\n *\n * Returned as a MATCHER plus a sort key rather than a fixed list, because two of the six formats\n * hold their text in an unbounded numbered series (`slide1.xml` … `slideN.xml`) whose members are\n * only known once the archive is open.\n */\ninterface TextPartSelector {\n readonly matches: (entryName: string) => boolean;\n /** Ordering rank. Lower sorts first; ties fall back to a NUMERIC name comparison. */\n readonly rank: (entryName: string) => number;\n}\n\nfunction selectorFor(mimeType: string): TextPartSelector {\n switch (mimeType) {\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n /*\n * Body first, then notes. Headers and footers are deliberately EXCLUDED: they repeat on every\n * page, so including them multiplies one boilerplate line by the page count and hands the\n * corpus a phrase that retrieves against everything.\n */\n return {\n matches: (name) => name === 'word/document.xml' || name === 'word/footnotes.xml' || name === 'word/endnotes.xml',\n rank: (name) => (name === 'word/document.xml' ? 0 : 1),\n };\n\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n /*\n * Slides, then speaker notes. Notes are included because they routinely carry the substance a\n * slide only gestures at — the sentence a presenter says out loud is often the one worth\n * retrieving.\n */\n return {\n matches: (name) => /^ppt\\/(slides\\/slide|notesSlides\\/notesSlide)\\d+\\.xml$/u.test(name),\n rank: (name) => (name.startsWith('ppt/slides/') ? 0 : 1),\n };\n\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n /*\n * Shared strings FIRST, then the sheets. In SpreadsheetML most cell text is de-duplicated into\n * `sharedStrings.xml` and referenced by index from the sheet, so the shared table IS the\n * document's prose; the sheets add inline strings and the numbers' surrounding structure.\n *\n * The index indirection is deliberately NOT resolved. Reading both parts yields every string\n * once, which is what a corpus needs; rebuilding each cell's value in place would reproduce\n * the spreadsheet, not its text, and would repeat every shared string once per use.\n */\n return {\n matches: (name) => name === 'xl/sharedStrings.xml' || /^xl\\/worksheets\\/sheet\\d+\\.xml$/u.test(name),\n rank: (name) => (name === 'xl/sharedStrings.xml' ? 0 : 1),\n };\n\n default:\n // Every OpenDocument format keeps its whole body in one `content.xml` — which is why the\n // three of them need no branch between them.\n return { matches: (name) => name === 'content.xml', rank: () => 0 };\n }\n}\n\n/** Numeric-aware comparison, so `slide2.xml` precedes `slide10.xml` rather than following it. */\nfunction compareNumericallyWithinRank(left: string, right: string): number {\n return left.localeCompare(right, 'en', { numeric: true });\n}\n\n/**\n * Walk a `preserveOrder` parse tree, appending every text node and breaking lines at block\n * boundaries.\n *\n * `preserveOrder` is what makes this correct rather than approximate: the parser emits an ARRAY of\n * single-key objects in document order, so text that is interleaved between child elements — which\n * is every run in a Word paragraph — arrives in the order a reader would meet it. The default\n * (unordered) shape collapses repeated siblings into arrays keyed by tag name and loses the\n * interleaving entirely, which silently reorders every sentence containing formatting.\n */\nfunction collectText(node: unknown, out: string[]): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectText(child, out);\n }\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return;\n }\n\n for (const [name, value] of Object.entries(node as Record<string, unknown>)) {\n if (name === '#text') {\n // `trimValues: false` keeps the intra-run spacing that separates words across formatting\n // boundaries — trimming here is what turns \"the <b>quick</b> fox\" into \"thequickfox\".\n if (typeof value === 'string' && value.length > 0) {\n out.push(value);\n }\n continue;\n }\n collectText(value, out);\n if (BLOCK_ELEMENT_NAMES.has(name)) {\n out.push('\\n');\n }\n }\n}\n\n/**\n * Extract the text of one OOXML or OpenDocument file.\n *\n * Throws {@link OfficeDocumentExtractionError} rather than returning an empty string for a document\n * it could not read: an empty corpus and an unreadable file are different facts, and the caller\n * classifies them differently — one is \"this document has no text\", the other is \"these bytes are\n * not what they claim to be\".\n */\nexport async function extractOfficeDocumentText(\n document: Buffer,\n mimeType: string,\n): Promise<OfficeDocumentExtraction> {\n // Dynamic, matching how `pdfjs-dist` is loaded for PDF: both are installed dependencies that only\n // a file-extraction call needs, and neither belongs on the boot path of every backend process.\n const [{ unzipSync }, { XMLParser }] = await Promise.all([\n import('fflate'),\n import('fast-xml-parser'),\n ]);\n\n const selector = selectorFor(mimeType);\n\n let declaredBytes = 0;\n let inspectedEntries = 0;\n let entries: Record<string, Uint8Array>;\n try {\n entries = unzipSync(new Uint8Array(document), {\n filter: (file) => {\n inspectedEntries += 1;\n if (inspectedEntries > MAX_ARCHIVE_ENTRIES) {\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.ARCHIVE_TOO_LARGE,\n `Archive declares more than ${MAX_ARCHIVE_ENTRIES} entries`,\n );\n }\n if (!selector.matches(file.name)) {\n return false;\n }\n /*\n * `originalSize` comes from the central directory, so this refuses BEFORE the bytes are\n * allocated. Checking after decompression would be checking after the damage.\n */\n declaredBytes += file.originalSize;\n if (declaredBytes > MAX_TOTAL_UNCOMPRESSED_BYTES) {\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.ARCHIVE_TOO_LARGE,\n `Archive declares ${declaredBytes} uncompressed bytes across its text parts, above the ${MAX_TOTAL_UNCOMPRESSED_BYTES} limit`,\n );\n }\n return true;\n },\n });\n } catch (cause) {\n if (cause instanceof OfficeDocumentExtractionError) {\n throw cause;\n }\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.UNREADABLE_CONTAINER,\n 'The document is not a readable ZIP container',\n cause,\n );\n }\n\n const partNames = Object.keys(entries).sort(\n (left, right) => selector.rank(left) - selector.rank(right) || compareNumericallyWithinRank(left, right),\n );\n\n if (partNames.length === 0) {\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.NO_TEXT_PARTS,\n `The archive holds none of the XML parts a ${mimeType} keeps its text in`,\n );\n }\n\n const parser = new XMLParser({\n preserveOrder: true,\n // Attributes carry no prose. Ignoring them also keeps the walker from having to skip the\n // parser's `:@` attribute nodes, which would otherwise be indistinguishable from elements.\n ignoreAttributes: true,\n trimValues: false,\n // XML's five predefined entities and numeric references are what a `&` in a document body\n // arrives as; without this the corpus carries the escape rather than the character.\n processEntities: true,\n });\n\n const decoder = new TextDecoder('utf-8');\n const pieces: string[] = [];\n for (const partName of partNames) {\n collectText(parser.parse(decoder.decode(entries[partName]!)), pieces);\n // A part boundary is a block boundary: the last paragraph of one slide must not run into the\n // first of the next.\n pieces.push('\\n');\n }\n\n /*\n * Collapse the runs of blank lines the block breaks produce — a Word paragraph inside a table row\n * closes both, and an empty paragraph closes one around nothing. Left alone, a document with any\n * table structure arrives as more newlines than text, and the chunker then splits on them.\n */\n const text = pieces\n .join('')\n .replace(/[ \\t]+\\n/gu, '\\n')\n .replace(/\\n{3,}/gu, '\\n\\n')\n .trim();\n\n return { text, partCount: partNames.length };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"office-document-text-extraction.backend.utils.js","sourceRoot":"","sources":["../../../../src/files/utils/office-document-text-extraction.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * LOCAL text extraction for the two ZIP+XML document families — OOXML (`.docx` / `.xlsx` /\n * `.pptx`) and OpenDocument (`.odt` / `.ods` / `.odp`).\n *\n * ## Why these six, and not the other three (#434, decided 2026-09-09)\n *\n * The nine document types the `Documents` media group admits are THREE technical problems, and\n * treating them as one is what produced the original \"there is no local library for Office\" claim:\n *\n * | family | types | container |\n * |-----------------------|---------------------------|----------------------|\n * | OOXML | `.docx` `.xlsx` `.pptx` | ZIP + XML |\n * | OpenDocument | `.odt` `.ods` `.odp` | ZIP + XML — the SAME |\n * | legacy binary Office | `.doc` `.xls` `.ppt` | OLE2 compound file |\n *\n * The first two are one technique, which is why one module serves both. The third is a\n * pre-2007 binary format whose reader is a project rather than a dependency, and it stays\n * PROVIDER-ONLY — along with the genuinely provider-shaped case a local parser can never serve: a\n * scanned document whose text exists only inside images and needs real OCR.\n *\n * ## Why a local library at all, when a provider can already do it\n *\n * Because without one, a deployment with no `AI_DOCUMENT_EXTRACTION` provider accepted a `.docx`\n * upload, stored it, and produced NO corpus from it — logged at DEBUG and never an error. The media\n * group advertised nine types the deployment could not read, and said nothing.\n *\n * A local parser also keeps the document IN the deployment. Routing every `.docx` to a vendor for\n * text that is already sitting in plain XML inside the file is egress an operator has to declare\n * and a per-page cost, for a document that needs neither.\n *\n * The provider is NOT displaced: `FileTextExtractionBackendService` keeps its existing ladder, and\n * this module is the same rung `pdfjs-dist` occupies for PDF — the local library a provider falls\n * back to, and the only path when no provider is configured.\n *\n * ## What is extracted, and what is deliberately dropped\n *\n * Text, in document order, with a line break at each block boundary. Nothing else: no styling, no\n * cell coordinates, no slide numbers, no revision metadata. The consumer is a RAG corpus, which\n * embeds prose — a spreadsheet's cell addresses would be embedded noise, and a document's fonts\n * carry no meaning to retrieve.\n */\n\nimport { Buffer } from 'node:buffer';\n\n/** OOXML — the Office 2007+ ZIP container. */\nexport const OOXML_DOCUMENT_MIMES: ReadonlySet<string> = new Set([\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n]);\n\n/** OpenDocument — the same ZIP+XML technique, one `content.xml` per document. */\nexport const OPEN_DOCUMENT_MIMES: ReadonlySet<string> = new Set([\n 'application/vnd.oasis.opendocument.text',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.presentation',\n]);\n\n/** Every type this module can read without any provider. */\nexport const LOCALLY_EXTRACTABLE_DOCUMENT_MIMES: ReadonlySet<string> = new Set([\n ...OOXML_DOCUMENT_MIMES,\n ...OPEN_DOCUMENT_MIMES,\n]);\n\n/**\n * Pre-2007 binary Office. NOT served here, and the omission is a decision rather than a gap:\n * these are OLE2 compound files, a different container from a different era, and a reader for them\n * is a project. They remain extractable only through a configured provider.\n */\nexport const LEGACY_BINARY_OFFICE_MIMES: ReadonlySet<string> = new Set([\n 'application/msword',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-powerpoint',\n]);\n\n/**\n * Largest total of UNCOMPRESSED bytes this module will decompress out of one archive.\n *\n * A ZIP bomb is a real upload, not a hypothetical: a few hundred kilobytes can declare gigabytes,\n * and `unzipSync` would allocate every one of them before anything else could refuse. The cap is\n * applied from the central directory's declared sizes — BEFORE decompression — which is the only\n * point at which refusing is still cheap.\n *\n * 64 MiB because it is far above any genuine document's XML (a 500-page manuscript's\n * `document.xml` is single-digit megabytes) and far below a size that could exhaust a backend\n * serving many uploads at once.\n */\nconst MAX_TOTAL_UNCOMPRESSED_BYTES = 64 * 1024 * 1024;\n\n/** Bound on entries INSPECTED, so a pathological central directory cannot make the filter itself the attack. */\nconst MAX_ARCHIVE_ENTRIES = 4096;\n\n/**\n * Element names after which the walker emits a line break.\n *\n * ONE union across both families rather than a per-format table, because the walker never needs to\n * know which format it is reading — it needs to know which elements END A BLOCK, and the six\n * formats disagree only about spelling:\n *\n * - `w:p` / `w:tr` — WordprocessingML paragraph and table row\n * - `a:p` — DrawingML paragraph (every `.pptx` text frame)\n * - `text:p` / `text:h` / `text:table-row` — OpenDocument paragraph, heading, table row\n * - `si` / `c` — SpreadsheetML shared-string item and cell: one line per value, which is what\n * makes a sheet read as a list of values rather than one unbroken string\n */\nconst BLOCK_ELEMENT_NAMES: ReadonlySet<string> = new Set([\n 'w:p', 'w:tr',\n 'a:p',\n 'text:p', 'text:h', 'text:table-row',\n 'si', 'c',\n]);\n\n/** Why a local extraction could not be produced. The service maps these onto its own failure classes. */\nexport enum OfficeDocumentExtractionFailure {\n /** The bytes are not a readable ZIP container — a truncated upload, or a file whose extension lies. */\n UNREADABLE_CONTAINER = 'UNREADABLE_CONTAINER',\n /** A readable archive that declares more uncompressed bytes than {@link MAX_TOTAL_UNCOMPRESSED_BYTES}. */\n ARCHIVE_TOO_LARGE = 'ARCHIVE_TOO_LARGE',\n /**\n * A readable archive with none of the XML parts this format keeps its text in. Almost always a\n * mislabelled file — a `.zip` renamed, or a `.docx` MIME on something else entirely.\n */\n NO_TEXT_PARTS = 'NO_TEXT_PARTS',\n}\n\nexport class OfficeDocumentExtractionError extends Error {\n constructor(readonly failure: OfficeDocumentExtractionFailure, message: string, readonly cause?: unknown) {\n super(message);\n this.name = 'OfficeDocumentExtractionError';\n }\n}\n\nexport interface OfficeDocumentExtraction {\n readonly text: string;\n /** How many XML parts contributed — slides, sheets, or the single `content.xml`. Reported as `pageCount`. */\n readonly partCount: number;\n}\n\n/**\n * Which XML parts inside the archive hold this format's text, and in what order.\n *\n * Returned as a MATCHER plus a sort key rather than a fixed list, because two of the six formats\n * hold their text in an unbounded numbered series (`slide1.xml` … `slideN.xml`) whose members are\n * only known once the archive is open.\n */\ninterface TextPartSelector {\n readonly matches: (entryName: string) => boolean;\n /** Ordering rank. Lower sorts first; ties fall back to a NUMERIC name comparison. */\n readonly rank: (entryName: string) => number;\n}\n\nfunction selectorFor(mimeType: string): TextPartSelector {\n switch (mimeType) {\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n /*\n * Body first, then notes. Headers and footers are deliberately EXCLUDED: they repeat on every\n * page, so including them multiplies one boilerplate line by the page count and hands the\n * corpus a phrase that retrieves against everything.\n */\n return {\n matches: (name) => name === 'word/document.xml' || name === 'word/footnotes.xml' || name === 'word/endnotes.xml',\n rank: (name) => (name === 'word/document.xml' ? 0 : 1),\n };\n\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n /*\n * Slides, then speaker notes. Notes are included because they routinely carry the substance a\n * slide only gestures at — the sentence a presenter says out loud is often the one worth\n * retrieving.\n */\n return {\n matches: (name) => /^ppt\\/(slides\\/slide|notesSlides\\/notesSlide)\\d+\\.xml$/u.test(name),\n rank: (name) => (name.startsWith('ppt/slides/') ? 0 : 1),\n };\n\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n /*\n * Shared strings FIRST, then the sheets. In SpreadsheetML most cell text is de-duplicated into\n * `sharedStrings.xml` and referenced by index from the sheet, so the shared table IS the\n * document's prose; the sheets add inline strings and the numbers' surrounding structure.\n *\n * The index indirection is deliberately NOT resolved. Reading both parts yields every string\n * once, which is what a corpus needs; rebuilding each cell's value in place would reproduce\n * the spreadsheet, not its text, and would repeat every shared string once per use.\n */\n return {\n matches: (name) => name === 'xl/sharedStrings.xml' || /^xl\\/worksheets\\/sheet\\d+\\.xml$/u.test(name),\n rank: (name) => (name === 'xl/sharedStrings.xml' ? 0 : 1),\n };\n\n default:\n // Every OpenDocument format keeps its whole body in one `content.xml` — which is why the\n // three of them need no branch between them.\n return { matches: (name) => name === 'content.xml', rank: () => 0 };\n }\n}\n\n/** Numeric-aware comparison, so `slide2.xml` precedes `slide10.xml` rather than following it. */\nfunction compareNumericallyWithinRank(left: string, right: string): number {\n return left.localeCompare(right, 'en', { numeric: true });\n}\n\n/**\n * Walk a `preserveOrder` parse tree, appending every text node and breaking lines at block\n * boundaries.\n *\n * `preserveOrder` is what makes this correct rather than approximate: the parser emits an ARRAY of\n * single-key objects in document order, so text that is interleaved between child elements — which\n * is every run in a Word paragraph — arrives in the order a reader would meet it. The default\n * (unordered) shape collapses repeated siblings into arrays keyed by tag name and loses the\n * interleaving entirely, which silently reorders every sentence containing formatting.\n */\nfunction collectText(node: unknown, out: string[]): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectText(child, out);\n }\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return;\n }\n\n for (const [name, value] of Object.entries(node as Record<string, unknown>)) {\n if (name === '#text') {\n // `trimValues: false` keeps the intra-run spacing that separates words across formatting\n // boundaries — trimming here is what turns \"the <b>quick</b> fox\" into \"thequickfox\".\n if (typeof value === 'string' && value.length > 0) {\n out.push(value);\n }\n continue;\n }\n collectText(value, out);\n if (BLOCK_ELEMENT_NAMES.has(name)) {\n out.push('\\n');\n }\n }\n}\n\n/**\n * Extract the text of one OOXML or OpenDocument file.\n *\n * Throws {@link OfficeDocumentExtractionError} rather than returning an empty string for a document\n * it could not read: an empty corpus and an unreadable file are different facts, and the caller\n * classifies them differently — one is \"this document has no text\", the other is \"these bytes are\n * not what they claim to be\".\n */\nexport async function extractOfficeDocumentText(\n document: Buffer,\n mimeType: string,\n): Promise<OfficeDocumentExtraction> {\n // Dynamic, matching how `pdfjs-dist` is loaded for PDF: both are installed dependencies that only\n // a file-extraction call needs, and neither belongs on the boot path of every backend process.\n const [{ unzipSync }, { XMLParser }] = await Promise.all([\n import('fflate'),\n import('fast-xml-parser'),\n ]);\n\n const selector = selectorFor(mimeType);\n\n let declaredBytes = 0;\n let inspectedEntries = 0;\n let entries: Record<string, Uint8Array>;\n try {\n entries = unzipSync(new Uint8Array(document), {\n filter: (file) => {\n inspectedEntries += 1;\n if (inspectedEntries > MAX_ARCHIVE_ENTRIES) {\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.ARCHIVE_TOO_LARGE,\n `Archive declares more than ${MAX_ARCHIVE_ENTRIES} entries`,\n );\n }\n if (!selector.matches(file.name)) {\n return false;\n }\n /*\n * `originalSize` comes from the central directory, so this refuses BEFORE the bytes are\n * allocated. Checking after decompression would be checking after the damage.\n */\n declaredBytes += file.originalSize;\n if (declaredBytes > MAX_TOTAL_UNCOMPRESSED_BYTES) {\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.ARCHIVE_TOO_LARGE,\n `Archive declares ${declaredBytes} uncompressed bytes across its text parts, above the ${MAX_TOTAL_UNCOMPRESSED_BYTES} limit`,\n );\n }\n return true;\n },\n });\n } catch (cause) {\n if (cause instanceof OfficeDocumentExtractionError) {\n throw cause;\n }\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.UNREADABLE_CONTAINER,\n 'The document is not a readable ZIP container',\n cause,\n );\n }\n\n const partNames = Object.keys(entries).sort(\n (left, right) => selector.rank(left) - selector.rank(right) || compareNumericallyWithinRank(left, right),\n );\n\n if (partNames.length === 0) {\n throw new OfficeDocumentExtractionError(\n OfficeDocumentExtractionFailure.NO_TEXT_PARTS,\n `The archive holds none of the XML parts a ${mimeType} keeps its text in`,\n );\n }\n\n const parser = new XMLParser({\n preserveOrder: true,\n // Attributes carry no prose. Ignoring them also keeps the walker from having to skip the\n // parser's `:@` attribute nodes, which would otherwise be indistinguishable from elements.\n ignoreAttributes: true,\n trimValues: false,\n // XML's five predefined entities and numeric references are what a `&` in a document body\n // arrives as; without this the corpus carries the escape rather than the character.\n processEntities: true,\n });\n\n const decoder = new TextDecoder('utf-8');\n const pieces: string[] = [];\n for (const partName of partNames) {\n collectText(parser.parse(decoder.decode(entries[partName]!)), pieces);\n // A part boundary is a block boundary: the last paragraph of one slide must not run into the\n // first of the next.\n pieces.push('\\n');\n }\n\n /*\n * Collapse the runs of blank lines the block breaks produce — a Word paragraph inside a table row\n * closes both, and an empty paragraph closes one around nothing. Left alone, a document with any\n * table structure arrives as more newlines than text, and the chunker then splits on them.\n */\n const text = pieces\n .join('')\n .replace(/[ \\t]+\\n/gu, '\\n')\n .replace(/\\n{3,}/gu, '\\n\\n')\n .trim();\n\n return { text, partCount: partNames.length };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rag-source-field-schema-path.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"rag-source-field-schema-path.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/rag-source-field-schema-path.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAiBL,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;GAQG;AACH,oBAAY,qBAAqB;IAC/B,mEAAmE;IACnE,UAAU,eAAe;IACzB,iGAAiG;IACjG,eAAe,oBAAoB;CACpC;AAED,MAAM,WAAW,oCAAoC;IACnD,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,qBAAqB,CAAC;IACpC,iEAAiE;IACjE,MAAM,EAAE,sBAAsB,CAAC;IAC/B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,yBAAyB,CAAC;CAC5C;AAED,qBAAa,yCAA0C,SAAQ,KAAK;aAEhD,SAAS,EAAE,MAAM;aACjB,aAAa,EAAE,oCAAoC;aACnD,gBAAgB,EAAE,oCAAoC;gBAFtD,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,oCAAoC,EACnD,gBAAgB,EAAE,oCAAoC;CAKzE;AAED,qBAAa,6CAA8C,SAAQ,KAAK;aAC1C,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAO9C;AA4CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,SAAS,EAChC,UAAU,GAAE,MAAW,EACvB,aAAa,GAAE,OAAO,CAAC,MAAM,CAAyB,GACrD,oCAAoC,EAAE,CA6HxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-application-identity.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"storage-application-identity.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/files/utils/storage-application-identity.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAEpH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,iCAAiC,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,MAAM,CAEnG"}
|
package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-abandoned-task-sweep.batch.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"a2a-abandoned-task-sweep.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAUH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AA6D/I,wBAAgB,gCAAgC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAgNvG"}
|
package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-abandoned-task-sweep.batch.backend.service.js","sourceRoot":"","sources":["../../../../../../src/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Abandoned-A2A-task sweep — the DURABLE half of the liveness design.\n *\n * ## Why this exists even though `tasks/get` already derives liveness\n *\n * `A2ATaskBackendService.readTask` reports a non-terminal task with no lease as FAILED,\n * so a POLLING client always sees the truth. But the stored row still says `working`,\n * and everything that does not go through that one read path — LIST, analytics,\n * operator dashboards, compliance evidence — keeps reading a value that is false and\n * never self-corrects. In an assurance-ready framework a persisted record that\n * lies is a defect, not cosmetics.\n *\n * The pair is deliberate and neither half is sufficient alone:\n * - derive-on-read gives CORRECTNESS with zero staleness and no write on a read path;\n * - this sweep gives DURABILITY, so the stored rows stop lying.\n *\n * ## Why `updatedAt` is only a pre-filter, never the verdict\n *\n * A legitimately long turn (a big tool loop) has an OLD `updatedAt` but a LIVE lease —\n * the lease is refreshed on a heartbeat, the row is not. So `updatedAt` is used purely\n * to avoid a Redis lookup per non-terminal row; the LEASE decides. Treating an old\n * timestamp as proof of abandonment would kill healthy long-running work.\n *\n * ## Why a missing lease is not, on its own, the verdict either\n *\n * The lease decides only when its ABSENCE can be explained. A pod whose own Redis writes are\n * failing produces a turn that is running perfectly and has no lease, and from this pod that is\n * indistinguishable from a pod that died — while `isLeaseMechanismWritable` above, which is\n * evaluated HERE, sees nothing wrong. Recording FAILED on such a row makes a false reading\n * permanent, and until the reclaim path in `advanceTask` there was no way back at all.\n *\n * So each candidate's missing lease has to explain itself before this batch acts on it\n * (`corroborateAbandonment` → {@link A2A_AbandonmentEvidence}): a lease that demonstrably existed\n * and lapsed is a verdict on the first pass, an unexplained absence has to still be there a full\n * sweep period later, and an enquiry that failed outright is never counted as either. The cost is\n * an hour's delay for the rare row whose establishment marker has expired; the benefit is that no\n * single unexplainable reading can end a live turn.\n */\n\nimport { z } from 'zod';\n\nimport {\n CoreResourceType,\n FlowsActors_Status,\n type FlowActorTask,\n} from '@wildo-ai/saas-models';\n\nimport { createCustomBatchExecutionService } from '~wildo-backend-lib/base-classes/services/batches/batches-cronjobs-custom-execution.service';\nimport { ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST } from '~wildo-backend-lib/base-classes/services/batches/engine-custom-batch-manifests';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type { SystemAccessBackendService } from '~wildo-backend-lib/base-classes/services/services/system-access.backend.service';\nimport type { A2ATaskCancellationBackendService } from '~wildo-backend-lib/flows-actors/a2a/services/a2a-task-cancellation.backend.service';\nimport { A2A_TASK_LEASE_TTL_SECONDS } from '~wildo-backend-lib/flows-actors/a2a/services/a2a-task-cancellation.backend.service';\nimport {\n A2A_AbandonmentEvidence,\n abandonmentEvidenceIsAVerdict,\n isLivenessGovernedA2ATaskStatus,\n LIVENESS_GOVERNED_TASK_STATUSES,\n} from '~wildo-backend-lib/flows-actors/a2a/models/a2a.backend.schemas';\n\n/**\n * Only rows untouched for several lease periods are even considered. Generous on\n * purpose: the cost of waiting one more cycle to repair a dead row is nil, while the\n * cost of mistaking a live turn for an abandoned one is killing real work.\n */\nconst ABANDONMENT_GRACE_MS = A2A_TASK_LEASE_TTL_SECONDS * 1000 * 4;\n\n/**\n * The statuses a sweep can act on — those whose stored value is only trustworthy while a pod\n * is alive. Imported rather than derived locally so this and the derive-on-read downgrade can\n * never disagree about what \"abandoned\" means.\n *\n * ⚠️ NARROWER than \"non-terminal\" (review finding A3-3), which is what this used to be. A task\n * INTERRUPTED for a human approval is non-terminal and holds no lease BY DESIGN, so the old set\n * made the sweep durably FAIL every paused task one grace window after it paused — destroying\n * the approval seam before Phase 2 could use it.\n */\nconst SWEEPABLE_STATUSES: FlowsActors_Status[] = LIVENESS_GOVERNED_TASK_STATUSES;\n\n/** The three owner-scope variants a task can live on. */\nconst TASK_VARIANTS: CoreResourceType[] = [\n CoreResourceType.USER_FLOW_ACTOR_TASKS,\n CoreResourceType.ORGANIZATION_FLOW_ACTOR_TASKS,\n CoreResourceType.APPLICATION_FLOW_ACTOR_TASKS,\n];\n\nconst A2AAbandonedTaskSweepInputSchema = z.object({}).loose();\nconst A2AAbandonedTaskSweepOutputSchema = z.object({\n scanned: z.number(),\n markedFailed: z.number(),\n stillAlive: z.number(),\n /** Rows that reached a terminal state between the listing and the repair — NOT repairs. */\n raced: z.number(),\n /**\n * Rows whose missing lease could not yet be explained, and whose absence this run RECORDED so a\n * later one can corroborate it. Counted apart from `markedFailed` for the same reason `raced`\n * is: reporting an enquiry as a repair is claiming work that did not happen.\n */\n awaitingCorroboration: z.number(),\n /**\n * Rows about which this run learned NOTHING — the enquiry itself failed. Distinct from\n * `awaitingCorroboration`, which made progress toward a verdict; a run that is mostly this is a\n * degraded run, not a quiet one.\n */\n undetermined: z.number(),\n});\n\nexport function createA2AAbandonedTaskSweepBatch(): ReturnType<typeof createCustomBatchExecutionService> {\n return createCustomBatchExecutionService({\n input: A2AAbandonedTaskSweepInputSchema,\n output: A2AAbandonedTaskSweepOutputSchema,\n batchCronjob_Context: {\n kind: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.kind,\n resourceIdentifier: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.resourceIdentifier,\n operationIdentifier: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.operationIdentifier,\n cronJobExpression: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.cronExpression,\n },\n resolveDependencies: ({ get }) => ({\n systemAccess: get<SystemAccessBackendService>(SAAS_SERVICE_TYPES.SystemAccessService),\n cancellation: get<A2ATaskCancellationBackendService>(SAAS_SERVICE_TYPES.A2ATaskCancellationService),\n }),\n doHandle: async (_input, { logger, dependencies }) => {\n const { systemAccess, cancellation } = dependencies;\n\n let scanned = 0;\n let markedFailed = 0;\n let stillAlive = 0;\n // Rows that finished legitimately between the listing and the repair. Reported separately\n // because they are NOT repairs — counting them in `markedFailed` is how a sweep claims work\n // it did not do, which is the same dishonesty the no-match log exists to prevent.\n let raced = 0;\n // Rows this run declined to judge, split by WHY. Two counters, not one, because the two\n // want opposite reactions: a run full of `awaitingCorroboration` is working as designed and\n // will decide next hour, while a run full of `undetermined` is one whose liveness enquiry is\n // itself broken and will never decide anything.\n let awaitingCorroboration = 0;\n let undetermined = 0;\n\n // ── ABSTAIN when the liveness signal cannot be trusted (review finding A3-4) ───────────\n //\n // This batch is the ONLY consumer that converts a liveness answer into a durable terminal\n // status, so it is the only one that must fail closed. Everywhere else a degraded Redis\n // costs a stale `working` that the next poll corrects; here it would record FAILED on\n // every healthy turn in the fleet and there is no compensating pass to undo it.\n //\n // The specific failure this catches: lease WRITES failing while reads succeed. Every live\n // turn's lease is then missing, `isTurnAlive` truthfully reports \"no lease\", and the sweep\n // would conclude the entire fleet died. Skipping a run costs nothing — abandoned rows are\n // still there next hour, and derive-on-read already reports them correctly meanwhile.\n if (!(await cancellation.isLeaseMechanismWritable())) {\n logger.warn('[A2ATaskSweep] Skipping the run: the task-lease mechanism is not writable, so liveness cannot be trusted', {\n consequence: 'abandoned tasks stay unrepaired until a later run; derive-on-read still reports them as failed',\n });\n return { scanned: 0, markedFailed: 0, stillAlive: 0, raced: 0, awaitingCorroboration: 0, undetermined: 0 };\n }\n\n const cutoff = new Date(Date.now() - ABANDONMENT_GRACE_MS);\n\n for (const resourceType of TASK_VARIANTS) {\n let candidates: FlowActorTask[] = [];\n try {\n // Adapter-neutral on purpose: tasks may be persisted on MongoDB or PostgreSQL,\n // so this must NOT reach for a raw Mongo collection the way some older cleanup\n // batches do — that would silently sweep nothing on a PostgreSQL deployment.\n const listed = await systemAccess.listAsSystem<FlowActorTask>(\n resourceType,\n // Filter on BOTH axes. `status` is indexed specifically for this sweep, and the\n // schema says so — but an earlier version queried only `updatedAt`, fetching every\n // terminal row and discarding it in memory at the loop below. Terminal tasks are\n // never deleted, so that candidate set grew without bound: the sweep got slower\n // forever while doing the same work.\n { updatedAt: { $lt: cutoff }, status: { $in: SWEEPABLE_STATUSES } },\n undefined,\n { suppressSystemAudit: true },\n );\n // `listAsSystem` returns either a bare array or a paginated envelope depending on\n // the resource's list shape — normalise rather than assuming one.\n candidates = Array.isArray(listed) ? listed : (listed?.data ?? []);\n } catch (error) {\n // One variant failing must not abort the others — a per-scope outage should\n // degrade coverage, never the whole sweep.\n logger.error('[A2ATaskSweep] Failed to list candidate tasks for a scope', {\n resourceType,\n ...projectCaughtErrorLogFields(error),\n });\n continue;\n }\n\n for (const task of candidates) {\n // Defence in depth against a filter that widened: re-assert per row that this task is\n // one whose truth depends on a live pod, so a terminal OR interrupted row that slipped\n // through the query is skipped rather than repaired.\n if (!isLivenessGovernedA2ATaskStatus(task.status)) continue;\n scanned += 1;\n\n // The LEASE decides, not the timestamp.\n if (await cancellation.isTurnAlive(task.taskId)) {\n stillAlive += 1;\n continue;\n }\n\n // ── \"No lease\" is not yet a VERDICT (review finding S-1a) ──────────────────────────\n //\n // The fleet-wide `isLeaseMechanismWritable` gate above is evaluated on THIS pod. A\n // per-pod failure — the EXECUTING pod's Redis connection is broken while the sweep's is\n // fine — passes it untouched: `isTurnAlive` then truthfully reports no lease for a turn\n // that is running perfectly well, and everything below would record that durably. The\n // owning pod does log the fact, but it logs it on the pod nobody here is reading.\n //\n // So the absence has to explain itself before it is acted on. `LEASE_LAPSED` means the\n // lease demonstrably existed and stopped — a pod held this work and died, which is this\n // batch's whole purpose and is repaired on the first pass, exactly as before.\n // `CORROBORATED_ABSENCE` means a previous run saw the same unexplained absence and it is\n // still there a full sweep period later, which no merely-failed write survives. Anything\n // else is an enquiry, not an answer, and an enquiry must never become a terminal status.\n const evidence = await cancellation.corroborateAbandonment(task.taskId);\n if (!abandonmentEvidenceIsAVerdict(evidence)) {\n // Note what is NOT done here: no broadcast. Cancelling on an unexplained absence would\n // destroy the very turn this abstention exists to protect, and the broadcast below is\n // deliberately paired with the durable write rather than with the observation.\n if (evidence === A2A_AbandonmentEvidence.FIRST_ABSENCE) {\n awaitingCorroboration += 1;\n logger.info('[A2ATaskSweep] A task has no lease and no record of ever having had one; left alone pending corroboration', {\n taskId: task.taskId,\n consequence: 'if the absence is still there next run it is repaired; if the owning pod was merely unable to write, its next heartbeat clears this',\n });\n } else {\n undetermined += 1;\n logger.warn('[A2ATaskSweep] Could not establish why a task has no lease; nothing was learned and nothing was recorded', {\n taskId: task.taskId, evidence,\n });\n }\n continue;\n }\n\n // Site 2 of 2 for \"a cancellation is broadcast whenever cancellation is requested\"\n // (review finding G7-2). The sweep is about to DECLARE this turn dead. If it is not\n // actually dead — the lease could be missing because a write failed, or because the\n // owning pod boots without Redis — then writing FAILED without broadcasting leaves the\n // worst possible state: the record says failed, the client is told failed, the answer is\n // discarded, and the turn keeps spending with nothing left that will ever stop it. There\n // is no per-turn wall clock on the API transport and no token ceiling unless the agent\n // declares one, so nothing else bounds it.\n //\n // Broadcasting first cannot be wrong: a pod that does not own the task ignores it, and a\n // genuinely dead pod does not answer. Best-effort — a broadcast failure must not stop the\n // repair, which is the durable half.\n await cancellation.requestCancel(task.taskId).catch(() => { /* the repair still stands */ });\n\n try {\n // `updateAsSystem` — the resource grants UPDATE but not UPDATE_MANY, so the\n // many-variant is refused fail-closed and this sweep would repair nothing while\n // still logging \"sweep complete\". See `advanceTask` for the same correction.\n //\n // ── The status predicate is COMPARE-AND-SWAP, and it is not optional (finding G4-1) ──\n //\n // The `isLivenessGovernedA2ATaskStatus` guard above reads the LISTED row — a snapshot\n // taken before the liveness check — so it cannot see a transition that happened since.\n // The losing interleaving is not exotic; it is the NORMAL end of a long turn:\n //\n // list (PROCESSING, stale `updatedAt`) → the owning pod finishes → `advanceTask`\n // writes COMPLETED → `endTurn` drops the lease → `isTurnAlive` answers \"no lease\",\n // TRUTHFULLY → this write lands FAILED on a completed task.\n //\n // The population at risk is exactly the one this batch's own header calls legitimate —\n // a long tool loop, which is why its `updatedAt` aged past the window in the first\n // place. Filtering on the sweepable set makes the store, not the snapshot, decide.\n // This is the same invariant `advanceTask` enforces; it was applied there and missed\n // here, and the missed site is the one that makes a wrong answer DURABLE.\n const repaired = await systemAccess.updateAsSystem(\n resourceType,\n { taskId: task.taskId, status: { $in: SWEEPABLE_STATUSES } },\n { status: FlowsActors_Status.FAILED, finishedAt: new Date() },\n );\n if (repaired) {\n markedFailed += 1;\n // The EVIDENCE is carried into the record of the repair, not just the fact of it. A\n // run whose repairs are all `corroborated-absence` is telling an operator that turns\n // are being killed on the weaker of the two verdicts — which is the signal that a\n // pod somewhere cannot write its leases, and the only place that shows.\n logger.info('[A2ATaskSweep] Repaired an abandoned task', { taskId: task.taskId, evidence });\n } else {\n // A no-match is now AMBIGUOUS and the two causes want opposite reactions, so it is\n // disambiguated rather than blanket-logged — the same treatment `advanceTask` got.\n // \"It finished after all\" is the CAS doing its job on an ordinary race; only a row\n // that is genuinely gone is the F-1 silent-inert class this log exists to catch.\n const current = await systemAccess.readAsSystem<FlowActorTask>(\n resourceType,\n { taskId: task.taskId },\n { suppressSystemAudit: true },\n );\n if (current) {\n raced += 1;\n logger.info('[A2ATaskSweep] Task reached a terminal state between listing and repair; left as it stands', {\n taskId: task.taskId, storedStatus: current.status,\n });\n } else {\n logger.error('[A2ATaskSweep] Repair matched no row — the task remains stale', { taskId: task.taskId });\n }\n }\n } catch (error) {\n logger.error('[A2ATaskSweep] Failed to mark an abandoned task failed', {\n taskId: task.taskId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n }\n }\n\n // Logged unconditionally, including the zero case: a sweep that silently finds\n // nothing is indistinguishable from a sweep that silently stopped running.\n logger.info('[A2ATaskSweep] Sweep complete', { scanned, markedFailed, stillAlive, raced, awaitingCorroboration, undetermined });\n return { scanned, markedFailed, stillAlive, raced, awaitingCorroboration, undetermined };\n },\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"a2a-abandoned-task-sweep.batch.backend.service.js","sourceRoot":"","sources":["../../../../../src/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Abandoned-A2A-task sweep — the DURABLE half of the liveness design.\n *\n * ## Why this exists even though `tasks/get` already derives liveness\n *\n * `A2ATaskBackendService.readTask` reports a non-terminal task with no lease as FAILED,\n * so a POLLING client always sees the truth. But the stored row still says `working`,\n * and everything that does not go through that one read path — LIST, analytics,\n * operator dashboards, compliance evidence — keeps reading a value that is false and\n * never self-corrects. In an assurance-ready framework a persisted record that\n * lies is a defect, not cosmetics.\n *\n * The pair is deliberate and neither half is sufficient alone:\n * - derive-on-read gives CORRECTNESS with zero staleness and no write on a read path;\n * - this sweep gives DURABILITY, so the stored rows stop lying.\n *\n * ## Why `updatedAt` is only a pre-filter, never the verdict\n *\n * A legitimately long turn (a big tool loop) has an OLD `updatedAt` but a LIVE lease —\n * the lease is refreshed on a heartbeat, the row is not. So `updatedAt` is used purely\n * to avoid a Redis lookup per non-terminal row; the LEASE decides. Treating an old\n * timestamp as proof of abandonment would kill healthy long-running work.\n *\n * ## Why a missing lease is not, on its own, the verdict either\n *\n * The lease decides only when its ABSENCE can be explained. A pod whose own Redis writes are\n * failing produces a turn that is running perfectly and has no lease, and from this pod that is\n * indistinguishable from a pod that died — while `isLeaseMechanismWritable` above, which is\n * evaluated HERE, sees nothing wrong. Recording FAILED on such a row makes a false reading\n * permanent, and until the reclaim path in `advanceTask` there was no way back at all.\n *\n * So each candidate's missing lease has to explain itself before this batch acts on it\n * (`corroborateAbandonment` → {@link A2A_AbandonmentEvidence}): a lease that demonstrably existed\n * and lapsed is a verdict on the first pass, an unexplained absence has to still be there a full\n * sweep period later, and an enquiry that failed outright is never counted as either. The cost is\n * an hour's delay for the rare row whose establishment marker has expired; the benefit is that no\n * single unexplainable reading can end a live turn.\n */\n\nimport { z } from 'zod';\n\nimport {\n CoreResourceType,\n FlowsActors_Status,\n type FlowActorTask,\n} from '@wildo-ai/saas-models';\n\nimport { createCustomBatchExecutionService } from '~wildo-backend-lib/base-classes/services/batches/batches-cronjobs-custom-execution.service';\nimport { ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST } from '~wildo-backend-lib/base-classes/services/batches/engine-custom-batch-manifests';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type { SystemAccessBackendService } from '~wildo-backend-lib/base-classes/services/services/system-access.backend.service';\nimport type { A2ATaskCancellationBackendService } from '~wildo-backend-lib/flows-actors/a2a/services/a2a-task-cancellation.backend.service';\nimport { A2A_TASK_LEASE_TTL_SECONDS } from '~wildo-backend-lib/flows-actors/a2a/services/a2a-task-cancellation.backend.service';\nimport {\n A2A_AbandonmentEvidence,\n abandonmentEvidenceIsAVerdict,\n isLivenessGovernedA2ATaskStatus,\n LIVENESS_GOVERNED_TASK_STATUSES,\n} from '~wildo-backend-lib/flows-actors/a2a/models/a2a.backend.schemas';\n\n/**\n * Only rows untouched for several lease periods are even considered. Generous on\n * purpose: the cost of waiting one more cycle to repair a dead row is nil, while the\n * cost of mistaking a live turn for an abandoned one is killing real work.\n */\nconst ABANDONMENT_GRACE_MS = A2A_TASK_LEASE_TTL_SECONDS * 1000 * 4;\n\n/**\n * The statuses a sweep can act on — those whose stored value is only trustworthy while a pod\n * is alive. Imported rather than derived locally so this and the derive-on-read downgrade can\n * never disagree about what \"abandoned\" means.\n *\n * ⚠️ NARROWER than \"non-terminal\" (review finding A3-3), which is what this used to be. A task\n * INTERRUPTED for a human approval is non-terminal and holds no lease BY DESIGN, so the old set\n * made the sweep durably FAIL every paused task one grace window after it paused — destroying\n * the approval seam before Phase 2 could use it.\n */\nconst SWEEPABLE_STATUSES: FlowsActors_Status[] = LIVENESS_GOVERNED_TASK_STATUSES;\n\n/** The three owner-scope variants a task can live on. */\nconst TASK_VARIANTS: CoreResourceType[] = [\n CoreResourceType.USER_FLOW_ACTOR_TASKS,\n CoreResourceType.ORGANIZATION_FLOW_ACTOR_TASKS,\n CoreResourceType.APPLICATION_FLOW_ACTOR_TASKS,\n];\n\nconst A2AAbandonedTaskSweepInputSchema = z.object({}).loose();\nconst A2AAbandonedTaskSweepOutputSchema = z.object({\n scanned: z.number(),\n markedFailed: z.number(),\n stillAlive: z.number(),\n /** Rows that reached a terminal state between the listing and the repair — NOT repairs. */\n raced: z.number(),\n /**\n * Rows whose missing lease could not yet be explained, and whose absence this run RECORDED so a\n * later one can corroborate it. Counted apart from `markedFailed` for the same reason `raced`\n * is: reporting an enquiry as a repair is claiming work that did not happen.\n */\n awaitingCorroboration: z.number(),\n /**\n * Rows about which this run learned NOTHING — the enquiry itself failed. Distinct from\n * `awaitingCorroboration`, which made progress toward a verdict; a run that is mostly this is a\n * degraded run, not a quiet one.\n */\n undetermined: z.number(),\n});\n\nexport function createA2AAbandonedTaskSweepBatch(): ReturnType<typeof createCustomBatchExecutionService> {\n return createCustomBatchExecutionService({\n input: A2AAbandonedTaskSweepInputSchema,\n output: A2AAbandonedTaskSweepOutputSchema,\n batchCronjob_Context: {\n kind: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.kind,\n resourceIdentifier: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.resourceIdentifier,\n operationIdentifier: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.operationIdentifier,\n cronJobExpression: ENGINE_A2A_ABANDONED_TASK_SWEEP_BATCH_MANIFEST.cronExpression,\n },\n resolveDependencies: ({ get }) => ({\n systemAccess: get<SystemAccessBackendService>(SAAS_SERVICE_TYPES.SystemAccessService),\n cancellation: get<A2ATaskCancellationBackendService>(SAAS_SERVICE_TYPES.A2ATaskCancellationService),\n }),\n doHandle: async (_input, { logger, dependencies }) => {\n const { systemAccess, cancellation } = dependencies;\n\n let scanned = 0;\n let markedFailed = 0;\n let stillAlive = 0;\n // Rows that finished legitimately between the listing and the repair. Reported separately\n // because they are NOT repairs — counting them in `markedFailed` is how a sweep claims work\n // it did not do, which is the same dishonesty the no-match log exists to prevent.\n let raced = 0;\n // Rows this run declined to judge, split by WHY. Two counters, not one, because the two\n // want opposite reactions: a run full of `awaitingCorroboration` is working as designed and\n // will decide next hour, while a run full of `undetermined` is one whose liveness enquiry is\n // itself broken and will never decide anything.\n let awaitingCorroboration = 0;\n let undetermined = 0;\n\n // ── ABSTAIN when the liveness signal cannot be trusted (review finding A3-4) ───────────\n //\n // This batch is the ONLY consumer that converts a liveness answer into a durable terminal\n // status, so it is the only one that must fail closed. Everywhere else a degraded Redis\n // costs a stale `working` that the next poll corrects; here it would record FAILED on\n // every healthy turn in the fleet and there is no compensating pass to undo it.\n //\n // The specific failure this catches: lease WRITES failing while reads succeed. Every live\n // turn's lease is then missing, `isTurnAlive` truthfully reports \"no lease\", and the sweep\n // would conclude the entire fleet died. Skipping a run costs nothing — abandoned rows are\n // still there next hour, and derive-on-read already reports them correctly meanwhile.\n if (!(await cancellation.isLeaseMechanismWritable())) {\n logger.warn('[A2ATaskSweep] Skipping the run: the task-lease mechanism is not writable, so liveness cannot be trusted', {\n consequence: 'abandoned tasks stay unrepaired until a later run; derive-on-read still reports them as failed',\n });\n return { scanned: 0, markedFailed: 0, stillAlive: 0, raced: 0, awaitingCorroboration: 0, undetermined: 0 };\n }\n\n const cutoff = new Date(Date.now() - ABANDONMENT_GRACE_MS);\n\n for (const resourceType of TASK_VARIANTS) {\n let candidates: FlowActorTask[] = [];\n try {\n // Adapter-neutral on purpose: tasks may be persisted on MongoDB or PostgreSQL,\n // so this must NOT reach for a raw Mongo collection the way some older cleanup\n // batches do — that would silently sweep nothing on a PostgreSQL deployment.\n const listed = await systemAccess.listAsSystem<FlowActorTask>(\n resourceType,\n // Filter on BOTH axes. `status` is indexed specifically for this sweep, and the\n // schema says so — but an earlier version queried only `updatedAt`, fetching every\n // terminal row and discarding it in memory at the loop below. Terminal tasks are\n // never deleted, so that candidate set grew without bound: the sweep got slower\n // forever while doing the same work.\n { updatedAt: { $lt: cutoff }, status: { $in: SWEEPABLE_STATUSES } },\n undefined,\n { suppressSystemAudit: true },\n );\n // `listAsSystem` returns either a bare array or a paginated envelope depending on\n // the resource's list shape — normalise rather than assuming one.\n candidates = Array.isArray(listed) ? listed : (listed?.data ?? []);\n } catch (error) {\n // One variant failing must not abort the others — a per-scope outage should\n // degrade coverage, never the whole sweep.\n logger.error('[A2ATaskSweep] Failed to list candidate tasks for a scope', {\n resourceType,\n ...projectCaughtErrorLogFields(error),\n });\n continue;\n }\n\n for (const task of candidates) {\n // Defence in depth against a filter that widened: re-assert per row that this task is\n // one whose truth depends on a live pod, so a terminal OR interrupted row that slipped\n // through the query is skipped rather than repaired.\n if (!isLivenessGovernedA2ATaskStatus(task.status)) continue;\n scanned += 1;\n\n // The LEASE decides, not the timestamp.\n if (await cancellation.isTurnAlive(task.taskId)) {\n stillAlive += 1;\n continue;\n }\n\n // ── \"No lease\" is not yet a VERDICT (review finding S-1a) ──────────────────────────\n //\n // The fleet-wide `isLeaseMechanismWritable` gate above is evaluated on THIS pod. A\n // per-pod failure — the EXECUTING pod's Redis connection is broken while the sweep's is\n // fine — passes it untouched: `isTurnAlive` then truthfully reports no lease for a turn\n // that is running perfectly well, and everything below would record that durably. The\n // owning pod does log the fact, but it logs it on the pod nobody here is reading.\n //\n // So the absence has to explain itself before it is acted on. `LEASE_LAPSED` means the\n // lease demonstrably existed and stopped — a pod held this work and died, which is this\n // batch's whole purpose and is repaired on the first pass, exactly as before.\n // `CORROBORATED_ABSENCE` means a previous run saw the same unexplained absence and it is\n // still there a full sweep period later, which no merely-failed write survives. Anything\n // else is an enquiry, not an answer, and an enquiry must never become a terminal status.\n const evidence = await cancellation.corroborateAbandonment(task.taskId);\n if (!abandonmentEvidenceIsAVerdict(evidence)) {\n // Note what is NOT done here: no broadcast. Cancelling on an unexplained absence would\n // destroy the very turn this abstention exists to protect, and the broadcast below is\n // deliberately paired with the durable write rather than with the observation.\n if (evidence === A2A_AbandonmentEvidence.FIRST_ABSENCE) {\n awaitingCorroboration += 1;\n logger.info('[A2ATaskSweep] A task has no lease and no record of ever having had one; left alone pending corroboration', {\n taskId: task.taskId,\n consequence: 'if the absence is still there next run it is repaired; if the owning pod was merely unable to write, its next heartbeat clears this',\n });\n } else {\n undetermined += 1;\n logger.warn('[A2ATaskSweep] Could not establish why a task has no lease; nothing was learned and nothing was recorded', {\n taskId: task.taskId, evidence,\n });\n }\n continue;\n }\n\n // Site 2 of 2 for \"a cancellation is broadcast whenever cancellation is requested\"\n // (review finding G7-2). The sweep is about to DECLARE this turn dead. If it is not\n // actually dead — the lease could be missing because a write failed, or because the\n // owning pod boots without Redis — then writing FAILED without broadcasting leaves the\n // worst possible state: the record says failed, the client is told failed, the answer is\n // discarded, and the turn keeps spending with nothing left that will ever stop it. There\n // is no per-turn wall clock on the API transport and no token ceiling unless the agent\n // declares one, so nothing else bounds it.\n //\n // Broadcasting first cannot be wrong: a pod that does not own the task ignores it, and a\n // genuinely dead pod does not answer. Best-effort — a broadcast failure must not stop the\n // repair, which is the durable half.\n await cancellation.requestCancel(task.taskId).catch(() => { /* the repair still stands */ });\n\n try {\n // `updateAsSystem` — the resource grants UPDATE but not UPDATE_MANY, so the\n // many-variant is refused fail-closed and this sweep would repair nothing while\n // still logging \"sweep complete\". See `advanceTask` for the same correction.\n //\n // ── The status predicate is COMPARE-AND-SWAP, and it is not optional (finding G4-1) ──\n //\n // The `isLivenessGovernedA2ATaskStatus` guard above reads the LISTED row — a snapshot\n // taken before the liveness check — so it cannot see a transition that happened since.\n // The losing interleaving is not exotic; it is the NORMAL end of a long turn:\n //\n // list (PROCESSING, stale `updatedAt`) → the owning pod finishes → `advanceTask`\n // writes COMPLETED → `endTurn` drops the lease → `isTurnAlive` answers \"no lease\",\n // TRUTHFULLY → this write lands FAILED on a completed task.\n //\n // The population at risk is exactly the one this batch's own header calls legitimate —\n // a long tool loop, which is why its `updatedAt` aged past the window in the first\n // place. Filtering on the sweepable set makes the store, not the snapshot, decide.\n // This is the same invariant `advanceTask` enforces; it was applied there and missed\n // here, and the missed site is the one that makes a wrong answer DURABLE.\n const repaired = await systemAccess.updateAsSystem(\n resourceType,\n { taskId: task.taskId, status: { $in: SWEEPABLE_STATUSES } },\n { status: FlowsActors_Status.FAILED, finishedAt: new Date() },\n );\n if (repaired) {\n markedFailed += 1;\n // The EVIDENCE is carried into the record of the repair, not just the fact of it. A\n // run whose repairs are all `corroborated-absence` is telling an operator that turns\n // are being killed on the weaker of the two verdicts — which is the signal that a\n // pod somewhere cannot write its leases, and the only place that shows.\n logger.info('[A2ATaskSweep] Repaired an abandoned task', { taskId: task.taskId, evidence });\n } else {\n // A no-match is now AMBIGUOUS and the two causes want opposite reactions, so it is\n // disambiguated rather than blanket-logged — the same treatment `advanceTask` got.\n // \"It finished after all\" is the CAS doing its job on an ordinary race; only a row\n // that is genuinely gone is the F-1 silent-inert class this log exists to catch.\n const current = await systemAccess.readAsSystem<FlowActorTask>(\n resourceType,\n { taskId: task.taskId },\n { suppressSystemAudit: true },\n );\n if (current) {\n raced += 1;\n logger.info('[A2ATaskSweep] Task reached a terminal state between listing and repair; left as it stands', {\n taskId: task.taskId, storedStatus: current.status,\n });\n } else {\n logger.error('[A2ATaskSweep] Repair matched no row — the task remains stale', { taskId: task.taskId });\n }\n }\n } catch (error) {\n logger.error('[A2ATaskSweep] Failed to mark an abandoned task failed', {\n taskId: task.taskId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n }\n }\n\n // Logged unconditionally, including the zero case: a sweep that silently finds\n // nothing is indistinguishable from a sweep that silently stopped running.\n logger.info('[A2ATaskSweep] Sweep complete', { scanned, markedFailed, stillAlive, raced, awaitingCorroboration, undetermined });\n return { scanned, markedFailed, stillAlive, raced, awaitingCorroboration, undetermined };\n },\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-push-delivery.batch.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"a2a-push-delivery.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,4FAA4F,CAAC;AAepG;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B;;;;;;;iBAO1C,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,oBAAY,2BAA2B;IACrC,iFAAiF;IACjF,SAAS,cAAc;IACvB,mFAAmF;IACnF,eAAe,oBAAoB;IACnC,uFAAuF;IACvF,eAAe,oBAAoB;IACnC,+EAA+E;IAC/E,mBAAmB,wBAAwB;IAC3C,0FAA0F;IAC1F,uBAAuB,4BAA4B;IACnD,2FAA2F;IAC3F,sBAAsB,2BAA2B;CAClD;AAED,eAAO,MAAM,gCAAgC;;;;;;iBAO3C,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,eAAO,MAAM,2BAA2B,EAAE,sCAAsC,CAC9E,OAAO,+BAA+B,EACtC,OAAO,gCAAgC,CA8HvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a.controller.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"a2a.controller.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/a2a/controllers/a2a.controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAC5I,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAGvG,OAAO,EACL,iBAAiB,EAKlB,MAAM,kEAAkE,CAAC;AAC1E,OAAO,EAA6B,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACzI,OAAO,EAAE,iCAAiC,EAAE,MAAM,oFAAoF,CAAC;AAKvI,OAAO,EAAE,6CAA6C,EAAE,MAAM,oFAAoF,CAAC;AAyEnJ,qBACa,2BAA4B,SAAQ,gCAAgC;IAKtC,OAAO,CAAC,QAAQ,CAAC,UAAU;IACN,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAMzD,OAAO,CAAC,QAAQ,CAAC,cAAc;IACnB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAXxD,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EACxC,YAAY,EAAE,mBAAmB,EACzB,UAAU,EAAE,iBAAiB,EACR,uBAAuB,EAAE,6CAA6C,EAMvF,cAAc,EAAE,qBAAqB,EACzB,mBAAmB,EAAE,iCAAiC;IAKhI;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,gBAAgB;IA6K9B;;;;;;;OAOG;YACW,qBAAqB;IAsEnC,SAAS,CAAC,WAAW,IAAI,IAAI;IA+B7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;YACW,eAAe;IAe7B;;;;OAIG;YACW,WAAW;IAuUzB;;;;;OAKG;YACW,YAAY;IA+H1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH;;;;;;;;;;;;;;;;;;;OAmBG;IACH;;;;;;;;;;;;OAYG;YACW,eAAe;YA+Df,kCAAkC;YAuIlC,iBAAiB;IA2D/B,sFAAsF;IACtF,OAAO,CAAC,oBAAoB;IAW5B,kFAAkF;IAClF,OAAO,CAAC,WAAW;IAOnB,6EAA6E;IAC7E,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,YAAY;IAapB;;;;OAIG;IACH;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,eAAe;CASxB"}
|