@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":"mock-billing-provider.js","sourceRoot":"","sources":["../../../../../src/billing/testing/mock-billing-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MockBillingProvider\n *\n * In-memory implementation of StandardBilling_Interface for unit and integration testing.\n * Records all method calls for assertion, manages fake customers/subscriptions/products,\n * and can simulate webhook events.\n *\n * Usage:\n * ```typescript\n * const mock = new MockBillingProvider();\n * // Use as a drop-in replacement for the real billing provider\n * container.rebind(BILLING_SERVICE_TYPES.BillingProvider).toConstantValue(mock);\n *\n * // After running your code:\n * expect(mock.getCallLog()).toContainEqual(expect.objectContaining({ method: 'createCustomer' }));\n * expect(mock.customers.size).toBe(1);\n *\n * // Simulate a webhook from the provider:\n * const event = mock.simulateWebhook(StandardBilling_EventType.SUBSCRIPTION_UPDATED, {\n * providerSubscriptionId: 'sub_123',\n * status: 'active',\n * });\n * ```\n *\n * @see billing-and-features-system.md §Testing Strategy (Mock billing provider)\n */\n\nimport {\n type StandardBilling_Interface,\n type StandardBilling_CreateCustomerRequest,\n type StandardBilling_CreateCustomerResponse,\n type StandardBilling_UpdateCustomerRequest,\n type StandardBilling_CustomerAddress,\n type StandardBilling_PaymentMethodSummary,\n type StandardBilling_SyncProductRequest,\n type StandardBilling_SyncProductResponse,\n type StandardBilling_SyncPriceRequest,\n type StandardBilling_SyncPriceResponse,\n type StandardBilling_CreateSubscriptionRequest,\n type StandardBilling_CreateSubscriptionResponse,\n type StandardBilling_UpdateSubscriptionRequest,\n type StandardBilling_CancelSubscriptionOptions,\n type StandardBilling_SubscriptionData,\n type StandardBilling_InvoicePreview,\n type StandardBilling_InvoiceData,\n type StandardBilling_CreateCheckoutSessionRequest,\n type StandardBilling_CreateCheckoutSessionResponse,\n type StandardBilling_CreateCustomerPortalSessionResponse,\n type StandardBilling_ReportUsageRequest,\n type StandardBilling_WebhookEvent,\n type StandardBilling_CreateCouponRequest,\n type StandardBilling_CreateCouponResponse,\n type StandardBilling_CreatePromotionCodeResponse,\n StandardBilling_EventType,\n SubscriptionStatus,\n InvoiceStatus,\n} from '@wildo-ai/external-connectors-models';\n\n// ════════════════════════════════════════════════════════════════\n// Internal store types\n// ════════════════════════════════════════════════════════════════\n\ninterface MockCustomer {\n providerCustomerId: string;\n name: string;\n email: string;\n metadata?: Record<string, string>;\n /**\n * Held as `null` once cleared rather than deleted, so a test can distinguish \"erasure blanked\n * this\" from \"was never set\" — the two are the same shape if a clear just removes the key, and\n * only the first proves the erasure actually ran.\n */\n phone?: string | null;\n address?: StandardBilling_CustomerAddress | null;\n createdAt: Date;\n}\n\ninterface MockPaymentMethod {\n providerPaymentMethodId: string;\n /** `null` once detached — detachment unlinks from the customer, it does not destroy the record. */\n providerCustomerId: string | null;\n type: string;\n last4?: string;\n}\n\ninterface MockProduct {\n providerProductId: string;\n productKey: string;\n name: string;\n description?: string;\n metadata?: Record<string, string>;\n}\n\ninterface MockPrice {\n providerPriceId: string;\n providerProductId: string;\n amount: number;\n currency: string;\n interval?: string;\n metadata?: Record<string, string>;\n}\n\ninterface MockDiscount {\n providerCouponId: string;\n percentOff?: number;\n amountOff?: number;\n currency?: string;\n duration: string;\n durationInMonths?: number;\n end?: Date;\n}\n\ninterface MockSubscription {\n providerSubscriptionId: string;\n providerCustomerId: string;\n status: SubscriptionStatus;\n currentPeriodStart: Date;\n currentPeriodEnd: Date;\n cancelAtPeriodEnd: boolean;\n trialEnd?: Date;\n discount?: MockDiscount;\n items: Array<{\n providerSubscriptionItemId: string;\n providerProductId: string;\n providerPriceId: string;\n quantity: number;\n }>;\n metadata?: Record<string, string>;\n}\n\n/**\n * An invoice the provider holds. Seeded by {@link MockBillingProvider.seedInvoice} rather than\n * produced by any call on the interface, because that is exactly how a real one arises: the\n * provider raises invoices on its own schedule and Wildo only ever learns about them.\n */\ninterface MockInvoice {\n providerInvoiceId: string;\n providerCustomerId: string;\n status: InvoiceStatus;\n total: number;\n currency: string;\n hostedInvoiceUrl?: string;\n invoicePdfUrl?: string;\n createdAt: Date;\n}\n\ninterface MockCoupon {\n providerCouponId: string;\n amountOff?: number;\n percentOff?: number;\n currency?: string;\n duration: string;\n durationInMonths?: number;\n}\n\ninterface MockPromotionCode {\n providerPromotionId: string;\n providerCouponId: string;\n code: string;\n}\n\n/** A recorded method call for assertions */\nexport interface MockBillingCallLogEntry {\n method: string;\n args: unknown[];\n timestamp: Date;\n result: unknown;\n}\n\n// ════════════════════════════════════════════════════════════════\n// MockBillingProvider\n// ════════════════════════════════════════════════════════════════\n\nexport class MockBillingProvider implements StandardBilling_Interface {\n // ── Interface-required readonly ──\n readonly webhookSignatureHeaderName = 'mock-billing-signature';\n\n // ── In-memory stores ──\n readonly customers = new Map<string, MockCustomer>();\n readonly paymentMethods = new Map<string, MockPaymentMethod>();\n readonly products = new Map<string, MockProduct>();\n readonly prices = new Map<string, MockPrice>();\n readonly subscriptions = new Map<string, MockSubscription>();\n readonly coupons = new Map<string, MockCoupon>();\n readonly promotionCodes = new Map<string, MockPromotionCode>();\n readonly invoices = new Map<string, MockInvoice>();\n readonly usageRecords: Array<StandardBilling_ReportUsageRequest & { recordedAt: Date }> = [];\n\n // ── Call tracking ──\n private callLog: MockBillingCallLogEntry[] = [];\n private idCounter = 0;\n\n // ── Webhook simulation ──\n private webhookEvents: StandardBilling_WebhookEvent[] = [];\n\n // ══════════════════════════════════════════════════════════════\n // Assertion Utilities\n // ══════════════════════════════════════════════════════════════\n\n /** Get all recorded method calls (for assertions) */\n getCallLog(): MockBillingCallLogEntry[] {\n return [...this.callLog];\n }\n\n /** Get calls filtered by method name */\n getCallsFor(method: string): MockBillingCallLogEntry[] {\n return this.callLog.filter(c => c.method === method);\n }\n\n /** Get the total number of calls made */\n getCallCount(method?: string): number {\n return method ? this.getCallsFor(method).length : this.callLog.length;\n }\n\n /** Clear all recorded calls */\n clearCallLog(): void {\n this.callLog = [];\n }\n\n /** Reset all in-memory state (customers, subscriptions, products, etc.) */\n reset(): void {\n this.customers.clear();\n this.paymentMethods.clear();\n this.products.clear();\n this.prices.clear();\n this.subscriptions.clear();\n this.coupons.clear();\n this.promotionCodes.clear();\n this.invoices.clear();\n this.usageRecords.length = 0;\n this.callLog = [];\n this.webhookEvents = [];\n this.idCounter = 0;\n }\n\n // ══════════════════════════════════════════════════════════════\n // Webhook Simulation\n // ══════════════════════════════════════════════════════════════\n\n /**\n * Simulate a webhook event from the billing provider.\n * Returns the generated event (can be passed to webhook handler for testing).\n */\n simulateWebhook(\n type: StandardBilling_EventType,\n data: Record<string, unknown>,\n ): StandardBilling_WebhookEvent {\n const event: StandardBilling_WebhookEvent = {\n type,\n providerEventId: this.nextId('evt'),\n data,\n createdAt: new Date(),\n };\n this.webhookEvents.push(event);\n return event;\n }\n\n /** Get all simulated webhook events */\n getSimulatedWebhooks(): StandardBilling_WebhookEvent[] {\n return [...this.webhookEvents];\n }\n\n /**\n * Put an invoice on the provider WITHOUT emitting the webhook that would normally announce it.\n *\n * That silence is the whole point: it reproduces the one condition the reconciliation sweep\n * exists for — an invoice that exists at the provider and nowhere locally, because its delivery\n * was lost. Seeding it alongside `simulateWebhook` would test the path that already works.\n */\n seedInvoice(invoice: Omit<MockInvoice, 'createdAt'> & { createdAt?: Date }): MockInvoice {\n const stored: MockInvoice = { ...invoice, createdAt: invoice.createdAt ?? new Date() };\n this.invoices.set(stored.providerInvoiceId, stored);\n return stored;\n }\n\n // ══════════════════════════════════════════════════════════════\n // StandardBilling_Interface Implementation\n // ══════════════════════════════════════════════════════════════\n\n // ── Customer ──────────────────────────────────────────────────\n\n async createCustomer(request: StandardBilling_CreateCustomerRequest): Promise<StandardBilling_CreateCustomerResponse> {\n const providerCustomerId = this.nextId('cus');\n const customer: MockCustomer = {\n providerCustomerId,\n name: request.name,\n email: request.email,\n metadata: request.metadata,\n createdAt: new Date(),\n };\n this.customers.set(providerCustomerId, customer);\n const result = { providerCustomerId };\n this.log('createCustomer', [request], result);\n return result;\n }\n\n async updateCustomer(providerCustomerId: string, request: StandardBilling_UpdateCustomerRequest): Promise<void> {\n const customer = this.customers.get(providerCustomerId);\n if (!customer) throw new Error(`MockBillingProvider: Customer ${providerCustomerId} not found`);\n if (request.name !== undefined) customer.name = request.name;\n if (request.email !== undefined) customer.email = request.email;\n if (request.metadata !== undefined) customer.metadata = { ...customer.metadata, ...request.metadata };\n // Mirror the interface's undefined-vs-null contract exactly, including the partial-address case:\n // a `null` address blanks the whole thing, while an object merges field-by-field so a caller\n // clearing only `line1` does not silently wipe `country`.\n if (request.phone !== undefined) customer.phone = request.phone;\n if (request.address !== undefined) {\n customer.address = request.address === null\n ? null\n : { ...(customer.address ?? {}), ...request.address };\n }\n this.log('updateCustomer', [providerCustomerId, request], undefined);\n }\n\n async deleteCustomer(providerCustomerId: string): Promise<void> {\n this.customers.delete(providerCustomerId);\n this.log('deleteCustomer', [providerCustomerId], undefined);\n }\n\n async listPaymentMethods(providerCustomerId: string): Promise<StandardBilling_PaymentMethodSummary[]> {\n const attached = Array.from(this.paymentMethods.values())\n .filter((paymentMethod) => paymentMethod.providerCustomerId === providerCustomerId)\n .map((paymentMethod) => ({\n providerPaymentMethodId: paymentMethod.providerPaymentMethodId,\n type: paymentMethod.type,\n ...(paymentMethod.last4 ? { last4: paymentMethod.last4 } : {}),\n }));\n this.log('listPaymentMethods', [providerCustomerId], attached);\n return attached;\n }\n\n async detachPaymentMethod(providerPaymentMethodId: string): Promise<void> {\n const paymentMethod = this.paymentMethods.get(providerPaymentMethodId);\n if (!paymentMethod) {\n throw new Error(`MockBillingProvider: PaymentMethod ${providerPaymentMethodId} not found`);\n }\n paymentMethod.providerCustomerId = null;\n this.log('detachPaymentMethod', [providerPaymentMethodId], undefined);\n }\n\n /**\n * Test seam: attach an instrument to a customer. There is no interface method that creates a\n * payment method (Wildo never handles instrument data — the provider-hosted portal does), so a\n * test that needs one to exist has to place it directly.\n */\n public seedPaymentMethod(\n providerCustomerId: string,\n paymentMethod?: { type?: string; last4?: string },\n ): string {\n const providerPaymentMethodId = this.nextId('pm');\n this.paymentMethods.set(providerPaymentMethodId, {\n providerPaymentMethodId,\n providerCustomerId,\n type: paymentMethod?.type ?? 'card',\n ...(paymentMethod?.last4 ? { last4: paymentMethod.last4 } : {}),\n });\n return providerPaymentMethodId;\n }\n\n // ── Product/Price sync ────────────────────────────────────────\n\n async syncProduct(request: StandardBilling_SyncProductRequest): Promise<StandardBilling_SyncProductResponse> {\n const providerProductId = request.providerProductId ?? this.nextId('prod');\n const product: MockProduct = {\n providerProductId,\n productKey: request.productKey,\n name: request.name,\n description: request.description,\n metadata: request.metadata,\n };\n this.products.set(providerProductId, product);\n const result = { providerProductId };\n this.log('syncProduct', [request], result);\n return result;\n }\n\n async syncPrice(request: StandardBilling_SyncPriceRequest): Promise<StandardBilling_SyncPriceResponse> {\n const providerPriceId = request.providerPriceId ?? this.nextId('price');\n const price: MockPrice = {\n providerPriceId,\n providerProductId: request.providerProductId,\n amount: request.amount,\n currency: request.currency,\n interval: request.interval,\n metadata: request.metadata,\n };\n this.prices.set(providerPriceId, price);\n const result = { providerPriceId };\n this.log('syncPrice', [request], result);\n return result;\n }\n\n // ── Subscription lifecycle ────────────────────────────────────\n\n async createSubscription(request: StandardBilling_CreateSubscriptionRequest): Promise<StandardBilling_CreateSubscriptionResponse> {\n const providerSubscriptionId = this.nextId('sub');\n const now = new Date();\n const periodEnd = new Date(now);\n periodEnd.setMonth(periodEnd.getMonth() + 1);\n\n const items = request.items.map((item, idx) => {\n // Resolve product from price\n const price = this.prices.get(item.providerPriceId);\n return {\n providerSubscriptionItemId: this.nextId('si'),\n providerProductId: price?.providerProductId ?? `unknown_product_${idx}`,\n providerPriceId: item.providerPriceId,\n quantity: item.quantity ?? 1,\n };\n });\n\n const trialEnd = request.trialPeriodDays\n ? new Date(now.getTime() + request.trialPeriodDays * 24 * 60 * 60 * 1000)\n : undefined;\n\n // Derive discount from promotion code if provided\n let discount: MockDiscount | undefined;\n if (request.providerPromotionCodeId) {\n for (const promoCode of this.promotionCodes.values()) {\n if (promoCode.providerPromotionId === request.providerPromotionCodeId) {\n const coupon = this.coupons.get(promoCode.providerCouponId);\n if (coupon) {\n discount = {\n providerCouponId: coupon.providerCouponId,\n percentOff: coupon.percentOff,\n amountOff: coupon.amountOff,\n currency: coupon.currency,\n duration: coupon.duration,\n durationInMonths: coupon.durationInMonths,\n };\n }\n break;\n }\n }\n }\n\n const subscription: MockSubscription = {\n providerSubscriptionId,\n providerCustomerId: request.providerCustomerId,\n status: trialEnd ? SubscriptionStatus.TRIALING : SubscriptionStatus.ACTIVE,\n currentPeriodStart: now,\n currentPeriodEnd: periodEnd,\n cancelAtPeriodEnd: false,\n trialEnd,\n discount,\n items,\n metadata: request.metadata,\n };\n this.subscriptions.set(providerSubscriptionId, subscription);\n\n const result: StandardBilling_CreateSubscriptionResponse = {\n providerSubscriptionId,\n status: subscription.status,\n };\n this.log('createSubscription', [request], result);\n return result;\n }\n\n async updateSubscription(providerSubscriptionId: string, request: StandardBilling_UpdateSubscriptionRequest): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n if (request.items) {\n sub.items = request.items.map((item, idx) => {\n const price = this.prices.get(item.providerPriceId);\n return {\n providerSubscriptionItemId: this.nextId('si'),\n providerProductId: price?.providerProductId ?? `unknown_product_${idx}`,\n providerPriceId: item.providerPriceId,\n quantity: item.quantity ?? 1,\n };\n });\n }\n if (request.metadata) {\n sub.metadata = { ...sub.metadata, ...request.metadata };\n }\n this.log('updateSubscription', [providerSubscriptionId, request], undefined);\n }\n\n async cancelSubscription(providerSubscriptionId: string, options?: StandardBilling_CancelSubscriptionOptions): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n if (options?.atPeriodEnd) {\n sub.cancelAtPeriodEnd = true;\n } else {\n sub.status = SubscriptionStatus.CANCELLED;\n }\n this.log('cancelSubscription', [providerSubscriptionId, options], undefined);\n }\n\n async pauseSubscription(providerSubscriptionId: string): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n sub.status = SubscriptionStatus.PAUSED;\n this.log('pauseSubscription', [providerSubscriptionId], undefined);\n }\n\n async resumeSubscription(providerSubscriptionId: string): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n sub.status = SubscriptionStatus.ACTIVE;\n this.log('resumeSubscription', [providerSubscriptionId], undefined);\n }\n\n // ── Read/sync ─────────────────────────────────────────────────\n\n async retrieveSubscription(providerSubscriptionId: string): Promise<StandardBilling_SubscriptionData> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n const result: StandardBilling_SubscriptionData = {\n providerSubscriptionId: sub.providerSubscriptionId,\n status: sub.status,\n currentPeriodStart: sub.currentPeriodStart,\n currentPeriodEnd: sub.currentPeriodEnd,\n cancelAtPeriodEnd: sub.cancelAtPeriodEnd,\n trialEnd: sub.trialEnd,\n items: sub.items,\n discount: sub.discount,\n };\n this.log('retrieveSubscription', [providerSubscriptionId], result);\n return result;\n }\n\n async listInvoices(providerCustomerId: string, options?: { limit?: number }): Promise<StandardBilling_InvoiceData[]> {\n const result = [...this.invoices.values()]\n .filter(invoice => invoice.providerCustomerId === providerCustomerId)\n // Newest first, matching every real provider's default ordering — a sweep that asks for a\n // bounded page and gets the OLDEST invoices would never see the recent one it is looking for.\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())\n .slice(0, options?.limit ?? 20)\n .map(invoice => ({ ...invoice }));\n this.log('listInvoices', [providerCustomerId, options], result);\n return result;\n }\n\n async retrieveUpcomingInvoice(providerSubscriptionId: string, newPriceId?: string): Promise<StandardBilling_InvoicePreview> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n // If a new price is provided, simulate what the invoice would look like after the change.\n // Otherwise, preview the next invoice based on current items.\n let previewItems = sub.items;\n if (newPriceId && sub.items.length > 0) {\n const newPrice = this.prices.get(newPriceId);\n previewItems = [{\n ...sub.items[0],\n providerPriceId: newPriceId,\n providerProductId: newPrice?.providerProductId ?? sub.items[0].providerProductId,\n }];\n }\n\n const lineItems = previewItems.map(item => {\n const price = this.prices.get(item.providerPriceId);\n return {\n description: `${price?.providerProductId ?? 'Product'} × ${item.quantity}`,\n amount: (price?.amount ?? 0) * item.quantity,\n quantity: item.quantity,\n providerPriceId: item.providerPriceId,\n };\n });\n\n const result: StandardBilling_InvoicePreview = {\n amount: lineItems.reduce((sum, li) => sum + li.amount, 0),\n currency: this.prices.get(previewItems[0]?.providerPriceId)?.currency ?? 'usd',\n lineItems,\n periodStart: sub.currentPeriodEnd,\n periodEnd: new Date(sub.currentPeriodEnd.getTime() + 30 * 24 * 60 * 60 * 1000),\n };\n this.log('retrieveUpcomingInvoice', [providerSubscriptionId, newPriceId], result);\n return result;\n }\n\n // ── Provider-hosted UI ────────────────────────────────────────\n\n async createCheckoutSession(request: StandardBilling_CreateCheckoutSessionRequest): Promise<StandardBilling_CreateCheckoutSessionResponse> {\n const sessionId = this.nextId('cs');\n const result: StandardBilling_CreateCheckoutSessionResponse = {\n url: `https://mock-checkout.test/session/${sessionId}`,\n sessionId,\n };\n this.log('createCheckoutSession', [request], result);\n return result;\n }\n\n async createCustomerPortalSession(providerCustomerId: string, returnUrl: string): Promise<StandardBilling_CreateCustomerPortalSessionResponse> {\n const result: StandardBilling_CreateCustomerPortalSessionResponse = {\n url: `https://mock-portal.test/customer/${providerCustomerId}?return=${encodeURIComponent(returnUrl)}`,\n };\n this.log('createCustomerPortalSession', [providerCustomerId, returnUrl], result);\n return result;\n }\n\n // ── Usage reporting (Billing Meter Events) ─────────────────────\n\n async reportUsage(request: StandardBilling_ReportUsageRequest): Promise<void> {\n this.usageRecords.push({ ...request, recordedAt: new Date() });\n this.log('reportUsage', [request], undefined);\n }\n\n // ── Webhooks ──────────────────────────────────────────────────\n\n verifyWebhookSignature(_payload: string | Uint8Array, _signature: string, _secret: string): boolean {\n // Mock always verifies successfully\n this.log('verifyWebhookSignature', [_payload, _signature, _secret], true);\n return true;\n }\n\n parseWebhookEvent(payload: string | Uint8Array): StandardBilling_WebhookEvent {\n const raw = typeof payload === 'string' ? payload : new TextDecoder().decode(payload);\n const parsed = JSON.parse(raw) as StandardBilling_WebhookEvent;\n // Restore Date objects from JSON strings\n parsed.createdAt = new Date(parsed.createdAt);\n this.log('parseWebhookEvent', [payload], parsed);\n return parsed;\n }\n\n // ── Promotions ────────────────────────────────────────────────\n\n async createCoupon(request: StandardBilling_CreateCouponRequest): Promise<StandardBilling_CreateCouponResponse> {\n const providerCouponId = this.nextId('cpn');\n this.coupons.set(providerCouponId, {\n providerCouponId,\n amountOff: request.amountOff,\n percentOff: request.percentOff,\n currency: request.currency,\n duration: request.duration,\n durationInMonths: request.durationInMonths,\n });\n const result = { providerCouponId };\n this.log('createCoupon', [request], result);\n return result;\n }\n\n async createPromotionCode(providerCouponId: string, code: string): Promise<StandardBilling_CreatePromotionCodeResponse> {\n const providerPromotionId = this.nextId('promo');\n this.promotionCodes.set(code, { providerPromotionId, providerCouponId, code });\n const result = { providerPromotionId };\n this.log('createPromotionCode', [providerCouponId, code], result);\n return result;\n }\n\n /** Look up a promotion code by its user-facing code string */\n getPromotionCodeByCode(code: string): MockPromotionCode | undefined {\n return this.promotionCodes.get(code);\n }\n\n // ══════════════════════════════════════════════════════════════\n // Internal Helpers\n // ══════════════════════════════════════════════════════════════\n\n private nextId(prefix: string): string {\n this.idCounter++;\n return `mock_${prefix}_${this.idCounter}`;\n }\n\n private log(method: string, args: unknown[], result: unknown): void {\n this.callLog.push({ method, args, timestamp: new Date(), result });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mock-billing-provider.js","sourceRoot":"","sources":["../../../../src/billing/testing/mock-billing-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MockBillingProvider\n *\n * In-memory implementation of StandardBilling_Interface for unit and integration testing.\n * Records all method calls for assertion, manages fake customers/subscriptions/products,\n * and can simulate webhook events.\n *\n * Usage:\n * ```typescript\n * const mock = new MockBillingProvider();\n * // Use as a drop-in replacement for the real billing provider\n * container.rebind(BILLING_SERVICE_TYPES.BillingProvider).toConstantValue(mock);\n *\n * // After running your code:\n * expect(mock.getCallLog()).toContainEqual(expect.objectContaining({ method: 'createCustomer' }));\n * expect(mock.customers.size).toBe(1);\n *\n * // Simulate a webhook from the provider:\n * const event = mock.simulateWebhook(StandardBilling_EventType.SUBSCRIPTION_UPDATED, {\n * providerSubscriptionId: 'sub_123',\n * status: 'active',\n * });\n * ```\n *\n * @see billing-and-features-system.md §Testing Strategy (Mock billing provider)\n */\n\nimport {\n type StandardBilling_Interface,\n type StandardBilling_CreateCustomerRequest,\n type StandardBilling_CreateCustomerResponse,\n type StandardBilling_UpdateCustomerRequest,\n type StandardBilling_CustomerAddress,\n type StandardBilling_PaymentMethodSummary,\n type StandardBilling_SyncProductRequest,\n type StandardBilling_SyncProductResponse,\n type StandardBilling_SyncPriceRequest,\n type StandardBilling_SyncPriceResponse,\n type StandardBilling_CreateSubscriptionRequest,\n type StandardBilling_CreateSubscriptionResponse,\n type StandardBilling_UpdateSubscriptionRequest,\n type StandardBilling_CancelSubscriptionOptions,\n type StandardBilling_SubscriptionData,\n type StandardBilling_InvoicePreview,\n type StandardBilling_InvoiceData,\n type StandardBilling_CreateCheckoutSessionRequest,\n type StandardBilling_CreateCheckoutSessionResponse,\n type StandardBilling_CreateCustomerPortalSessionResponse,\n type StandardBilling_ReportUsageRequest,\n type StandardBilling_WebhookEvent,\n type StandardBilling_CreateCouponRequest,\n type StandardBilling_CreateCouponResponse,\n type StandardBilling_CreatePromotionCodeResponse,\n StandardBilling_EventType,\n SubscriptionStatus,\n InvoiceStatus,\n} from '@wildo-ai/external-connectors-models';\n\n// ════════════════════════════════════════════════════════════════\n// Internal store types\n// ════════════════════════════════════════════════════════════════\n\ninterface MockCustomer {\n providerCustomerId: string;\n name: string;\n email: string;\n metadata?: Record<string, string>;\n /**\n * Held as `null` once cleared rather than deleted, so a test can distinguish \"erasure blanked\n * this\" from \"was never set\" — the two are the same shape if a clear just removes the key, and\n * only the first proves the erasure actually ran.\n */\n phone?: string | null;\n address?: StandardBilling_CustomerAddress | null;\n createdAt: Date;\n}\n\ninterface MockPaymentMethod {\n providerPaymentMethodId: string;\n /** `null` once detached — detachment unlinks from the customer, it does not destroy the record. */\n providerCustomerId: string | null;\n type: string;\n last4?: string;\n}\n\ninterface MockProduct {\n providerProductId: string;\n productKey: string;\n name: string;\n description?: string;\n metadata?: Record<string, string>;\n}\n\ninterface MockPrice {\n providerPriceId: string;\n providerProductId: string;\n amount: number;\n currency: string;\n interval?: string;\n metadata?: Record<string, string>;\n}\n\ninterface MockDiscount {\n providerCouponId: string;\n percentOff?: number;\n amountOff?: number;\n currency?: string;\n duration: string;\n durationInMonths?: number;\n end?: Date;\n}\n\ninterface MockSubscription {\n providerSubscriptionId: string;\n providerCustomerId: string;\n status: SubscriptionStatus;\n currentPeriodStart: Date;\n currentPeriodEnd: Date;\n cancelAtPeriodEnd: boolean;\n trialEnd?: Date;\n discount?: MockDiscount;\n items: Array<{\n providerSubscriptionItemId: string;\n providerProductId: string;\n providerPriceId: string;\n quantity: number;\n }>;\n metadata?: Record<string, string>;\n}\n\n/**\n * An invoice the provider holds. Seeded by {@link MockBillingProvider.seedInvoice} rather than\n * produced by any call on the interface, because that is exactly how a real one arises: the\n * provider raises invoices on its own schedule and Wildo only ever learns about them.\n */\ninterface MockInvoice {\n providerInvoiceId: string;\n providerCustomerId: string;\n status: InvoiceStatus;\n total: number;\n currency: string;\n hostedInvoiceUrl?: string;\n invoicePdfUrl?: string;\n createdAt: Date;\n}\n\ninterface MockCoupon {\n providerCouponId: string;\n amountOff?: number;\n percentOff?: number;\n currency?: string;\n duration: string;\n durationInMonths?: number;\n}\n\ninterface MockPromotionCode {\n providerPromotionId: string;\n providerCouponId: string;\n code: string;\n}\n\n/** A recorded method call for assertions */\nexport interface MockBillingCallLogEntry {\n method: string;\n args: unknown[];\n timestamp: Date;\n result: unknown;\n}\n\n// ════════════════════════════════════════════════════════════════\n// MockBillingProvider\n// ════════════════════════════════════════════════════════════════\n\nexport class MockBillingProvider implements StandardBilling_Interface {\n // ── Interface-required readonly ──\n readonly webhookSignatureHeaderName = 'mock-billing-signature';\n\n // ── In-memory stores ──\n readonly customers = new Map<string, MockCustomer>();\n readonly paymentMethods = new Map<string, MockPaymentMethod>();\n readonly products = new Map<string, MockProduct>();\n readonly prices = new Map<string, MockPrice>();\n readonly subscriptions = new Map<string, MockSubscription>();\n readonly coupons = new Map<string, MockCoupon>();\n readonly promotionCodes = new Map<string, MockPromotionCode>();\n readonly invoices = new Map<string, MockInvoice>();\n readonly usageRecords: Array<StandardBilling_ReportUsageRequest & { recordedAt: Date }> = [];\n\n // ── Call tracking ──\n private callLog: MockBillingCallLogEntry[] = [];\n private idCounter = 0;\n\n // ── Webhook simulation ──\n private webhookEvents: StandardBilling_WebhookEvent[] = [];\n\n // ══════════════════════════════════════════════════════════════\n // Assertion Utilities\n // ══════════════════════════════════════════════════════════════\n\n /** Get all recorded method calls (for assertions) */\n getCallLog(): MockBillingCallLogEntry[] {\n return [...this.callLog];\n }\n\n /** Get calls filtered by method name */\n getCallsFor(method: string): MockBillingCallLogEntry[] {\n return this.callLog.filter(c => c.method === method);\n }\n\n /** Get the total number of calls made */\n getCallCount(method?: string): number {\n return method ? this.getCallsFor(method).length : this.callLog.length;\n }\n\n /** Clear all recorded calls */\n clearCallLog(): void {\n this.callLog = [];\n }\n\n /** Reset all in-memory state (customers, subscriptions, products, etc.) */\n reset(): void {\n this.customers.clear();\n this.paymentMethods.clear();\n this.products.clear();\n this.prices.clear();\n this.subscriptions.clear();\n this.coupons.clear();\n this.promotionCodes.clear();\n this.invoices.clear();\n this.usageRecords.length = 0;\n this.callLog = [];\n this.webhookEvents = [];\n this.idCounter = 0;\n }\n\n // ══════════════════════════════════════════════════════════════\n // Webhook Simulation\n // ══════════════════════════════════════════════════════════════\n\n /**\n * Simulate a webhook event from the billing provider.\n * Returns the generated event (can be passed to webhook handler for testing).\n */\n simulateWebhook(\n type: StandardBilling_EventType,\n data: Record<string, unknown>,\n ): StandardBilling_WebhookEvent {\n const event: StandardBilling_WebhookEvent = {\n type,\n providerEventId: this.nextId('evt'),\n data,\n createdAt: new Date(),\n };\n this.webhookEvents.push(event);\n return event;\n }\n\n /** Get all simulated webhook events */\n getSimulatedWebhooks(): StandardBilling_WebhookEvent[] {\n return [...this.webhookEvents];\n }\n\n /**\n * Put an invoice on the provider WITHOUT emitting the webhook that would normally announce it.\n *\n * That silence is the whole point: it reproduces the one condition the reconciliation sweep\n * exists for — an invoice that exists at the provider and nowhere locally, because its delivery\n * was lost. Seeding it alongside `simulateWebhook` would test the path that already works.\n */\n seedInvoice(invoice: Omit<MockInvoice, 'createdAt'> & { createdAt?: Date }): MockInvoice {\n const stored: MockInvoice = { ...invoice, createdAt: invoice.createdAt ?? new Date() };\n this.invoices.set(stored.providerInvoiceId, stored);\n return stored;\n }\n\n // ══════════════════════════════════════════════════════════════\n // StandardBilling_Interface Implementation\n // ══════════════════════════════════════════════════════════════\n\n // ── Customer ──────────────────────────────────────────────────\n\n async createCustomer(request: StandardBilling_CreateCustomerRequest): Promise<StandardBilling_CreateCustomerResponse> {\n const providerCustomerId = this.nextId('cus');\n const customer: MockCustomer = {\n providerCustomerId,\n name: request.name,\n email: request.email,\n metadata: request.metadata,\n createdAt: new Date(),\n };\n this.customers.set(providerCustomerId, customer);\n const result = { providerCustomerId };\n this.log('createCustomer', [request], result);\n return result;\n }\n\n async updateCustomer(providerCustomerId: string, request: StandardBilling_UpdateCustomerRequest): Promise<void> {\n const customer = this.customers.get(providerCustomerId);\n if (!customer) throw new Error(`MockBillingProvider: Customer ${providerCustomerId} not found`);\n if (request.name !== undefined) customer.name = request.name;\n if (request.email !== undefined) customer.email = request.email;\n if (request.metadata !== undefined) customer.metadata = { ...customer.metadata, ...request.metadata };\n // Mirror the interface's undefined-vs-null contract exactly, including the partial-address case:\n // a `null` address blanks the whole thing, while an object merges field-by-field so a caller\n // clearing only `line1` does not silently wipe `country`.\n if (request.phone !== undefined) customer.phone = request.phone;\n if (request.address !== undefined) {\n customer.address = request.address === null\n ? null\n : { ...(customer.address ?? {}), ...request.address };\n }\n this.log('updateCustomer', [providerCustomerId, request], undefined);\n }\n\n async deleteCustomer(providerCustomerId: string): Promise<void> {\n this.customers.delete(providerCustomerId);\n this.log('deleteCustomer', [providerCustomerId], undefined);\n }\n\n async listPaymentMethods(providerCustomerId: string): Promise<StandardBilling_PaymentMethodSummary[]> {\n const attached = Array.from(this.paymentMethods.values())\n .filter((paymentMethod) => paymentMethod.providerCustomerId === providerCustomerId)\n .map((paymentMethod) => ({\n providerPaymentMethodId: paymentMethod.providerPaymentMethodId,\n type: paymentMethod.type,\n ...(paymentMethod.last4 ? { last4: paymentMethod.last4 } : {}),\n }));\n this.log('listPaymentMethods', [providerCustomerId], attached);\n return attached;\n }\n\n async detachPaymentMethod(providerPaymentMethodId: string): Promise<void> {\n const paymentMethod = this.paymentMethods.get(providerPaymentMethodId);\n if (!paymentMethod) {\n throw new Error(`MockBillingProvider: PaymentMethod ${providerPaymentMethodId} not found`);\n }\n paymentMethod.providerCustomerId = null;\n this.log('detachPaymentMethod', [providerPaymentMethodId], undefined);\n }\n\n /**\n * Test seam: attach an instrument to a customer. There is no interface method that creates a\n * payment method (Wildo never handles instrument data — the provider-hosted portal does), so a\n * test that needs one to exist has to place it directly.\n */\n public seedPaymentMethod(\n providerCustomerId: string,\n paymentMethod?: { type?: string; last4?: string },\n ): string {\n const providerPaymentMethodId = this.nextId('pm');\n this.paymentMethods.set(providerPaymentMethodId, {\n providerPaymentMethodId,\n providerCustomerId,\n type: paymentMethod?.type ?? 'card',\n ...(paymentMethod?.last4 ? { last4: paymentMethod.last4 } : {}),\n });\n return providerPaymentMethodId;\n }\n\n // ── Product/Price sync ────────────────────────────────────────\n\n async syncProduct(request: StandardBilling_SyncProductRequest): Promise<StandardBilling_SyncProductResponse> {\n const providerProductId = request.providerProductId ?? this.nextId('prod');\n const product: MockProduct = {\n providerProductId,\n productKey: request.productKey,\n name: request.name,\n description: request.description,\n metadata: request.metadata,\n };\n this.products.set(providerProductId, product);\n const result = { providerProductId };\n this.log('syncProduct', [request], result);\n return result;\n }\n\n async syncPrice(request: StandardBilling_SyncPriceRequest): Promise<StandardBilling_SyncPriceResponse> {\n const providerPriceId = request.providerPriceId ?? this.nextId('price');\n const price: MockPrice = {\n providerPriceId,\n providerProductId: request.providerProductId,\n amount: request.amount,\n currency: request.currency,\n interval: request.interval,\n metadata: request.metadata,\n };\n this.prices.set(providerPriceId, price);\n const result = { providerPriceId };\n this.log('syncPrice', [request], result);\n return result;\n }\n\n // ── Subscription lifecycle ────────────────────────────────────\n\n async createSubscription(request: StandardBilling_CreateSubscriptionRequest): Promise<StandardBilling_CreateSubscriptionResponse> {\n const providerSubscriptionId = this.nextId('sub');\n const now = new Date();\n const periodEnd = new Date(now);\n periodEnd.setMonth(periodEnd.getMonth() + 1);\n\n const items = request.items.map((item, idx) => {\n // Resolve product from price\n const price = this.prices.get(item.providerPriceId);\n return {\n providerSubscriptionItemId: this.nextId('si'),\n providerProductId: price?.providerProductId ?? `unknown_product_${idx}`,\n providerPriceId: item.providerPriceId,\n quantity: item.quantity ?? 1,\n };\n });\n\n const trialEnd = request.trialPeriodDays\n ? new Date(now.getTime() + request.trialPeriodDays * 24 * 60 * 60 * 1000)\n : undefined;\n\n // Derive discount from promotion code if provided\n let discount: MockDiscount | undefined;\n if (request.providerPromotionCodeId) {\n for (const promoCode of this.promotionCodes.values()) {\n if (promoCode.providerPromotionId === request.providerPromotionCodeId) {\n const coupon = this.coupons.get(promoCode.providerCouponId);\n if (coupon) {\n discount = {\n providerCouponId: coupon.providerCouponId,\n percentOff: coupon.percentOff,\n amountOff: coupon.amountOff,\n currency: coupon.currency,\n duration: coupon.duration,\n durationInMonths: coupon.durationInMonths,\n };\n }\n break;\n }\n }\n }\n\n const subscription: MockSubscription = {\n providerSubscriptionId,\n providerCustomerId: request.providerCustomerId,\n status: trialEnd ? SubscriptionStatus.TRIALING : SubscriptionStatus.ACTIVE,\n currentPeriodStart: now,\n currentPeriodEnd: periodEnd,\n cancelAtPeriodEnd: false,\n trialEnd,\n discount,\n items,\n metadata: request.metadata,\n };\n this.subscriptions.set(providerSubscriptionId, subscription);\n\n const result: StandardBilling_CreateSubscriptionResponse = {\n providerSubscriptionId,\n status: subscription.status,\n };\n this.log('createSubscription', [request], result);\n return result;\n }\n\n async updateSubscription(providerSubscriptionId: string, request: StandardBilling_UpdateSubscriptionRequest): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n if (request.items) {\n sub.items = request.items.map((item, idx) => {\n const price = this.prices.get(item.providerPriceId);\n return {\n providerSubscriptionItemId: this.nextId('si'),\n providerProductId: price?.providerProductId ?? `unknown_product_${idx}`,\n providerPriceId: item.providerPriceId,\n quantity: item.quantity ?? 1,\n };\n });\n }\n if (request.metadata) {\n sub.metadata = { ...sub.metadata, ...request.metadata };\n }\n this.log('updateSubscription', [providerSubscriptionId, request], undefined);\n }\n\n async cancelSubscription(providerSubscriptionId: string, options?: StandardBilling_CancelSubscriptionOptions): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n if (options?.atPeriodEnd) {\n sub.cancelAtPeriodEnd = true;\n } else {\n sub.status = SubscriptionStatus.CANCELLED;\n }\n this.log('cancelSubscription', [providerSubscriptionId, options], undefined);\n }\n\n async pauseSubscription(providerSubscriptionId: string): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n sub.status = SubscriptionStatus.PAUSED;\n this.log('pauseSubscription', [providerSubscriptionId], undefined);\n }\n\n async resumeSubscription(providerSubscriptionId: string): Promise<void> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n sub.status = SubscriptionStatus.ACTIVE;\n this.log('resumeSubscription', [providerSubscriptionId], undefined);\n }\n\n // ── Read/sync ─────────────────────────────────────────────────\n\n async retrieveSubscription(providerSubscriptionId: string): Promise<StandardBilling_SubscriptionData> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n const result: StandardBilling_SubscriptionData = {\n providerSubscriptionId: sub.providerSubscriptionId,\n status: sub.status,\n currentPeriodStart: sub.currentPeriodStart,\n currentPeriodEnd: sub.currentPeriodEnd,\n cancelAtPeriodEnd: sub.cancelAtPeriodEnd,\n trialEnd: sub.trialEnd,\n items: sub.items,\n discount: sub.discount,\n };\n this.log('retrieveSubscription', [providerSubscriptionId], result);\n return result;\n }\n\n async listInvoices(providerCustomerId: string, options?: { limit?: number }): Promise<StandardBilling_InvoiceData[]> {\n const result = [...this.invoices.values()]\n .filter(invoice => invoice.providerCustomerId === providerCustomerId)\n // Newest first, matching every real provider's default ordering — a sweep that asks for a\n // bounded page and gets the OLDEST invoices would never see the recent one it is looking for.\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())\n .slice(0, options?.limit ?? 20)\n .map(invoice => ({ ...invoice }));\n this.log('listInvoices', [providerCustomerId, options], result);\n return result;\n }\n\n async retrieveUpcomingInvoice(providerSubscriptionId: string, newPriceId?: string): Promise<StandardBilling_InvoicePreview> {\n const sub = this.subscriptions.get(providerSubscriptionId);\n if (!sub) throw new Error(`MockBillingProvider: Subscription ${providerSubscriptionId} not found`);\n\n // If a new price is provided, simulate what the invoice would look like after the change.\n // Otherwise, preview the next invoice based on current items.\n let previewItems = sub.items;\n if (newPriceId && sub.items.length > 0) {\n const newPrice = this.prices.get(newPriceId);\n previewItems = [{\n ...sub.items[0],\n providerPriceId: newPriceId,\n providerProductId: newPrice?.providerProductId ?? sub.items[0].providerProductId,\n }];\n }\n\n const lineItems = previewItems.map(item => {\n const price = this.prices.get(item.providerPriceId);\n return {\n description: `${price?.providerProductId ?? 'Product'} × ${item.quantity}`,\n amount: (price?.amount ?? 0) * item.quantity,\n quantity: item.quantity,\n providerPriceId: item.providerPriceId,\n };\n });\n\n const result: StandardBilling_InvoicePreview = {\n amount: lineItems.reduce((sum, li) => sum + li.amount, 0),\n currency: this.prices.get(previewItems[0]?.providerPriceId)?.currency ?? 'usd',\n lineItems,\n periodStart: sub.currentPeriodEnd,\n periodEnd: new Date(sub.currentPeriodEnd.getTime() + 30 * 24 * 60 * 60 * 1000),\n };\n this.log('retrieveUpcomingInvoice', [providerSubscriptionId, newPriceId], result);\n return result;\n }\n\n // ── Provider-hosted UI ────────────────────────────────────────\n\n async createCheckoutSession(request: StandardBilling_CreateCheckoutSessionRequest): Promise<StandardBilling_CreateCheckoutSessionResponse> {\n const sessionId = this.nextId('cs');\n const result: StandardBilling_CreateCheckoutSessionResponse = {\n url: `https://mock-checkout.test/session/${sessionId}`,\n sessionId,\n };\n this.log('createCheckoutSession', [request], result);\n return result;\n }\n\n async createCustomerPortalSession(providerCustomerId: string, returnUrl: string): Promise<StandardBilling_CreateCustomerPortalSessionResponse> {\n const result: StandardBilling_CreateCustomerPortalSessionResponse = {\n url: `https://mock-portal.test/customer/${providerCustomerId}?return=${encodeURIComponent(returnUrl)}`,\n };\n this.log('createCustomerPortalSession', [providerCustomerId, returnUrl], result);\n return result;\n }\n\n // ── Usage reporting (Billing Meter Events) ─────────────────────\n\n async reportUsage(request: StandardBilling_ReportUsageRequest): Promise<void> {\n this.usageRecords.push({ ...request, recordedAt: new Date() });\n this.log('reportUsage', [request], undefined);\n }\n\n // ── Webhooks ──────────────────────────────────────────────────\n\n verifyWebhookSignature(_payload: string | Uint8Array, _signature: string, _secret: string): boolean {\n // Mock always verifies successfully\n this.log('verifyWebhookSignature', [_payload, _signature, _secret], true);\n return true;\n }\n\n parseWebhookEvent(payload: string | Uint8Array): StandardBilling_WebhookEvent {\n const raw = typeof payload === 'string' ? payload : new TextDecoder().decode(payload);\n const parsed = JSON.parse(raw) as StandardBilling_WebhookEvent;\n // Restore Date objects from JSON strings\n parsed.createdAt = new Date(parsed.createdAt);\n this.log('parseWebhookEvent', [payload], parsed);\n return parsed;\n }\n\n // ── Promotions ────────────────────────────────────────────────\n\n async createCoupon(request: StandardBilling_CreateCouponRequest): Promise<StandardBilling_CreateCouponResponse> {\n const providerCouponId = this.nextId('cpn');\n this.coupons.set(providerCouponId, {\n providerCouponId,\n amountOff: request.amountOff,\n percentOff: request.percentOff,\n currency: request.currency,\n duration: request.duration,\n durationInMonths: request.durationInMonths,\n });\n const result = { providerCouponId };\n this.log('createCoupon', [request], result);\n return result;\n }\n\n async createPromotionCode(providerCouponId: string, code: string): Promise<StandardBilling_CreatePromotionCodeResponse> {\n const providerPromotionId = this.nextId('promo');\n this.promotionCodes.set(code, { providerPromotionId, providerCouponId, code });\n const result = { providerPromotionId };\n this.log('createPromotionCode', [providerCouponId, code], result);\n return result;\n }\n\n /** Look up a promotion code by its user-facing code string */\n getPromotionCodeByCode(code: string): MockPromotionCode | undefined {\n return this.promotionCodes.get(code);\n }\n\n // ══════════════════════════════════════════════════════════════\n // Internal Helpers\n // ══════════════════════════════════════════════════════════════\n\n private nextId(prefix: string): string {\n this.idCounter++;\n return `mock_${prefix}_${this.idCounter}`;\n }\n\n private log(method: string, args: unknown[], result: unknown): void {\n this.callLog.push({ method, args, timestamp: new Date(), result });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.backend.controller.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"chart.backend.controller.d.ts","sourceRoot":"","sources":["../../../../src/charts/controllers/chart.backend.controller.ts"],"names":[],"mappings":"AAAA;;;;;oEAKoE;AAMpE,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAC5I,OAAO,EAAE,2BAA2B,EAAE,MAAM,mEAAmE,CAAC;AAChH,OAAO,EAAE,8BAA8B,EAAE,MAAM,qFAAqF,CAAC;AACrI,OAAO,EAAE,qCAAqC,EAAE,MAAM,+EAA+E,CAAC;AACtI,OAAO,EAAE,yBAAyB,EAAE,MAAM,mEAAmE,CAAC;AAC9G,OAAO,EAAE,qCAAqC,EAAE,MAAM,6FAA6F,CAAC;AACpJ,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAS3H,qBACa,6BAA8B,SAAQ,gCAAgC;IAK9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACrB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAChB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBARnD,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EACxC,YAAY,EAAE,mBAAmB,EACf,aAAa,EAAE,2BAA2B,EACvC,kBAAkB,EAAE,8BAA8B,EACpC,uBAAuB,EAAE,qCAAqC,EACjF,WAAW,EAAE,yBAAyB,EAC1B,uBAAuB,EAAE,qCAAqC,EACrE,iBAAiB,EAAE,+BAA+B;IAKzH,SAAS,CAAC,WAAW,IAAI,IAAI;IAK7B;;;;OAIG;YACW,eAAe;IAyC7B,OAAO,CAAC,wBAAwB;IAqChC;;;;;;;;OAQG;YACW,mCAAmC;IAwEjD,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,6BAA6B;CAiBtC"}
|
|
@@ -10,12 +10,14 @@
|
|
|
10
10
|
* ────────────────────────────────────────────────────────────── */
|
|
11
11
|
import type { LoggerService } from '../../monitoring/logger/services/logger.service';
|
|
12
12
|
import type { ErrorBuilderBackendService } from '../../errors/services/error-builder.backend.service';
|
|
13
|
+
import type { ResourcesRegistryBackendService } from '../../resources/services/resources-registry.backend.service';
|
|
13
14
|
import { type ChartDefinition } from '@wildo-ai/saas-models';
|
|
14
15
|
export declare class ChartRegistryBackendService {
|
|
15
16
|
private readonly logger;
|
|
16
17
|
private readonly errorBuilder;
|
|
18
|
+
private readonly resourcesRegistry;
|
|
17
19
|
private readonly charts;
|
|
18
|
-
constructor(logger: LoggerService, errorBuilder: ErrorBuilderBackendService);
|
|
20
|
+
constructor(logger: LoggerService, errorBuilder: ErrorBuilderBackendService, resourcesRegistry: ResourcesRegistryBackendService);
|
|
19
21
|
/**
|
|
20
22
|
* Register a chart definition at app startup.
|
|
21
23
|
* Re-parse the definition at the backend boundary so startup fails fast if an
|
|
@@ -24,6 +26,47 @@ export declare class ChartRegistryBackendService {
|
|
|
24
26
|
* validity before later controller/execution paths trust the shape.
|
|
25
27
|
*/
|
|
26
28
|
registerChart(definition: ChartDefinition): void;
|
|
29
|
+
/**
|
|
30
|
+
* Refuse startup for a chart whose aggregation query names a resource type this application
|
|
31
|
+
* does not have.
|
|
32
|
+
*
|
|
33
|
+
* ## What this does and does NOT cover
|
|
34
|
+
* This is NOT the frontend↔backend chart-registration join (`chartViews[].chartDefinition.ref`
|
|
35
|
+
* vs this registry). That comparison is IMPOSSIBLE in this process: the frontend authoring
|
|
36
|
+
* surface lives on `ResourceUIBehaviorConfig` in `.tsx` ui-behavior modules the backend cannot
|
|
37
|
+
* import, which is the whole reason `BackendDomainModule.chartDefinitions` exists as a second
|
|
38
|
+
* wiring and why the dev companion needs a dedicated introspection SUBPROCESS to materialize
|
|
39
|
+
* it. That join is guarded out-of-process — `computeChartRegistrationAlignment`, the companion
|
|
40
|
+
* `POST /api/companion/charts/audit` route, `wildo charts audit`, and the CI gate.
|
|
41
|
+
*
|
|
42
|
+
* What IS visible here is the OTHER half-wiring: a chart registered backend-side whose
|
|
43
|
+
* `dataQuery.mainResourceType` (or a `joins[].resourceType`) names nothing in the resources
|
|
44
|
+
* registry. Both are plain `z.string()` in `AggregationQuerySchema`, so neither the compiler
|
|
45
|
+
* nor the schema parse above can catch a typo or a reference to a resource that was renamed or
|
|
46
|
+
* removed.
|
|
47
|
+
*
|
|
48
|
+
* ## Why it must refuse rather than warn
|
|
49
|
+
* Measured on the execution path: `FieldAccessValidator.validate()` resolves the main schema
|
|
50
|
+
* through `getResourceConfiguration` inside a `try/catch`, and on failure logs a warning and
|
|
51
|
+
* RETURNS — so the entire field-access check (the control that keeps backend-only and hidden
|
|
52
|
+
* fields out of chart output) is skipped for that query. Execution then fails anyway, because
|
|
53
|
+
* `resolveCollectionName` / `resolveResourceDatabaseType` resolve the same configuration
|
|
54
|
+
* without a fallback — but as an opaque per-request INTERNAL error, once per viewer, forever.
|
|
55
|
+
* Refusing at boot converts a permanently broken chart nobody can diagnose from the response
|
|
56
|
+
* into one startup failure that names the chart, the channel and the registered set.
|
|
57
|
+
*
|
|
58
|
+
* ## Why a feature-EXCLUDED resource only warns
|
|
59
|
+
* `ResourcesRegistryBackendService` removes billing-conditional resources when billing is
|
|
60
|
+
* disabled. A chart over such a resource is a legitimate configuration — its host is expected
|
|
61
|
+
* to be feature-gated too (`ChartDefinition.requiredFeatures` gates inserted-chart routes) — so
|
|
62
|
+
* refusing would turn "billing is disabled" into "the application will not start". It still
|
|
63
|
+
* cannot execute if something does reach it, so it is reported rather than ignored.
|
|
64
|
+
*
|
|
65
|
+
* Fails closed on an uninitialized resources registry (`getResourceTypes` throws): registering
|
|
66
|
+
* a chart before resources exist is a boot-ORDERING defect, and answering it with "no resource
|
|
67
|
+
* is registered" would refuse every chart for the wrong reason.
|
|
68
|
+
*/
|
|
69
|
+
private assertQueryResourceTypesRegistered;
|
|
27
70
|
/**
|
|
28
71
|
* Normalize an externally supplied chart execution reference into the
|
|
29
72
|
* canonical registry key.
|
|
@@ -36,11 +79,35 @@ export declare class ChartRegistryBackendService {
|
|
|
36
79
|
*/
|
|
37
80
|
resolveExecutionChartRef(rawExecutionRef: string): string;
|
|
38
81
|
/**
|
|
39
|
-
* The set of registered chart refs (the canonical registry keys)
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
82
|
+
* The set of registered chart refs (the canonical registry keys) — what this process ACTUALLY
|
|
83
|
+
* registered, honouring any `ApplicationInitializationOverrides.chartDefinitions`.
|
|
84
|
+
*
|
|
85
|
+
* ## The drift guard does not read this, and does not need to — CORRECTED 2026-09-09
|
|
86
|
+
*
|
|
87
|
+
* Written as the ground-truth backend side for the chart-registration drift guard. The guard runs
|
|
88
|
+
* OUT-OF-PROCESS (no running backend is available to it), so it never calls this accessor and
|
|
89
|
+
* never will.
|
|
90
|
+
*
|
|
91
|
+
* A previous revision of this note went on to say that the guard therefore had to re-derive the
|
|
92
|
+
* set from `mergeBackendDomainModules(...).chartDefinitions` — the module DECLARATIONS — and that
|
|
93
|
+
* closing the resulting hole "needs the overrides to reach the companion, which the
|
|
94
|
+
* `companion-exports` contract does not currently carry". **The hole was real; that last clause
|
|
95
|
+
* was false.** `BackendCompanionExports.buildApplicationInitializationConfig()` is a REQUIRED
|
|
96
|
+
* member, is the same pure builder backend startup uses, starts nothing, and returns the exact
|
|
97
|
+
* `chartDefinitions` array `initialize()` hands to `registerChart` — override applied. Its own
|
|
98
|
+
* JSDoc already forbade the re-derivation ("tooling must not reconstruct selected runtime
|
|
99
|
+
* capabilities from lower-level registries or naming conventions").
|
|
100
|
+
*
|
|
101
|
+
* The hole mattered because `buildApplicationInitializationConfigFromModules` assembles
|
|
102
|
+
* `overrides.chartDefinitions ?? input.backendRegistry.chartDefinitions` — a REPLACE, not a merge
|
|
103
|
+
* — so an application override that dropped a declared chart made the guard report ALIGNED while
|
|
104
|
+
* the chart 404s, and one that ADDED an undeclared chart made it report a false FAIL.
|
|
105
|
+
*
|
|
106
|
+
* The companion route now takes the effective set and declares its provenance
|
|
107
|
+
* (`ChartRegistrationBackendRefsProvenance` in `@wildo-ai/saas-models`); a comparison built on the
|
|
108
|
+
* declarations yields `CANNOT_VOUCH` rather than `ALIGNED`. One caller still composes from the
|
|
109
|
+
* declarations — the companion's own CI-gate test under `core/introspection/__tests__/` — and
|
|
110
|
+
* the shared comparator's JSDoc names it and its four-line fix.
|
|
44
111
|
*/
|
|
45
112
|
getRegisteredChartRefs(): string[];
|
|
46
113
|
/**
|
|
@@ -48,7 +115,13 @@ export declare class ChartRegistryBackendService {
|
|
|
48
115
|
*/
|
|
49
116
|
getChart(ref: string): ChartDefinition;
|
|
50
117
|
/**
|
|
51
|
-
* Get all registered charts
|
|
118
|
+
* Get all registered charts.
|
|
119
|
+
*
|
|
120
|
+
* The comment here used to read "(for UIContext serialization)". Measured: nothing serializes
|
|
121
|
+
* it, and this method has NO caller in the repository. Kept as the registry's complete-read
|
|
122
|
+
* accessor, but do not reason from that stale note — the frontend never receives the backend's
|
|
123
|
+
* chart set, which is why the frontend↔backend registration join cannot be made in either
|
|
124
|
+
* runtime process. See `chart-registration-alignment.shared.ts`.
|
|
52
125
|
*/
|
|
53
126
|
getAllCharts(): ChartDefinition[];
|
|
54
127
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-registry.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"chart-registry.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/charts/services/chart-registry.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;oEASoE;AAIpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAChI,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,qBACa,2BAA2B;IAID,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IALxF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAGP,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EACpC,iBAAiB,EAAE,+BAA+B;IAGzH;;;;;;OAMG;IACH,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAqBhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,OAAO,CAAC,kCAAkC;IA6C1C;;;;;;;;;OASG;IACH,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAOzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAatC;;;;;;;;OAQG;IACH,YAAY,IAAI,eAAe,EAAE;IAIjC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -26,10 +26,12 @@ import { ChartDefinitionSchema, ErrorType, ErrorCustomMessageReference, normaliz
|
|
|
26
26
|
let ChartRegistryBackendService = class ChartRegistryBackendService {
|
|
27
27
|
logger;
|
|
28
28
|
errorBuilder;
|
|
29
|
+
resourcesRegistry;
|
|
29
30
|
charts = new Map();
|
|
30
|
-
constructor(logger, errorBuilder) {
|
|
31
|
+
constructor(logger, errorBuilder, resourcesRegistry) {
|
|
31
32
|
this.logger = logger;
|
|
32
33
|
this.errorBuilder = errorBuilder;
|
|
34
|
+
this.resourcesRegistry = resourcesRegistry;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Register a chart definition at app startup.
|
|
@@ -40,6 +42,7 @@ let ChartRegistryBackendService = class ChartRegistryBackendService {
|
|
|
40
42
|
*/
|
|
41
43
|
registerChart(definition) {
|
|
42
44
|
const parsedDefinition = ChartDefinitionSchema.parse(definition);
|
|
45
|
+
this.assertQueryResourceTypesRegistered(parsedDefinition);
|
|
43
46
|
const normalizedRef = this.resolveExecutionChartRef(parsedDefinition.ref);
|
|
44
47
|
const normalizedDefinition = parsedDefinition;
|
|
45
48
|
normalizedDefinition.ref = normalizedRef;
|
|
@@ -49,6 +52,79 @@ let ChartRegistryBackendService = class ChartRegistryBackendService {
|
|
|
49
52
|
this.charts.set(normalizedRef, normalizedDefinition);
|
|
50
53
|
this.logger.info(`ChartRegistry: registered chart '${normalizedRef}' (resource: ${normalizedDefinition.dataQuery.mainResourceType})`);
|
|
51
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Refuse startup for a chart whose aggregation query names a resource type this application
|
|
57
|
+
* does not have.
|
|
58
|
+
*
|
|
59
|
+
* ## What this does and does NOT cover
|
|
60
|
+
* This is NOT the frontend↔backend chart-registration join (`chartViews[].chartDefinition.ref`
|
|
61
|
+
* vs this registry). That comparison is IMPOSSIBLE in this process: the frontend authoring
|
|
62
|
+
* surface lives on `ResourceUIBehaviorConfig` in `.tsx` ui-behavior modules the backend cannot
|
|
63
|
+
* import, which is the whole reason `BackendDomainModule.chartDefinitions` exists as a second
|
|
64
|
+
* wiring and why the dev companion needs a dedicated introspection SUBPROCESS to materialize
|
|
65
|
+
* it. That join is guarded out-of-process — `computeChartRegistrationAlignment`, the companion
|
|
66
|
+
* `POST /api/companion/charts/audit` route, `wildo charts audit`, and the CI gate.
|
|
67
|
+
*
|
|
68
|
+
* What IS visible here is the OTHER half-wiring: a chart registered backend-side whose
|
|
69
|
+
* `dataQuery.mainResourceType` (or a `joins[].resourceType`) names nothing in the resources
|
|
70
|
+
* registry. Both are plain `z.string()` in `AggregationQuerySchema`, so neither the compiler
|
|
71
|
+
* nor the schema parse above can catch a typo or a reference to a resource that was renamed or
|
|
72
|
+
* removed.
|
|
73
|
+
*
|
|
74
|
+
* ## Why it must refuse rather than warn
|
|
75
|
+
* Measured on the execution path: `FieldAccessValidator.validate()` resolves the main schema
|
|
76
|
+
* through `getResourceConfiguration` inside a `try/catch`, and on failure logs a warning and
|
|
77
|
+
* RETURNS — so the entire field-access check (the control that keeps backend-only and hidden
|
|
78
|
+
* fields out of chart output) is skipped for that query. Execution then fails anyway, because
|
|
79
|
+
* `resolveCollectionName` / `resolveResourceDatabaseType` resolve the same configuration
|
|
80
|
+
* without a fallback — but as an opaque per-request INTERNAL error, once per viewer, forever.
|
|
81
|
+
* Refusing at boot converts a permanently broken chart nobody can diagnose from the response
|
|
82
|
+
* into one startup failure that names the chart, the channel and the registered set.
|
|
83
|
+
*
|
|
84
|
+
* ## Why a feature-EXCLUDED resource only warns
|
|
85
|
+
* `ResourcesRegistryBackendService` removes billing-conditional resources when billing is
|
|
86
|
+
* disabled. A chart over such a resource is a legitimate configuration — its host is expected
|
|
87
|
+
* to be feature-gated too (`ChartDefinition.requiredFeatures` gates inserted-chart routes) — so
|
|
88
|
+
* refusing would turn "billing is disabled" into "the application will not start". It still
|
|
89
|
+
* cannot execute if something does reach it, so it is reported rather than ignored.
|
|
90
|
+
*
|
|
91
|
+
* Fails closed on an uninitialized resources registry (`getResourceTypes` throws): registering
|
|
92
|
+
* a chart before resources exist is a boot-ORDERING defect, and answering it with "no resource
|
|
93
|
+
* is registered" would refuse every chart for the wrong reason.
|
|
94
|
+
*/
|
|
95
|
+
assertQueryResourceTypesRegistered(definition) {
|
|
96
|
+
const referencedResourceTypes = [
|
|
97
|
+
{ channel: 'dataQuery.mainResourceType', resourceType: definition.dataQuery.mainResourceType },
|
|
98
|
+
...(definition.dataQuery.joins ?? []).map((join, joinIndex) => ({
|
|
99
|
+
channel: `dataQuery.joins[${joinIndex}].resourceType (alias '${join.alias}')`,
|
|
100
|
+
resourceType: join.resourceType,
|
|
101
|
+
})),
|
|
102
|
+
];
|
|
103
|
+
const registeredResourceTypes = this.resourcesRegistry.getResourceTypes();
|
|
104
|
+
const registeredSet = new Set(registeredResourceTypes);
|
|
105
|
+
const excludedSet = this.resourcesRegistry.getExcludedResourceTypes();
|
|
106
|
+
const absent = referencedResourceTypes.filter(({ resourceType }) => !registeredSet.has(resourceType));
|
|
107
|
+
const featureExcluded = absent.filter(({ resourceType }) => excludedSet.has(resourceType));
|
|
108
|
+
const unknown = absent.filter(({ resourceType }) => !excludedSet.has(resourceType));
|
|
109
|
+
for (const { channel, resourceType } of featureExcluded) {
|
|
110
|
+
this.logger.warn(`ChartRegistry: chart '${definition.ref}' ${channel} references resource '${resourceType}', which this application deliberately EXCLUDED from its resources registry (feature-gated). The chart is registered but cannot execute — gate its host with ChartDefinition.requiredFeatures so it is never reached.`);
|
|
111
|
+
}
|
|
112
|
+
if (unknown.length === 0)
|
|
113
|
+
return;
|
|
114
|
+
const referenceLines = unknown
|
|
115
|
+
.map(({ channel, resourceType }) => ` - ${channel} → '${resourceType}'`)
|
|
116
|
+
.join('\n');
|
|
117
|
+
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
|
|
118
|
+
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
119
|
+
context: {
|
|
120
|
+
message: `ChartRegistry: chart '${definition.ref}' references ${unknown.length} resource type(s) that are neither registered nor feature-excluded (every request to POST /charts/${definition.ref}/data would fail, and field-access validation would be skipped for the whole query):\n`
|
|
121
|
+
+ `${referenceLines}\n`
|
|
122
|
+
+ `Registered resource types (${registeredResourceTypes.length}): ${[...registeredSet].sort().join(', ')}\n`
|
|
123
|
+
+ `Feature-excluded resource types (${excludedSet.size}): ${[...excludedSet].sort().join(', ') || '(none)'}\n`
|
|
124
|
+
+ `Fix: correct the resource type on the shared ChartDefinition, or remove the chart from the owning backend module's \`chartDefinitions\`.`,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
52
128
|
/**
|
|
53
129
|
* Normalize an externally supplied chart execution reference into the
|
|
54
130
|
* canonical registry key.
|
|
@@ -66,11 +142,35 @@ let ChartRegistryBackendService = class ChartRegistryBackendService {
|
|
|
66
142
|
return normalizeChartExecutionRef(rawExecutionRef);
|
|
67
143
|
}
|
|
68
144
|
/**
|
|
69
|
-
* The set of registered chart refs (the canonical registry keys)
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
145
|
+
* The set of registered chart refs (the canonical registry keys) — what this process ACTUALLY
|
|
146
|
+
* registered, honouring any `ApplicationInitializationOverrides.chartDefinitions`.
|
|
147
|
+
*
|
|
148
|
+
* ## The drift guard does not read this, and does not need to — CORRECTED 2026-09-09
|
|
149
|
+
*
|
|
150
|
+
* Written as the ground-truth backend side for the chart-registration drift guard. The guard runs
|
|
151
|
+
* OUT-OF-PROCESS (no running backend is available to it), so it never calls this accessor and
|
|
152
|
+
* never will.
|
|
153
|
+
*
|
|
154
|
+
* A previous revision of this note went on to say that the guard therefore had to re-derive the
|
|
155
|
+
* set from `mergeBackendDomainModules(...).chartDefinitions` — the module DECLARATIONS — and that
|
|
156
|
+
* closing the resulting hole "needs the overrides to reach the companion, which the
|
|
157
|
+
* `companion-exports` contract does not currently carry". **The hole was real; that last clause
|
|
158
|
+
* was false.** `BackendCompanionExports.buildApplicationInitializationConfig()` is a REQUIRED
|
|
159
|
+
* member, is the same pure builder backend startup uses, starts nothing, and returns the exact
|
|
160
|
+
* `chartDefinitions` array `initialize()` hands to `registerChart` — override applied. Its own
|
|
161
|
+
* JSDoc already forbade the re-derivation ("tooling must not reconstruct selected runtime
|
|
162
|
+
* capabilities from lower-level registries or naming conventions").
|
|
163
|
+
*
|
|
164
|
+
* The hole mattered because `buildApplicationInitializationConfigFromModules` assembles
|
|
165
|
+
* `overrides.chartDefinitions ?? input.backendRegistry.chartDefinitions` — a REPLACE, not a merge
|
|
166
|
+
* — so an application override that dropped a declared chart made the guard report ALIGNED while
|
|
167
|
+
* the chart 404s, and one that ADDED an undeclared chart made it report a false FAIL.
|
|
168
|
+
*
|
|
169
|
+
* The companion route now takes the effective set and declares its provenance
|
|
170
|
+
* (`ChartRegistrationBackendRefsProvenance` in `@wildo-ai/saas-models`); a comparison built on the
|
|
171
|
+
* declarations yields `CANNOT_VOUCH` rather than `ALIGNED`. One caller still composes from the
|
|
172
|
+
* declarations — the companion's own CI-gate test under `core/introspection/__tests__/` — and
|
|
173
|
+
* the shared comparator's JSDoc names it and its four-line fix.
|
|
74
174
|
*/
|
|
75
175
|
getRegisteredChartRefs() {
|
|
76
176
|
return Array.from(this.charts.keys());
|
|
@@ -87,7 +187,13 @@ let ChartRegistryBackendService = class ChartRegistryBackendService {
|
|
|
87
187
|
return chart;
|
|
88
188
|
}
|
|
89
189
|
/**
|
|
90
|
-
* Get all registered charts
|
|
190
|
+
* Get all registered charts.
|
|
191
|
+
*
|
|
192
|
+
* The comment here used to read "(for UIContext serialization)". Measured: nothing serializes
|
|
193
|
+
* it, and this method has NO caller in the repository. Kept as the registry's complete-read
|
|
194
|
+
* accessor, but do not reason from that stale note — the frontend never receives the backend's
|
|
195
|
+
* chart set, which is why the frontend↔backend registration join cannot be made in either
|
|
196
|
+
* runtime process. See `chart-registration-alignment.shared.ts`.
|
|
91
197
|
*/
|
|
92
198
|
getAllCharts() {
|
|
93
199
|
return Array.from(this.charts.values());
|
|
@@ -109,7 +215,8 @@ ChartRegistryBackendService = __decorate([
|
|
|
109
215
|
injectable(),
|
|
110
216
|
__param(0, inject(SAAS_SERVICE_TYPES.Logger)),
|
|
111
217
|
__param(1, inject(SAAS_SERVICE_TYPES.ErrorBuilderService)),
|
|
112
|
-
|
|
218
|
+
__param(2, inject(SAAS_SERVICE_TYPES.ResourceRegistryService)),
|
|
219
|
+
__metadata("design:paramtypes", [Function, Function, Function])
|
|
113
220
|
], ChartRegistryBackendService);
|
|
114
221
|
export { ChartRegistryBackendService };
|
|
115
222
|
//# sourceMappingURL=chart-registry.backend.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-registry.backend.service.js","sourceRoot":"","sources":["../../../../../src/charts/services/chart-registry.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/** ──────────────────────────────────────────────────────────────\n * ChartRegistryBackendService\n *\n * Resolves chartRef → ChartDefinition at runtime.\n * Follows the same pattern as ResourcesRegistryBackendService.\n *\n * Registration flow: Custom apps register charts during the same\n * initialization phase that registers resources. The RegistryInitializer\n * calls chartRegistry.registerChart() for each chart definition.\n * ────────────────────────────────────────────────────────────── */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport {\n ChartDefinitionSchema,\n ErrorType,\n ErrorCustomMessageReference,\n normalizeChartExecutionRef,\n type ChartDefinition,\n} from '@wildo-ai/saas-models';\n\n@injectable()\nexport class ChartRegistryBackendService {\n private readonly charts = new Map<string, ChartDefinition>();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n ) {}\n\n /**\n * Register a chart definition at app startup.\n * Re-parse the definition at the backend boundary so startup fails fast if an\n * in-memory chart object drifted away from the shared contract after authoring.\n * This keeps the registry as the single choke point for backend-owned chart\n * validity before later controller/execution paths trust the shape.\n */\n registerChart(definition: ChartDefinition): void {\n const parsedDefinition = ChartDefinitionSchema.parse(definition);\n const normalizedRef = this.resolveExecutionChartRef(parsedDefinition.ref);\n const normalizedDefinition = parsedDefinition as ChartDefinition;\n normalizedDefinition.ref = normalizedRef;\n\n if (this.charts.has(normalizedRef)) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n { customMessageReference: ErrorCustomMessageReference.CONFIGURATION, context: { message: `ChartRegistry: duplicate chart ref '${normalizedRef}'` } },\n );\n }\n\n this.charts.set(normalizedRef, normalizedDefinition);\n this.logger.info(\n `ChartRegistry: registered chart '${normalizedRef}' (resource: ${normalizedDefinition.dataQuery.mainResourceType})`,\n );\n }\n\n /**\n * Normalize an externally supplied chart execution reference into the\n * canonical registry key.\n *\n * Resource-owned inserted charts currently normalize to the embedded\n * `ChartDefinition.ref` before the backend call. This helper makes that\n * boundary explicit and keeps one backend choke point ready for future\n * inserted-view identity decoding without spreading lookup semantics across\n * controllers.\n */\n resolveExecutionChartRef(rawExecutionRef: string): string {\n // Single-sourced with the drift-alignment guard so registry keys and the\n // guard's comparison can never diverge on whitespace. See\n // `normalizeChartExecutionRef` in @wildo-ai/saas-models.\n return normalizeChartExecutionRef(rawExecutionRef);\n }\n\n /**\n * The set of registered chart refs (the canonical registry keys). This is the\n * ground-truth backend side for the chart-registration drift guard — it\n * reflects what was actually registered (honouring any\n * `ApplicationInitializationOverrides.chartDefinitions`), not a re-derivation\n * from raw module declarations.\n */\n getRegisteredChartRefs(): string[] {\n return Array.from(this.charts.keys());\n }\n\n /**\n * Resolve a chart by backend execution ref — throws CHART_NOT_FOUND if not registered.\n */\n getChart(ref: string): ChartDefinition {\n const resolvedRef = this.resolveExecutionChartRef(ref);\n const chart = this.charts.get(resolvedRef);\n if (!chart) {\n throw this.errorBuilder.buildError(\n ErrorType.NOT_FOUND,\n undefined,\n { customMessageReference: ErrorCustomMessageReference.CHART_NOT_FOUND, context: { resolvedRef } },\n );\n }\n return chart;\n }\n\n /**\n * Get all registered charts (for UIContext serialization).\n */\n getAllCharts(): ChartDefinition[] {\n return Array.from(this.charts.values());\n }\n\n /**\n * Check if any charts are registered.\n */\n hasCharts(): boolean {\n return this.charts.size > 0;\n }\n\n /**\n * Get count of registered charts.\n */\n getChartCount(): number {\n return this.charts.size;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chart-registry.backend.service.js","sourceRoot":"","sources":["../../../../src/charts/services/chart-registry.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/** ──────────────────────────────────────────────────────────────\n * ChartRegistryBackendService\n *\n * Resolves chartRef → ChartDefinition at runtime.\n * Follows the same pattern as ResourcesRegistryBackendService.\n *\n * Registration flow: Custom apps register charts during the same\n * initialization phase that registers resources. The RegistryInitializer\n * calls chartRegistry.registerChart() for each chart definition.\n * ────────────────────────────────────────────────────────────── */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport {\n ChartDefinitionSchema,\n ErrorType,\n ErrorCustomMessageReference,\n normalizeChartExecutionRef,\n type ChartDefinition,\n} from '@wildo-ai/saas-models';\n\n@injectable()\nexport class ChartRegistryBackendService {\n private readonly charts = new Map<string, ChartDefinition>();\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceRegistryService) private readonly resourcesRegistry: ResourcesRegistryBackendService,\n ) {}\n\n /**\n * Register a chart definition at app startup.\n * Re-parse the definition at the backend boundary so startup fails fast if an\n * in-memory chart object drifted away from the shared contract after authoring.\n * This keeps the registry as the single choke point for backend-owned chart\n * validity before later controller/execution paths trust the shape.\n */\n registerChart(definition: ChartDefinition): void {\n const parsedDefinition = ChartDefinitionSchema.parse(definition);\n this.assertQueryResourceTypesRegistered(parsedDefinition as ChartDefinition);\n const normalizedRef = this.resolveExecutionChartRef(parsedDefinition.ref);\n const normalizedDefinition = parsedDefinition as ChartDefinition;\n normalizedDefinition.ref = normalizedRef;\n\n if (this.charts.has(normalizedRef)) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n { customMessageReference: ErrorCustomMessageReference.CONFIGURATION, context: { message: `ChartRegistry: duplicate chart ref '${normalizedRef}'` } },\n );\n }\n\n this.charts.set(normalizedRef, normalizedDefinition);\n this.logger.info(\n `ChartRegistry: registered chart '${normalizedRef}' (resource: ${normalizedDefinition.dataQuery.mainResourceType})`,\n );\n }\n\n /**\n * Refuse startup for a chart whose aggregation query names a resource type this application\n * does not have.\n *\n * ## What this does and does NOT cover\n * This is NOT the frontend↔backend chart-registration join (`chartViews[].chartDefinition.ref`\n * vs this registry). That comparison is IMPOSSIBLE in this process: the frontend authoring\n * surface lives on `ResourceUIBehaviorConfig` in `.tsx` ui-behavior modules the backend cannot\n * import, which is the whole reason `BackendDomainModule.chartDefinitions` exists as a second\n * wiring and why the dev companion needs a dedicated introspection SUBPROCESS to materialize\n * it. That join is guarded out-of-process — `computeChartRegistrationAlignment`, the companion\n * `POST /api/companion/charts/audit` route, `wildo charts audit`, and the CI gate.\n *\n * What IS visible here is the OTHER half-wiring: a chart registered backend-side whose\n * `dataQuery.mainResourceType` (or a `joins[].resourceType`) names nothing in the resources\n * registry. Both are plain `z.string()` in `AggregationQuerySchema`, so neither the compiler\n * nor the schema parse above can catch a typo or a reference to a resource that was renamed or\n * removed.\n *\n * ## Why it must refuse rather than warn\n * Measured on the execution path: `FieldAccessValidator.validate()` resolves the main schema\n * through `getResourceConfiguration` inside a `try/catch`, and on failure logs a warning and\n * RETURNS — so the entire field-access check (the control that keeps backend-only and hidden\n * fields out of chart output) is skipped for that query. Execution then fails anyway, because\n * `resolveCollectionName` / `resolveResourceDatabaseType` resolve the same configuration\n * without a fallback — but as an opaque per-request INTERNAL error, once per viewer, forever.\n * Refusing at boot converts a permanently broken chart nobody can diagnose from the response\n * into one startup failure that names the chart, the channel and the registered set.\n *\n * ## Why a feature-EXCLUDED resource only warns\n * `ResourcesRegistryBackendService` removes billing-conditional resources when billing is\n * disabled. A chart over such a resource is a legitimate configuration — its host is expected\n * to be feature-gated too (`ChartDefinition.requiredFeatures` gates inserted-chart routes) — so\n * refusing would turn \"billing is disabled\" into \"the application will not start\". It still\n * cannot execute if something does reach it, so it is reported rather than ignored.\n *\n * Fails closed on an uninitialized resources registry (`getResourceTypes` throws): registering\n * a chart before resources exist is a boot-ORDERING defect, and answering it with \"no resource\n * is registered\" would refuse every chart for the wrong reason.\n */\n private assertQueryResourceTypesRegistered(definition: ChartDefinition): void {\n const referencedResourceTypes: { channel: string; resourceType: string }[] = [\n { channel: 'dataQuery.mainResourceType', resourceType: definition.dataQuery.mainResourceType },\n ...(definition.dataQuery.joins ?? []).map((join, joinIndex) => ({\n channel: `dataQuery.joins[${joinIndex}].resourceType (alias '${join.alias}')`,\n resourceType: join.resourceType,\n })),\n ];\n\n const registeredResourceTypes = this.resourcesRegistry.getResourceTypes();\n const registeredSet = new Set<string>(registeredResourceTypes as unknown as string[]);\n const excludedSet = this.resourcesRegistry.getExcludedResourceTypes();\n\n const absent = referencedResourceTypes.filter(({ resourceType }) => !registeredSet.has(resourceType));\n const featureExcluded = absent.filter(({ resourceType }) => excludedSet.has(resourceType));\n const unknown = absent.filter(({ resourceType }) => !excludedSet.has(resourceType));\n\n for (const { channel, resourceType } of featureExcluded) {\n this.logger.warn(\n `ChartRegistry: chart '${definition.ref}' ${channel} references resource '${resourceType}', which this application deliberately EXCLUDED from its resources registry (feature-gated). The chart is registered but cannot execute — gate its host with ChartDefinition.requiredFeatures so it is never reached.`,\n );\n }\n\n if (unknown.length === 0) return;\n\n const referenceLines = unknown\n .map(({ channel, resourceType }) => ` - ${channel} → '${resourceType}'`)\n .join('\\n');\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `ChartRegistry: chart '${definition.ref}' references ${unknown.length} resource type(s) that are neither registered nor feature-excluded (every request to POST /charts/${definition.ref}/data would fail, and field-access validation would be skipped for the whole query):\\n`\n + `${referenceLines}\\n`\n + `Registered resource types (${registeredResourceTypes.length}): ${[...registeredSet].sort().join(', ')}\\n`\n + `Feature-excluded resource types (${excludedSet.size}): ${[...excludedSet].sort().join(', ') || '(none)'}\\n`\n + `Fix: correct the resource type on the shared ChartDefinition, or remove the chart from the owning backend module's \\`chartDefinitions\\`.`,\n },\n },\n );\n }\n\n /**\n * Normalize an externally supplied chart execution reference into the\n * canonical registry key.\n *\n * Resource-owned inserted charts currently normalize to the embedded\n * `ChartDefinition.ref` before the backend call. This helper makes that\n * boundary explicit and keeps one backend choke point ready for future\n * inserted-view identity decoding without spreading lookup semantics across\n * controllers.\n */\n resolveExecutionChartRef(rawExecutionRef: string): string {\n // Single-sourced with the drift-alignment guard so registry keys and the\n // guard's comparison can never diverge on whitespace. See\n // `normalizeChartExecutionRef` in @wildo-ai/saas-models.\n return normalizeChartExecutionRef(rawExecutionRef);\n }\n\n /**\n * The set of registered chart refs (the canonical registry keys) — what this process ACTUALLY\n * registered, honouring any `ApplicationInitializationOverrides.chartDefinitions`.\n *\n * ## The drift guard does not read this, and does not need to — CORRECTED 2026-09-09\n *\n * Written as the ground-truth backend side for the chart-registration drift guard. The guard runs\n * OUT-OF-PROCESS (no running backend is available to it), so it never calls this accessor and\n * never will.\n *\n * A previous revision of this note went on to say that the guard therefore had to re-derive the\n * set from `mergeBackendDomainModules(...).chartDefinitions` — the module DECLARATIONS — and that\n * closing the resulting hole \"needs the overrides to reach the companion, which the\n * `companion-exports` contract does not currently carry\". **The hole was real; that last clause\n * was false.** `BackendCompanionExports.buildApplicationInitializationConfig()` is a REQUIRED\n * member, is the same pure builder backend startup uses, starts nothing, and returns the exact\n * `chartDefinitions` array `initialize()` hands to `registerChart` — override applied. Its own\n * JSDoc already forbade the re-derivation (\"tooling must not reconstruct selected runtime\n * capabilities from lower-level registries or naming conventions\").\n *\n * The hole mattered because `buildApplicationInitializationConfigFromModules` assembles\n * `overrides.chartDefinitions ?? input.backendRegistry.chartDefinitions` — a REPLACE, not a merge\n * — so an application override that dropped a declared chart made the guard report ALIGNED while\n * the chart 404s, and one that ADDED an undeclared chart made it report a false FAIL.\n *\n * The companion route now takes the effective set and declares its provenance\n * (`ChartRegistrationBackendRefsProvenance` in `@wildo-ai/saas-models`); a comparison built on the\n * declarations yields `CANNOT_VOUCH` rather than `ALIGNED`. One caller still composes from the\n * declarations — the companion's own CI-gate test under `core/introspection/__tests__/` — and\n * the shared comparator's JSDoc names it and its four-line fix.\n */\n getRegisteredChartRefs(): string[] {\n return Array.from(this.charts.keys());\n }\n\n /**\n * Resolve a chart by backend execution ref — throws CHART_NOT_FOUND if not registered.\n */\n getChart(ref: string): ChartDefinition {\n const resolvedRef = this.resolveExecutionChartRef(ref);\n const chart = this.charts.get(resolvedRef);\n if (!chart) {\n throw this.errorBuilder.buildError(\n ErrorType.NOT_FOUND,\n undefined,\n { customMessageReference: ErrorCustomMessageReference.CHART_NOT_FOUND, context: { resolvedRef } },\n );\n }\n return chart;\n }\n\n /**\n * Get all registered charts.\n *\n * The comment here used to read \"(for UIContext serialization)\". Measured: nothing serializes\n * it, and this method has NO caller in the repository. Kept as the registry's complete-read\n * accessor, but do not reason from that stale note — the frontend never receives the backend's\n * chart set, which is why the frontend↔backend registration join cannot be made in either\n * runtime process. See `chart-registration-alignment.shared.ts`.\n */\n getAllCharts(): ChartDefinition[] {\n return Array.from(this.charts.values());\n }\n\n /**\n * Check if any charts are registered.\n */\n hasCharts(): boolean {\n return this.charts.size > 0;\n }\n\n /**\n * Get count of registered charts.\n */\n getChartCount(): number {\n return this.charts.size;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-exports.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"companion-exports.d.ts","sourceRoot":"","sources":["../../src/companion-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,yDAAyD,CAAC;AAChH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AAE5G,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,YAAY,CAAC,EAAE,+BAA+B,CAAC,cAAc,CAAC,CAAC;IAC/D,wBAAwB,CAAC,EAAE,+BAA+B,CAAC,0BAA0B,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,uBAAuB,CACtC,cAAc,GAAG,gCAAgC,EACjD,mBAAmB,SAAS,2BAA2B,GAAG,2BAA2B,CACrF,SAAQ,4BAA4B;IACpC,aAAa,EAAE,cAAc,CAAC;IAC9B,kBAAkB,EAAE,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEzD;;;;;;OAMG;IACH,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;IAE5E;;;;;;;;;;;;OAYG;IACH,6BAA6B,CAAC,EAAE,iBAAiB,CAAC;CACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"audit-logs.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/compliance/audit-trails/audit-logs.custom-impl.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EAEL,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAOpH,wBAAgB,8BAA8B,IAAI,0CAA0C,EAAE,CAuE7F"}
|
package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs-archive.batch.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"audit-logs-archive.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,4FAA4F,CAAC;AA6HpG;;;GAGG;AACH,eAAO,MAAM,gCAAgC;;;;kBAUlC,CAAC;AACZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F;;;GAGG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;iBA+B5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AA0D5F,eAAO,MAAM,4BAA4B,EAAE,sCAAsC,CAC/E,OAAO,gCAAgC,EACvC,OAAO,iCAAiC,CA2PxC,CAAC"}
|