@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.
Files changed (1056) hide show
  1. package/dist/esm/__tests__/fixture-deep-partial.d.ts.map +1 -1
  2. package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
  3. package/dist/esm/__tests__/setup.d.ts.map +1 -1
  4. package/dist/esm/__tests__/test-container.d.ts.map +1 -1
  5. package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
  6. package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
  7. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
  8. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  9. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  10. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  11. package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
  12. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
  13. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
  14. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
  15. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
  16. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -1
  18. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -1
  19. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -1
  20. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +12 -1
  21. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -1
  22. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  23. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  24. package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
  25. package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
  26. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
  27. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  28. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  29. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
  30. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
  31. package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
  32. package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
  33. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
  34. package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
  35. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
  36. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
  37. package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
  38. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  39. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +13 -4
  40. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  41. package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
  42. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +17 -0
  44. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  45. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  46. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  47. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -1
  48. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -1
  49. package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
  50. package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
  51. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  52. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  53. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
  54. package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
  55. package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
  56. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  57. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  58. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
  59. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
  60. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +57 -0
  61. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  62. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +95 -2
  63. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  64. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  65. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  66. package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
  68. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  69. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +14 -3
  70. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  71. package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
  72. package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
  73. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
  74. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
  75. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
  76. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
  77. package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
  78. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
  79. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
  80. package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
  81. package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
  82. package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
  83. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  84. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  85. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
  86. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
  87. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
  88. package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
  89. package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
  90. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  91. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  92. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  93. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  94. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  95. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +44 -6
  96. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  97. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  98. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  99. package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
  100. package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
  101. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -1
  102. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -1
  103. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -1
  104. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -1
  105. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -1
  106. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -1
  107. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
  108. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
  109. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +1 -1
  110. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -1
  111. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +5 -4
  112. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -1
  113. package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
  114. package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
  115. package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
  116. package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
  117. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  118. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  119. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  120. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  121. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -1
  122. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -1
  123. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  124. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  125. package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
  126. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  127. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  128. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +32 -0
  129. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  130. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +32 -1
  131. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  132. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  133. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  134. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  135. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  136. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  137. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  138. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  139. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +9 -6
  140. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  141. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +9 -6
  142. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  143. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -1
  144. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -1
  145. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
  146. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
  147. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  148. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +50 -3
  149. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  150. package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
  151. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  152. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  153. package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
  154. package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
  155. package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
  156. package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
  157. package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
  158. package/dist/esm/companion-exports.d.ts.map +1 -1
  159. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
  160. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
  161. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  162. package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
  163. package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  164. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
  165. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  166. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  167. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +107 -4
  168. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  169. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +176 -5
  170. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  171. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  172. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  173. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  174. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
  175. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  176. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  177. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -1
  178. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -1
  179. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  180. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +21 -0
  181. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  182. package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
  183. package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
  184. package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
  185. package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
  186. package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
  187. package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
  188. package/dist/esm/compliance/index.d.ts.map +1 -1
  189. package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
  190. package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
  191. package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
  192. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  193. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  194. package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
  195. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
  196. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
  197. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
  198. package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
  199. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
  200. package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
  201. package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
  202. package/dist/esm/config/models/app-config.backend.schemas.d.ts +4 -4
  203. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  204. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  205. package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
  206. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
  207. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
  208. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
  209. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
  210. package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
  211. package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
  212. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  213. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  214. package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
  215. package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
  216. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  217. package/dist/esm/config/services/app-configuration-loader.backend.service.js +3 -0
  218. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  219. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  220. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  221. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  222. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  223. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +12 -0
  224. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  225. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +28 -0
  226. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  227. package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
  228. package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
  229. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
  230. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
  231. package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
  232. package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
  233. package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
  234. package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
  235. package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
  236. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
  237. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
  238. package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
  239. package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
  240. package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
  241. package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
  242. package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
  243. package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
  244. package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
  245. package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
  246. package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
  247. package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
  248. package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
  249. package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
  250. package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
  251. package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
  252. package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
  253. package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
  254. package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
  255. package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
  256. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
  257. package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
  258. package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
  259. package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
  260. package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
  261. package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
  262. package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
  263. package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
  264. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
  265. package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
  266. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
  267. package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
  268. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
  269. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
  270. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
  271. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
  272. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
  273. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
  274. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
  275. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
  276. package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
  277. package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
  278. package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
  279. package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
  280. package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
  281. package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
  282. package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
  283. package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
  284. package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
  285. package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
  286. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  287. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  288. package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
  289. package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
  290. package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
  291. package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
  292. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
  293. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
  294. package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
  295. package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
  296. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  297. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  298. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  299. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  300. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  301. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  302. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  303. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  304. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  305. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  306. package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
  307. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
  308. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
  309. package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
  310. package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
  311. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  312. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  313. package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
  314. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
  315. package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
  316. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  317. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  318. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +102 -52
  319. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -1
  320. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +117 -71
  321. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -1
  322. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -1
  323. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -1
  324. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -1
  325. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +26 -7
  326. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -1
  327. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -1
  328. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -1
  329. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  330. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  331. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -1
  332. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -1
  333. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  334. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  335. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
  336. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  337. package/dist/esm/external-providers/services/document-extraction.backend.service.js +179 -98
  338. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  339. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  340. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  341. package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
  342. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +121 -0
  343. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  344. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +151 -0
  345. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  346. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
  347. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  348. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +60 -4
  349. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  350. package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
  351. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
  352. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
  353. package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  354. package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
  355. package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
  356. package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
  357. package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  358. package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
  359. package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  360. package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
  361. package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
  362. package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
  363. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
  364. package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
  365. package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
  366. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
  367. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  368. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  369. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
  370. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
  371. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
  372. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  373. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +221 -21
  374. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  375. package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
  376. package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
  377. package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
  378. package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
  379. package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
  380. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
  381. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
  382. package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
  383. package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
  384. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
  385. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
  386. package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
  387. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  388. package/dist/esm/files/services/file-scanning.backend.service.js +5 -0
  389. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  390. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  391. package/dist/esm/files/services/file-text-extraction.backend.service.js +8 -5
  392. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  393. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
  394. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
  395. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  396. package/dist/esm/files/services/files.backend.service.js +3 -1
  397. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  398. package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
  399. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -1
  400. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -1
  401. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
  402. package/dist/esm/files/storage/file-storage-provider.types.d.ts +36 -1
  403. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  404. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  405. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
  406. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
  407. package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
  408. package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
  409. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
  410. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
  411. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
  412. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
  413. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  414. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  415. package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
  416. package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  417. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  418. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
  419. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
  420. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  421. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  422. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  423. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  424. package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
  425. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
  426. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
  427. package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
  428. package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
  429. package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
  430. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -1
  431. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -1
  432. package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
  433. package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
  434. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  435. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  436. package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
  437. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  438. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  439. package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
  440. package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
  441. package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
  442. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  443. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  444. package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
  445. package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
  446. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  447. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  448. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  449. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  450. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  451. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  452. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  453. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  454. package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
  455. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  456. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  457. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
  458. package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
  459. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  460. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  461. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
  462. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  463. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  464. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +107 -16
  465. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  466. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +118 -18
  467. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  468. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  469. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  470. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -1
  471. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -1
  472. package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
  473. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  474. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  475. package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
  476. package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
  477. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +104 -5
  478. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  479. package/dist/esm/flows-actors/services/agents.backend.service.js +263 -31
  480. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  481. package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
  482. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +46 -1
  483. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  484. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +193 -6
  485. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  486. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  487. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  488. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  489. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  490. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  491. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  492. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -1
  493. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +3 -0
  494. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -1
  495. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
  496. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
  497. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
  498. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
  499. package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
  500. package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
  501. package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
  502. package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
  503. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  504. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  505. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  506. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +9 -0
  507. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  508. package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
  509. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
  510. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  511. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  512. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  513. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  514. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
  515. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
  516. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
  517. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
  518. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
  519. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
  520. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
  521. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
  522. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
  523. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
  524. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
  525. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
  526. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
  527. package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
  528. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
  529. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
  530. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  531. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  532. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -1
  533. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -1
  534. package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
  535. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  536. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  537. package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
  538. package/dist/esm/index.d.ts +0 -1
  539. package/dist/esm/index.d.ts.map +1 -1
  540. package/dist/esm/index.js +0 -1
  541. package/dist/esm/index.js.map +1 -1
  542. package/dist/esm/inject/models/container.d.ts +10 -0
  543. package/dist/esm/inject/models/container.d.ts.map +1 -1
  544. package/dist/esm/inject/models/container.js +49 -1
  545. package/dist/esm/inject/models/container.js.map +1 -1
  546. package/dist/esm/inject/models/service-types.d.ts +3 -0
  547. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  548. package/dist/esm/inject/models/service-types.js +3 -0
  549. package/dist/esm/inject/models/service-types.js.map +1 -1
  550. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  551. package/dist/esm/mcp/controllers/mcp.controller.js +50 -3
  552. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  553. package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
  554. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
  555. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
  556. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  557. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  558. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  559. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  560. package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
  561. package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
  562. package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
  563. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  564. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  565. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -1
  566. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -1
  567. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  568. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  569. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  570. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  571. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  572. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  573. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
  574. package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
  575. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  576. package/dist/esm/monitoring/logger/services/logger.service.js +3 -3
  577. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  578. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -1
  579. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -1
  580. package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
  581. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +10 -6
  582. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -1
  583. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +10 -6
  584. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -1
  585. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  586. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  587. package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
  588. package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
  589. package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
  590. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  591. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  592. package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
  593. package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
  594. package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
  595. package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
  596. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
  597. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  598. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  599. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  600. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  601. package/dist/esm/notifications/email/services/email.backend.service.d.ts +47 -6
  602. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  603. package/dist/esm/notifications/email/services/email.backend.service.js +86 -36
  604. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  605. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  606. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  607. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
  608. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
  609. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  610. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  611. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  612. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  613. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
  614. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
  615. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
  616. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
  617. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
  618. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  619. package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
  620. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  621. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  622. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  623. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  624. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  625. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
  626. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  627. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  628. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
  629. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
  630. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
  631. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
  632. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  633. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  634. package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
  635. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
  636. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  637. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  638. package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
  639. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
  640. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  641. package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
  642. package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
  643. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
  644. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
  645. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  646. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  647. package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  648. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
  649. package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
  650. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
  651. package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
  652. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
  653. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
  654. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
  655. package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
  656. package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
  657. package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
  658. package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
  659. package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
  660. package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
  661. package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
  662. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -1
  663. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -1
  664. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -1
  665. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -1
  666. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -1
  667. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -1
  668. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -1
  669. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -1
  670. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  671. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  672. package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
  673. package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
  674. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  675. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  676. package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
  677. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  678. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  679. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  680. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  681. package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
  682. package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
  683. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  684. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  685. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  686. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  687. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  688. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  689. package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
  690. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  691. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  692. package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
  693. package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
  694. package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
  695. package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
  696. package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
  697. package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
  698. package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
  699. package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
  700. package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
  701. package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
  702. package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
  703. package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
  704. package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
  705. package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
  706. package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
  707. package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
  708. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  709. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  710. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  711. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  712. package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
  713. package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
  714. package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
  715. package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
  716. package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
  717. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
  718. package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
  719. package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
  720. package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
  721. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  722. package/dist/esm/requests/service/websocket.service.js +49 -1
  723. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  724. package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
  725. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  726. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +2 -0
  727. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  728. package/dist/esm/resources/models/index.d.ts.map +1 -1
  729. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  730. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  731. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  732. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  733. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  734. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  735. package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
  736. package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
  737. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
  738. package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
  739. package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
  740. package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
  741. package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
  742. package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
  743. package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
  744. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +23 -0
  745. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  746. package/dist/esm/resources/services/resources-registry.backend.service.js +31 -0
  747. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  748. package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
  749. package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
  750. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  751. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  752. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  753. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  754. package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
  755. package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
  756. package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
  757. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
  758. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
  759. package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
  760. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  761. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  762. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  763. package/dist/esm/runtime/services/http-server.backend.service.js +10 -0
  764. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  765. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  766. package/dist/esm/runtime/services/start-application.backend.service.js +26 -12
  767. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  768. package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
  769. package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
  770. package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
  771. package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
  772. package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
  773. package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
  774. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
  775. package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
  776. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  777. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  778. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  779. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  780. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
  781. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
  782. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  783. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +84 -0
  784. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  785. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  786. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  787. package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
  788. package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
  789. package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
  790. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  791. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  792. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
  793. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
  794. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
  795. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
  796. package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
  797. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
  798. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
  799. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  800. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  801. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
  802. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
  803. package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
  804. package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
  805. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
  806. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
  807. package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
  808. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
  809. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
  810. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  811. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  812. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  813. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  814. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  815. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  816. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  817. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  818. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
  819. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
  820. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
  821. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +9 -2
  822. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  823. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +9 -2
  824. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  825. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
  826. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
  827. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  828. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  829. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
  830. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
  831. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
  832. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  833. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  834. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
  835. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  836. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +218 -26
  837. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  838. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
  839. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  840. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +36 -0
  841. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  842. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
  843. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
  844. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
  845. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
  846. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  847. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  848. package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
  849. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  850. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  851. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  852. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  853. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  854. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  855. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  856. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  857. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
  858. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
  859. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -1
  860. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +57 -1
  861. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -1
  862. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  863. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  864. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
  865. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
  866. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
  867. package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
  868. package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
  869. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  870. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  871. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  872. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  873. package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
  874. package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
  875. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
  876. package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
  877. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
  878. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  879. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  880. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
  881. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  882. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  883. package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
  884. package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
  885. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  886. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  887. package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
  888. package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
  889. package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
  890. package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
  891. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  892. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  893. package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
  894. package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
  895. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
  896. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
  897. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
  898. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
  899. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
  900. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
  901. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
  902. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
  903. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
  904. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
  905. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
  906. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
  907. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
  908. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
  909. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
  910. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
  911. package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
  912. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -1
  913. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -1
  914. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
  915. package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
  916. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  917. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  918. package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
  919. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  920. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +20 -181
  921. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  922. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
  923. package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
  924. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  925. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  926. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +40 -0
  927. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -1
  928. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +43 -1
  929. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -1
  930. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +27 -17
  931. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  932. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +27 -17
  933. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  934. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +72 -0
  935. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  936. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +153 -10
  937. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  938. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  939. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  940. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -1
  941. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -1
  942. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +139 -1
  943. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -1
  944. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +474 -33
  945. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -1
  946. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +40 -0
  947. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -1
  948. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -1
  949. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -1
  950. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -1
  951. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +19 -0
  952. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -1
  953. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +38 -0
  954. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -1
  955. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
  956. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -1
  957. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -1
  958. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +17 -1
  959. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -1
  960. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +14 -0
  961. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -1
  962. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +16 -0
  963. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -1
  964. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -1
  965. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +1 -1
  966. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -1
  967. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +19 -0
  968. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -1
  969. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +45 -2
  970. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -1
  971. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
  972. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -1
  973. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +37 -1
  974. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -1
  975. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -1
  976. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -1
  977. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -1
  978. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -1
  979. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -1
  980. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
  981. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
  982. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
  983. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
  984. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
  985. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
  986. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
  987. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
  988. package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
  989. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
  990. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  991. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  992. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  993. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  994. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
  995. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
  996. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
  997. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
  998. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
  999. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
  1000. package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
  1001. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  1002. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  1003. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  1004. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  1005. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
  1006. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
  1007. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
  1008. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
  1009. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
  1010. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
  1011. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
  1012. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
  1013. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  1014. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  1015. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  1016. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  1017. package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
  1018. package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
  1019. package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
  1020. package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
  1021. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  1022. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  1023. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -1
  1024. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -1
  1025. package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
  1026. package/dist/esm/testing.d.ts.map +1 -1
  1027. package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
  1028. package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  1029. package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
  1030. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -1
  1031. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -1
  1032. package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
  1033. package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
  1034. package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
  1035. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1036. package/package.json +9 -9
  1037. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
  1038. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
  1039. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
  1040. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
  1041. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -0
  1042. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -0
  1043. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -0
  1044. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -0
  1045. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -0
  1046. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -0
  1047. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -0
  1048. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -0
  1049. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -0
  1050. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -0
  1051. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -0
  1052. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -0
  1053. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -0
  1054. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -0
  1055. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -0
  1056. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"user-provider-credential-resolver.port.js","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/user-provider-credential-resolver.port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG","sourcesContent":["/**\n * The port the provider registry consults for a PERSON's own credential.\n *\n * ## Why this is a second port and not a parameter on the organization's\n *\n * The two answer the same shape of question and mean different things, and the differences are the\n * kind that a shared port would have to represent as optional fields — which is how a caller ends\n * up able to describe a row that cannot exist.\n *\n * - **The owner differs, and so does the guarantee upstream.** An organization id reaches the\n * organization port from a tenant scope that several administrators share. A user id reaches this\n * one from the initiator's own identity, and there is no legitimate case where one person's call\n * resolves another person's credential — so a port that accepted either would be accepting an\n * argument whose safe range differs per member.\n * - **There is no fallback here, at all.** The organization's resolution has a documented second\n * place to look when a tenant has set nothing (the deployment environment, refused by the current\n * target resolver but still meaningful in the older per-organization path). A person's credential\n * has none: spending the deployment's shared principal on behalf of somebody who did not connect\n * an account would attribute the act to the wrong party at the vendor, and the vendor's own record\n * is the one that survives us.\n *\n * ## What `undefined` means, and what it must never mean\n *\n * `undefined` is \"this person has not connected this provider\" — an ordinary state, and the answer\n * a caller turns into a refusal naming what to connect. Anything else THROWS: a row that exists and\n * cannot be opened must never be reported as an absent one, because the two are indistinguishable to\n * the caller and only one of them is safe to treat as \"nothing configured\".\n */\n\nimport type { ProviderCredentialResolutionSource } from '@wildo-ai/saas-models';\n\n/** Which credential is being asked for. Every field is required — there is no wildcard lookup. */\nexport interface UserProviderCredentialQuery {\n /**\n * The person. Supplied by the CALLER from the initiator's own identity, never parsed out of a\n * request payload — the port has no way to verify it, so the guarantee has to hold upstream, and\n * the envelope binding below is what keeps a mistake there from becoming a disclosure.\n */\n userId: string;\n providerRef: string;\n /** The slug in the provider's `secretsContract`, the same identifier the env projection names. */\n secretSlug: string;\n}\n\n/** A credential that was found, opened, and is spendable. */\nexport interface UserProviderCredentialResolution {\n /** The plaintext credential. Never logged, never stored, never returned to a client. */\n value: string;\n /** The row it came from, for the audit trail. */\n credentialId: string;\n}\n\nexport interface UserProviderCredentialResolverPort {\n /**\n * The person's own credential, or `undefined` when they have not connected this provider.\n *\n * See the module JSDoc for why absence returns and unopenability throws.\n */\n resolveUserCredential(\n query: UserProviderCredentialQuery,\n ): Promise<UserProviderCredentialResolution | undefined>;\n}\n\n/**\n * Re-exported for the registry's own signatures so a consumer reading the resolution result does not\n * have to reach into the models package for the one enum that describes it.\n */\nexport type { ProviderCredentialResolutionSource };\n"]}
1
+ {"version":3,"file":"user-provider-credential-resolver.port.js","sourceRoot":"","sources":["../../../../src/security/connected-accounts/user-provider-credential-resolver.port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG","sourcesContent":["/**\n * The port the provider registry consults for a PERSON's own credential.\n *\n * ## Why this is a second port and not a parameter on the organization's\n *\n * The two answer the same shape of question and mean different things, and the differences are the\n * kind that a shared port would have to represent as optional fields — which is how a caller ends\n * up able to describe a row that cannot exist.\n *\n * - **The owner differs, and so does the guarantee upstream.** An organization id reaches the\n * organization port from a tenant scope that several administrators share. A user id reaches this\n * one from the initiator's own identity, and there is no legitimate case where one person's call\n * resolves another person's credential — so a port that accepted either would be accepting an\n * argument whose safe range differs per member.\n * - **There is no fallback here, at all.** The organization's resolution has a documented second\n * place to look when a tenant has set nothing (the deployment environment, refused by the current\n * target resolver but still meaningful in the older per-organization path). A person's credential\n * has none: spending the deployment's shared principal on behalf of somebody who did not connect\n * an account would attribute the act to the wrong party at the vendor, and the vendor's own record\n * is the one that survives us.\n *\n * ## What `undefined` means, and what it must never mean\n *\n * `undefined` is \"this person has not connected this provider\" — an ordinary state, and the answer\n * a caller turns into a refusal naming what to connect. Anything else THROWS: a row that exists and\n * cannot be opened must never be reported as an absent one, because the two are indistinguishable to\n * the caller and only one of them is safe to treat as \"nothing configured\".\n */\n\nimport type { ProviderCredentialResolutionSource } from '@wildo-ai/saas-models';\n\n/** Which credential is being asked for. Every field is required — there is no wildcard lookup. */\nexport interface UserProviderCredentialQuery {\n /**\n * The person. Supplied by the CALLER from the initiator's own identity, never parsed out of a\n * request payload — the port has no way to verify it, so the guarantee has to hold upstream, and\n * the envelope binding below is what keeps a mistake there from becoming a disclosure.\n */\n userId: string;\n providerRef: string;\n /** The slug in the provider's `secretsContract`, the same identifier the env projection names. */\n secretSlug: string;\n}\n\n/** A credential that was found, opened, and is spendable. */\nexport interface UserProviderCredentialResolution {\n /**\n * The plaintext credential. Never logged, never stored — and returned to a client by exactly ONE\n * door, the access-token route, which hands a person their own OAuth2 access token so a vendor's\n * picker can open as them (#394 P4). Every other caller keeps it server-side.\n */\n value: string;\n /** The row it came from, for the audit trail. */\n credentialId: string;\n /**\n * When the vendor said the access token expires — carried out for an OAuth2 grant so a browser\n * handed the token knows when to ask again, absent for a pasted credential.\n */\n expiresAt?: string;\n /** What the vendor granted, when it stated it. Lets a picker refuse to open with a scope it lacks rather than fail inside. */\n grantedScopes?: readonly string[];\n}\n\nexport interface UserProviderCredentialResolverPort {\n /**\n * The person's own credential, or `undefined` when they have not connected this provider.\n *\n * See the module JSDoc for why absence returns and unopenability throws.\n */\n resolveUserCredential(\n query: UserProviderCredentialQuery,\n ): Promise<UserProviderCredentialResolution | undefined>;\n\n /**\n * Stamp the person's row with what the provider said about the credential it just spent.\n *\n * Required, and on this port rather than a port of its own, for the reasons the organization port\n * states at its own member: the store that was READ must be the store that is STAMPED, and an\n * optional method would leave \"resolves credentials, records nothing\" representable — which is\n * exactly the state this subsystem shipped in.\n *\n * `credentialId` is REQUIRED here and optional on the organization's, and the asymmetry is the\n * fallback: an organization's resolution may legitimately have come from the deployment\n * environment, which has no row. A person's never can — there is nothing for a person to fall\n * through to — so a recorded use without a row to name would describe a resolution that cannot\n * happen.\n */\n recordCredentialUse(use: {\n userId: string;\n providerRef: string;\n secretSlug: string;\n credentialId: string;\n /** What the provider said. Absent means the outcome is not yet known to the caller. */\n outcome?: { accepted: boolean; providerMessage?: string };\n }): Promise<void>;\n}\n\n/**\n * Re-exported for the registry's own signatures so a consumer reading the resolution result does not\n * have to reach into the models package for the one enum that describes it.\n */\nexport type { ProviderCredentialResolutionSource };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-credential-envelope.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/security/connected-accounts/utils/provider-credential-envelope.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAIH,OAAO,EAAE,sCAAsC,EAAE,MAAM,sCAAsC,CAAC;AAwB9F;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,8BAA8B,CAAC;AAyB/E,wGAAwG;AACxG,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,sCAAsC,CAAC,YAAY,GAAG,sCAAsC,CAAC,IAAI,CAAC;IAC9G,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmDD,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,iCAAiC,GACzC,MAAM,CAsBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,iCAAiC,GACzC,MAAM,CAkER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAU1F"}
1
+ {"version":3,"file":"provider-credential-envelope.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/utils/provider-credential-envelope.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAIH,OAAO,EAAE,sCAAsC,EAAE,MAAM,sCAAsC,CAAC;AAwB9F;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,8BAA8B,CAAC;AAyB/E,wGAAwG;AACxG,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,sCAAsC,CAAC,YAAY,GAAG,sCAAsC,CAAC,IAAI,CAAC;IAC9G,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmDD,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,iCAAiC,GACzC,MAAM,CAsBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,iCAAiC,GACzC,MAAM,CAkER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAU1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-credential-envelope.backend.utils.js","sourceRoot":"","sources":["../../../../../../src/security/connected-accounts/utils/provider-credential-envelope.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Sealing an OWNER's provider credential at rest — an organization's, or a person's own.\n *\n * ## What this is for\n *\n * A credential toward a third party is stored in the application's own database, in a row its owner\n * can create over HTTP. A database backup, a snapshot handed to a support engineer, or a read\n * replica reached through an unrelated defect would otherwise expose every stored vendor credential\n * in plaintext. Sealing them does not make the store safe to lose — nothing does — but it means\n * losing the store is not the same event as losing every tenant's and every person's Slack, CRM and\n * SMTP access.\n *\n * ## The key is the platform's existing material, deliberately\n *\n * `secrets.security.session.encryptionKey` is provisioned for every application by the platform\n * (apps-manager mints it, the schema requires at least 32 characters, and readiness refuses an\n * application without one). Introducing a second key here would mean a second thing to provision, a\n * second thing to rotate, and a second way for an application to be half-configured — and the first\n * application to hit that would discover it as \"my credentials cannot be decrypted\", after the\n * values were already stored.\n *\n * The base key is NOT used directly. It is domain-separated through SHA-256 so this subsystem's key\n * is unrelated to the session subsystem's, and to the SIEM delivery subsystem's, even though all\n * three derive from the same material. Without the separator, a weakness or an oracle in one becomes\n * a weakness in the others.\n *\n * ## AES-256-GCM, and why authentication is the load-bearing half\n *\n * GCM authenticates as well as encrypts, so a modified ciphertext FAILS rather than decrypting to\n * garbage. That matters more than the confidentiality here: an attacker with write access to the\n * store but not the key must not be able to flip a tenant's credential to a value of their choosing,\n * or to swap tenant A's sealed credential into tenant B's row and have it silently work. The\n * associated data below closes the second half of that.\n *\n * ## The envelope BINDS the row's identity\n *\n * The additional authenticated data is the owner, the provider and the slug. Moving a sealed value\n * to a different owner, a different provider or a different slug therefore makes it fail to open —\n * the seal is not merely \"this is a secret\", it is \"this is THIS owner's secret for THIS provider\".\n * Cut-and-paste of ciphertext between rows is the attack a plain AES-GCM envelope would let through,\n * and it is exactly the attack a shared multi-tenant table invites.\n *\n * ## The SCOPE separates the KEY, not the associated data\n *\n * An organization's credential and a person's own credential are sealed under DIFFERENT derived\n * keys, selected by `ownerScope`. Two reasons, and the second is why it is the key rather than one\n * more field in the associated data.\n *\n * A key split is strictly stronger: with a scope field in the AAD, one derived key protects both\n * populations, so anything that compromises it compromises both. With separate keys, a user\n * envelope cannot be opened as an organization envelope even by an attacker who controls the AAD.\n *\n * And it PRESERVES what is already stored. Adding a component to the associated data changes the\n * AAD of every organization envelope ever written, so every credential in every live application\n * would stop opening the moment this file changed — the failure would surface as \"my Slack\n * integration broke\", far from the edit that caused it. Selecting the key domain by scope leaves\n * the organization derivation and the organization AAD byte-identical, so existing rows are\n * untouched by construction rather than by care.\n *\n * ## A second implementation exists, and this is not it\n *\n * `siem-webhook-delivery.backend.service.ts` carries a private AES-256-GCM envelope with the same\n * shape and its own domain separator. It is deliberately NOT reused or refactored here: that file\n * belongs to another workstream's territory, its envelope binds no associated data, and it tolerates\n * plaintext for rows written before it existed — a tolerance this subsystem must not inherit.\n * Converging the two is real work with a real migration, and it is recorded as such rather than done\n * opportunistically inside a security slice.\n */\n\nimport { createCipheriv, createDecipheriv, createHash, randomBytes, timingSafeEqual } from 'node:crypto';\n\nimport { ExternalProvider_Connection_OwnerScope } from '@wildo-ai/external-connectors-models';\n\n/**\n * Domain separators, one per owner scope. Changing one of these strings makes every credential\n * stored under it unopenable, so they are versioned constants rather than descriptions: if a\n * derivation ever has to change, the new scheme gets a new prefix and a migration, never an edit\n * here.\n *\n * The ORGANIZATION value predates the USER scope and is reproduced exactly — every organization\n * credential in every live application is sealed under it.\n *\n * Total over the two scopes that reach a store. APPLICATION is deliberately absent rather than\n * mapped to something: the application's own credential lives in the deployment environment and\n * never enters this module, so a call arriving with that scope is a routing defect, and giving it a\n * key would let the defect store a row instead of announcing itself.\n */\nconst PROVIDER_CREDENTIAL_KEY_DOMAINS: Readonly<Record<\n ExternalProvider_Connection_OwnerScope.ORGANIZATION | ExternalProvider_Connection_OwnerScope.USER,\n string\n>> = {\n [ExternalProvider_Connection_OwnerScope.ORGANIZATION]: 'wildo:organization-provider-credential:v1',\n [ExternalProvider_Connection_OwnerScope.USER]: 'wildo:user-provider-credential:v1',\n};\n\n/**\n * Envelope prefix. Present so a stored value can be RECOGNISED as sealed without attempting to\n * decrypt it — which is what lets the write path refuse to persist an unsealed value, rather than\n * discovering the problem at read time when the plaintext is already at rest.\n */\nexport const PROVIDER_CREDENTIAL_ENVELOPE_PREFIX = 'wildo-sealed:aes-256-gcm:';\n\n/** 96 bits — the GCM nonce size every implementation agrees on. */\nconst IV_BYTE_LENGTH = 12;\nconst AUTH_TAG_BYTE_LENGTH = 16;\n\n/**\n * An even-length run of hex digits and nothing else.\n *\n * Even-length because two hex characters encode one byte — an odd-length component cannot have come\n * from `Buffer.toString('hex')`, and `Buffer.from` would drop the trailing nibble without complaint.\n */\nconst STRICT_HEX = /^(?:[0-9a-fA-F]{2})+$/;\n\n/**\n * The separator inside the associated data.\n *\n * A NUL, not a colon, and that is what makes the encoding injective: with a `:` join,\n * `('org', 'a:b', 'c')` and `('org', 'a', 'b:c')` produce IDENTICAL associated data, so a sealed\n * value could be moved between two rows whose identities differ only in where a colon falls. A NUL\n * cannot appear in any of the three components — they come from an id generator and from\n * schema-validated identifiers — so no two distinct identities can collide.\n */\nconst BINDING_SEPARATOR = '\\u0000';\n\n/** Raised when a sealed value cannot be sealed or opened. Never carries the value or any part of it. */\nexport class ProviderCredentialEnvelopeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ProviderCredentialEnvelopeError';\n }\n}\n\n/**\n * The row identity a sealed value is bound to. All four are required — see the module JSDoc.\n *\n * `ownerId` is the organization id or the user id, per `ownerScope`. One field rather than two\n * optional ones, because exactly one owner exists per row and a shape with two nullable ids can\n * represent a row with neither — a state the seal would then bind to nothing.\n */\nexport interface ProviderCredentialEnvelopeBinding {\n ownerScope: ExternalProvider_Connection_OwnerScope.ORGANIZATION | ExternalProvider_Connection_OwnerScope.USER;\n ownerId: string;\n providerRef: string;\n secretSlug: string;\n}\n\n/**\n * Derive this subsystem's 32-byte key for one owner scope from the platform's base key material.\n *\n * The refusal on a short or absent base key is deliberate and loud. The alternative — deriving from\n * whatever is there — would produce a working seal from a misconfigured application, and every\n * credential stored under it would be protected by a key an attacker could guess. A configuration\n * error must not be survivable here.\n *\n * The refusal on an unknown scope is the same posture applied to the routing question: a scope with\n * no domain must not silently fall back to another scope's key, because that would seal a person's\n * credential under the tenant key and make it openable by the wrong half of the system.\n */\nfunction deriveProviderCredentialKey(\n baseEncryptionKey: string,\n ownerScope: ProviderCredentialEnvelopeBinding['ownerScope'],\n): Buffer {\n if (typeof baseEncryptionKey !== 'string' || baseEncryptionKey.length < 32) {\n throw new ProviderCredentialEnvelopeError(\n 'Cannot seal or open a provider credential: the application\\'s '\n + 'secrets.security.session.encryptionKey is absent or shorter than the 32 characters the platform '\n + 'guarantees. This is a provisioning fault, not a runtime condition — an application reaching this '\n + 'point would store credentials under a guessable key.',\n );\n }\n const domain = PROVIDER_CREDENTIAL_KEY_DOMAINS[ownerScope];\n if (!domain) {\n throw new ProviderCredentialEnvelopeError(\n `Cannot seal or open a provider credential owned at scope '${ownerScope}': only ORGANIZATION and USER `\n + 'credentials are stored. An APPLICATION credential lives in the deployment environment and never '\n + 'reaches this module, so arriving here with one is a resolution defect rather than a missing key.',\n );\n }\n return createHash('sha256').update(`${domain}:${baseEncryptionKey}`).digest();\n}\n\n/**\n * The additional authenticated data — the row identity, unambiguously encoded.\n *\n * The SCOPE is deliberately not a component: it selects the key instead (module JSDoc), which both\n * separates the two populations more strongly and leaves the encoding of an organization row exactly\n * as it was before the USER scope existed.\n */\nfunction encodeBinding(binding: ProviderCredentialEnvelopeBinding): Buffer {\n return Buffer.from(\n [binding.ownerId, binding.providerRef, binding.secretSlug].join(BINDING_SEPARATOR),\n 'utf8',\n );\n}\n\n/** Whether a stored value is a sealed envelope. Cheap, and does not need the key. */\nexport function isSealedProviderCredential(value: string | undefined | null): boolean {\n return typeof value === 'string' && value.startsWith(PROVIDER_CREDENTIAL_ENVELOPE_PREFIX);\n}\n\n/**\n * Seal a plaintext credential for storage.\n *\n * Format: `wildo-sealed:aes-256-gcm:<iv hex>:<auth tag hex>:<ciphertext hex>`.\n */\nexport function sealProviderCredential(\n plaintext: string,\n baseEncryptionKey: string,\n binding: ProviderCredentialEnvelopeBinding,\n): string {\n if (typeof plaintext !== 'string' || plaintext.length === 0) {\n throw new ProviderCredentialEnvelopeError('Refusing to seal an empty provider credential.');\n }\n // Sealing an already-sealed value would double-wrap it, and the second open would return an\n // envelope string that a provider would then receive as its credential. Refuse rather than nest.\n if (isSealedProviderCredential(plaintext)) {\n throw new ProviderCredentialEnvelopeError(\n 'Refusing to seal a value that is already a sealed envelope — double-sealing would hand the envelope '\n + 'itself to the provider on the next open.',\n );\n }\n\n const key = deriveProviderCredentialKey(baseEncryptionKey, binding.ownerScope);\n const iv = randomBytes(IV_BYTE_LENGTH);\n const cipher = createCipheriv('aes-256-gcm', key, iv);\n cipher.setAAD(encodeBinding(binding));\n\n const ciphertext = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);\n const authTag = cipher.getAuthTag();\n\n return `${PROVIDER_CREDENTIAL_ENVELOPE_PREFIX}${iv.toString('hex')}:${authTag.toString('hex')}:${ciphertext.toString('hex')}`;\n}\n\n/**\n * Open a sealed credential.\n *\n * Every failure — a malformed envelope, a wrong key, a tampered ciphertext, a value lifted from\n * another tenant's row — raises the SAME error type with a message that names the row and nothing\n * else. Distinguishing the causes in the message would tell an attacker holding write access which\n * of their manipulations got closer.\n *\n * Plaintext is REFUSED rather than passed through. The SIEM sibling tolerates it because it has rows\n * predating its own encryption; this subsystem shipped sealed, so a plaintext value in the store can\n * only mean the write path was bypassed — a fact worth failing on, not one worth quietly working\n * around.\n */\nexport function openProviderCredential(\n sealedValue: string,\n baseEncryptionKey: string,\n binding: ProviderCredentialEnvelopeBinding,\n): string {\n const rowDescription =\n `${binding.ownerScope} '${binding.ownerId}', provider '${binding.providerRef}', slug '${binding.secretSlug}'`;\n\n if (!isSealedProviderCredential(sealedValue)) {\n throw new ProviderCredentialEnvelopeError(\n `Stored provider credential for ${rowDescription} is not a sealed envelope. Credentials are sealed on `\n + 'write, so an unsealed value means the row was written by something other than the credential write '\n + 'path. Rotate it through the credential resource.',\n );\n }\n\n const parts = sealedValue.slice(PROVIDER_CREDENTIAL_ENVELOPE_PREFIX.length).split(':');\n if (parts.length !== 3) {\n throw new ProviderCredentialEnvelopeError(`Provider credential for ${rowDescription} cannot be opened.`);\n }\n const [ivHex, authTagHex, ciphertextHex] = parts as [string, string, string];\n\n try {\n // STRICT hex first, before any decoding. `Buffer.from(value, 'hex')` does not throw on invalid\n // input — it silently STOPS at the first non-hex character and returns the prefix it managed to\n // decode. So a stored envelope with trailing garbage would decode to exactly the original bytes\n // and open successfully, and a component with junk in the middle would decode to a short buffer\n // that the length checks below might still accept.\n //\n // That is not a break of the seal (GCM still authenticates the bytes it is given, so nobody can\n // CHANGE the credential this way) but it does mean a value that is not what was written could be\n // accepted as if it were. This module's posture everywhere else is that a stored value which the\n // write path could not have produced is a fault worth failing on, and this is the same rule.\n // Found by a pin whose \"tampered\" fixture appended non-hex characters and opened anyway.\n if (!STRICT_HEX.test(ivHex) || !STRICT_HEX.test(authTagHex) || !STRICT_HEX.test(ciphertextHex)) {\n throw new Error('malformed envelope components');\n }\n\n const iv = Buffer.from(ivHex, 'hex');\n const authTag = Buffer.from(authTagHex, 'hex');\n const ciphertext = Buffer.from(ciphertextHex, 'hex');\n\n // `createDecipheriv` accepts a wrong-length IV for GCM, and a wrong-length tag is rejected only\n // at `final()`. Both are checked here: a truncated tag is the classic GCM forgery attempt, and it\n // should be refused before any decryption work happens.\n if (iv.length !== IV_BYTE_LENGTH || authTag.length !== AUTH_TAG_BYTE_LENGTH || ciphertext.length === 0) {\n throw new Error('malformed envelope components');\n }\n\n const key = deriveProviderCredentialKey(baseEncryptionKey, binding.ownerScope);\n const decipher = createDecipheriv('aes-256-gcm', key, iv);\n decipher.setAAD(encodeBinding(binding));\n decipher.setAuthTag(authTag);\n\n const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');\n if (plaintext.length === 0) {\n throw new Error('empty plaintext');\n }\n return plaintext;\n } catch (error) {\n // The cause is deliberately NOT propagated: a crypto-layer message is uninformative to an\n // operator and informative to an attacker probing the envelope.\n if (error instanceof ProviderCredentialEnvelopeError) {\n throw error;\n }\n throw new ProviderCredentialEnvelopeError(\n `Provider credential for ${rowDescription} cannot be opened. Either it was sealed under different key `\n + 'material, or the stored value has been altered. Rotate the credential through the credential resource.',\n );\n }\n}\n\n/**\n * Whether two sealed envelopes are byte-identical, WITHOUT opening either.\n *\n * Returns false whenever it cannot tell — which, because the IV is random per seal, is almost always\n * for two independent seals of the same secret. That is the honest answer and the reason this\n * exists: the write path needs to know whether the stored value actually changed so it can emit a\n * rotation event rather than a set event, and the only alternative was to open both and compare\n * plaintexts, which puts two secrets in memory to answer a bookkeeping question. A false negative\n * costs a slightly noisier audit trail; opening the values costs the property this module exists to\n * hold.\n */\nexport function sealedProviderCredentialsAreIdentical(left: string, right: string): boolean {\n if (!isSealedProviderCredential(left) || !isSealedProviderCredential(right)) {\n return false;\n }\n const leftBuffer = Buffer.from(left, 'utf8');\n const rightBuffer = Buffer.from(right, 'utf8');\n if (leftBuffer.length !== rightBuffer.length) {\n return false;\n }\n return timingSafeEqual(leftBuffer, rightBuffer);\n}\n"]}
1
+ {"version":3,"file":"provider-credential-envelope.backend.utils.js","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/utils/provider-credential-envelope.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Sealing an OWNER's provider credential at rest — an organization's, or a person's own.\n *\n * ## What this is for\n *\n * A credential toward a third party is stored in the application's own database, in a row its owner\n * can create over HTTP. A database backup, a snapshot handed to a support engineer, or a read\n * replica reached through an unrelated defect would otherwise expose every stored vendor credential\n * in plaintext. Sealing them does not make the store safe to lose — nothing does — but it means\n * losing the store is not the same event as losing every tenant's and every person's Slack, CRM and\n * SMTP access.\n *\n * ## The key is the platform's existing material, deliberately\n *\n * `secrets.security.session.encryptionKey` is provisioned for every application by the platform\n * (apps-manager mints it, the schema requires at least 32 characters, and readiness refuses an\n * application without one). Introducing a second key here would mean a second thing to provision, a\n * second thing to rotate, and a second way for an application to be half-configured — and the first\n * application to hit that would discover it as \"my credentials cannot be decrypted\", after the\n * values were already stored.\n *\n * The base key is NOT used directly. It is domain-separated through SHA-256 so this subsystem's key\n * is unrelated to the session subsystem's, and to the SIEM delivery subsystem's, even though all\n * three derive from the same material. Without the separator, a weakness or an oracle in one becomes\n * a weakness in the others.\n *\n * ## AES-256-GCM, and why authentication is the load-bearing half\n *\n * GCM authenticates as well as encrypts, so a modified ciphertext FAILS rather than decrypting to\n * garbage. That matters more than the confidentiality here: an attacker with write access to the\n * store but not the key must not be able to flip a tenant's credential to a value of their choosing,\n * or to swap tenant A's sealed credential into tenant B's row and have it silently work. The\n * associated data below closes the second half of that.\n *\n * ## The envelope BINDS the row's identity\n *\n * The additional authenticated data is the owner, the provider and the slug. Moving a sealed value\n * to a different owner, a different provider or a different slug therefore makes it fail to open —\n * the seal is not merely \"this is a secret\", it is \"this is THIS owner's secret for THIS provider\".\n * Cut-and-paste of ciphertext between rows is the attack a plain AES-GCM envelope would let through,\n * and it is exactly the attack a shared multi-tenant table invites.\n *\n * ## The SCOPE separates the KEY, not the associated data\n *\n * An organization's credential and a person's own credential are sealed under DIFFERENT derived\n * keys, selected by `ownerScope`. Two reasons, and the second is why it is the key rather than one\n * more field in the associated data.\n *\n * A key split is strictly stronger: with a scope field in the AAD, one derived key protects both\n * populations, so anything that compromises it compromises both. With separate keys, a user\n * envelope cannot be opened as an organization envelope even by an attacker who controls the AAD.\n *\n * And it PRESERVES what is already stored. Adding a component to the associated data changes the\n * AAD of every organization envelope ever written, so every credential in every live application\n * would stop opening the moment this file changed — the failure would surface as \"my Slack\n * integration broke\", far from the edit that caused it. Selecting the key domain by scope leaves\n * the organization derivation and the organization AAD byte-identical, so existing rows are\n * untouched by construction rather than by care.\n *\n * ## A second implementation exists, and this is not it\n *\n * `siem-webhook-delivery.backend.service.ts` carries a private AES-256-GCM envelope with the same\n * shape and its own domain separator. It is deliberately NOT reused or refactored here: that file\n * belongs to another workstream's territory, its envelope binds no associated data, and it tolerates\n * plaintext for rows written before it existed — a tolerance this subsystem must not inherit.\n * Converging the two is real work with a real migration, and it is recorded as such rather than done\n * opportunistically inside a security slice.\n */\n\nimport { createCipheriv, createDecipheriv, createHash, randomBytes, timingSafeEqual } from 'node:crypto';\n\nimport { ExternalProvider_Connection_OwnerScope } from '@wildo-ai/external-connectors-models';\n\n/**\n * Domain separators, one per owner scope. Changing one of these strings makes every credential\n * stored under it unopenable, so they are versioned constants rather than descriptions: if a\n * derivation ever has to change, the new scheme gets a new prefix and a migration, never an edit\n * here.\n *\n * The ORGANIZATION value predates the USER scope and is reproduced exactly — every organization\n * credential in every live application is sealed under it.\n *\n * Total over the two scopes that reach a store. APPLICATION is deliberately absent rather than\n * mapped to something: the application's own credential lives in the deployment environment and\n * never enters this module, so a call arriving with that scope is a routing defect, and giving it a\n * key would let the defect store a row instead of announcing itself.\n */\nconst PROVIDER_CREDENTIAL_KEY_DOMAINS: Readonly<Record<\n ExternalProvider_Connection_OwnerScope.ORGANIZATION | ExternalProvider_Connection_OwnerScope.USER,\n string\n>> = {\n [ExternalProvider_Connection_OwnerScope.ORGANIZATION]: 'wildo:organization-provider-credential:v1',\n [ExternalProvider_Connection_OwnerScope.USER]: 'wildo:user-provider-credential:v1',\n};\n\n/**\n * Envelope prefix. Present so a stored value can be RECOGNISED as sealed without attempting to\n * decrypt it — which is what lets the write path refuse to persist an unsealed value, rather than\n * discovering the problem at read time when the plaintext is already at rest.\n */\nexport const PROVIDER_CREDENTIAL_ENVELOPE_PREFIX = 'wildo-sealed:aes-256-gcm:';\n\n/** 96 bits — the GCM nonce size every implementation agrees on. */\nconst IV_BYTE_LENGTH = 12;\nconst AUTH_TAG_BYTE_LENGTH = 16;\n\n/**\n * An even-length run of hex digits and nothing else.\n *\n * Even-length because two hex characters encode one byte — an odd-length component cannot have come\n * from `Buffer.toString('hex')`, and `Buffer.from` would drop the trailing nibble without complaint.\n */\nconst STRICT_HEX = /^(?:[0-9a-fA-F]{2})+$/;\n\n/**\n * The separator inside the associated data.\n *\n * A NUL, not a colon, and that is what makes the encoding injective: with a `:` join,\n * `('org', 'a:b', 'c')` and `('org', 'a', 'b:c')` produce IDENTICAL associated data, so a sealed\n * value could be moved between two rows whose identities differ only in where a colon falls. A NUL\n * cannot appear in any of the three components — they come from an id generator and from\n * schema-validated identifiers — so no two distinct identities can collide.\n */\nconst BINDING_SEPARATOR = '\\u0000';\n\n/** Raised when a sealed value cannot be sealed or opened. Never carries the value or any part of it. */\nexport class ProviderCredentialEnvelopeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ProviderCredentialEnvelopeError';\n }\n}\n\n/**\n * The row identity a sealed value is bound to. All four are required — see the module JSDoc.\n *\n * `ownerId` is the organization id or the user id, per `ownerScope`. One field rather than two\n * optional ones, because exactly one owner exists per row and a shape with two nullable ids can\n * represent a row with neither — a state the seal would then bind to nothing.\n */\nexport interface ProviderCredentialEnvelopeBinding {\n ownerScope: ExternalProvider_Connection_OwnerScope.ORGANIZATION | ExternalProvider_Connection_OwnerScope.USER;\n ownerId: string;\n providerRef: string;\n secretSlug: string;\n}\n\n/**\n * Derive this subsystem's 32-byte key for one owner scope from the platform's base key material.\n *\n * The refusal on a short or absent base key is deliberate and loud. The alternative — deriving from\n * whatever is there — would produce a working seal from a misconfigured application, and every\n * credential stored under it would be protected by a key an attacker could guess. A configuration\n * error must not be survivable here.\n *\n * The refusal on an unknown scope is the same posture applied to the routing question: a scope with\n * no domain must not silently fall back to another scope's key, because that would seal a person's\n * credential under the tenant key and make it openable by the wrong half of the system.\n */\nfunction deriveProviderCredentialKey(\n baseEncryptionKey: string,\n ownerScope: ProviderCredentialEnvelopeBinding['ownerScope'],\n): Buffer {\n if (typeof baseEncryptionKey !== 'string' || baseEncryptionKey.length < 32) {\n throw new ProviderCredentialEnvelopeError(\n 'Cannot seal or open a provider credential: the application\\'s '\n + 'secrets.security.session.encryptionKey is absent or shorter than the 32 characters the platform '\n + 'guarantees. This is a provisioning fault, not a runtime condition — an application reaching this '\n + 'point would store credentials under a guessable key.',\n );\n }\n const domain = PROVIDER_CREDENTIAL_KEY_DOMAINS[ownerScope];\n if (!domain) {\n throw new ProviderCredentialEnvelopeError(\n `Cannot seal or open a provider credential owned at scope '${ownerScope}': only ORGANIZATION and USER `\n + 'credentials are stored. An APPLICATION credential lives in the deployment environment and never '\n + 'reaches this module, so arriving here with one is a resolution defect rather than a missing key.',\n );\n }\n return createHash('sha256').update(`${domain}:${baseEncryptionKey}`).digest();\n}\n\n/**\n * The additional authenticated data — the row identity, unambiguously encoded.\n *\n * The SCOPE is deliberately not a component: it selects the key instead (module JSDoc), which both\n * separates the two populations more strongly and leaves the encoding of an organization row exactly\n * as it was before the USER scope existed.\n */\nfunction encodeBinding(binding: ProviderCredentialEnvelopeBinding): Buffer {\n return Buffer.from(\n [binding.ownerId, binding.providerRef, binding.secretSlug].join(BINDING_SEPARATOR),\n 'utf8',\n );\n}\n\n/** Whether a stored value is a sealed envelope. Cheap, and does not need the key. */\nexport function isSealedProviderCredential(value: string | undefined | null): boolean {\n return typeof value === 'string' && value.startsWith(PROVIDER_CREDENTIAL_ENVELOPE_PREFIX);\n}\n\n/**\n * Seal a plaintext credential for storage.\n *\n * Format: `wildo-sealed:aes-256-gcm:<iv hex>:<auth tag hex>:<ciphertext hex>`.\n */\nexport function sealProviderCredential(\n plaintext: string,\n baseEncryptionKey: string,\n binding: ProviderCredentialEnvelopeBinding,\n): string {\n if (typeof plaintext !== 'string' || plaintext.length === 0) {\n throw new ProviderCredentialEnvelopeError('Refusing to seal an empty provider credential.');\n }\n // Sealing an already-sealed value would double-wrap it, and the second open would return an\n // envelope string that a provider would then receive as its credential. Refuse rather than nest.\n if (isSealedProviderCredential(plaintext)) {\n throw new ProviderCredentialEnvelopeError(\n 'Refusing to seal a value that is already a sealed envelope — double-sealing would hand the envelope '\n + 'itself to the provider on the next open.',\n );\n }\n\n const key = deriveProviderCredentialKey(baseEncryptionKey, binding.ownerScope);\n const iv = randomBytes(IV_BYTE_LENGTH);\n const cipher = createCipheriv('aes-256-gcm', key, iv);\n cipher.setAAD(encodeBinding(binding));\n\n const ciphertext = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);\n const authTag = cipher.getAuthTag();\n\n return `${PROVIDER_CREDENTIAL_ENVELOPE_PREFIX}${iv.toString('hex')}:${authTag.toString('hex')}:${ciphertext.toString('hex')}`;\n}\n\n/**\n * Open a sealed credential.\n *\n * Every failure — a malformed envelope, a wrong key, a tampered ciphertext, a value lifted from\n * another tenant's row — raises the SAME error type with a message that names the row and nothing\n * else. Distinguishing the causes in the message would tell an attacker holding write access which\n * of their manipulations got closer.\n *\n * Plaintext is REFUSED rather than passed through. The SIEM sibling tolerates it because it has rows\n * predating its own encryption; this subsystem shipped sealed, so a plaintext value in the store can\n * only mean the write path was bypassed — a fact worth failing on, not one worth quietly working\n * around.\n */\nexport function openProviderCredential(\n sealedValue: string,\n baseEncryptionKey: string,\n binding: ProviderCredentialEnvelopeBinding,\n): string {\n const rowDescription =\n `${binding.ownerScope} '${binding.ownerId}', provider '${binding.providerRef}', slug '${binding.secretSlug}'`;\n\n if (!isSealedProviderCredential(sealedValue)) {\n throw new ProviderCredentialEnvelopeError(\n `Stored provider credential for ${rowDescription} is not a sealed envelope. Credentials are sealed on `\n + 'write, so an unsealed value means the row was written by something other than the credential write '\n + 'path. Rotate it through the credential resource.',\n );\n }\n\n const parts = sealedValue.slice(PROVIDER_CREDENTIAL_ENVELOPE_PREFIX.length).split(':');\n if (parts.length !== 3) {\n throw new ProviderCredentialEnvelopeError(`Provider credential for ${rowDescription} cannot be opened.`);\n }\n const [ivHex, authTagHex, ciphertextHex] = parts as [string, string, string];\n\n try {\n // STRICT hex first, before any decoding. `Buffer.from(value, 'hex')` does not throw on invalid\n // input — it silently STOPS at the first non-hex character and returns the prefix it managed to\n // decode. So a stored envelope with trailing garbage would decode to exactly the original bytes\n // and open successfully, and a component with junk in the middle would decode to a short buffer\n // that the length checks below might still accept.\n //\n // That is not a break of the seal (GCM still authenticates the bytes it is given, so nobody can\n // CHANGE the credential this way) but it does mean a value that is not what was written could be\n // accepted as if it were. This module's posture everywhere else is that a stored value which the\n // write path could not have produced is a fault worth failing on, and this is the same rule.\n // Found by a pin whose \"tampered\" fixture appended non-hex characters and opened anyway.\n if (!STRICT_HEX.test(ivHex) || !STRICT_HEX.test(authTagHex) || !STRICT_HEX.test(ciphertextHex)) {\n throw new Error('malformed envelope components');\n }\n\n const iv = Buffer.from(ivHex, 'hex');\n const authTag = Buffer.from(authTagHex, 'hex');\n const ciphertext = Buffer.from(ciphertextHex, 'hex');\n\n // `createDecipheriv` accepts a wrong-length IV for GCM, and a wrong-length tag is rejected only\n // at `final()`. Both are checked here: a truncated tag is the classic GCM forgery attempt, and it\n // should be refused before any decryption work happens.\n if (iv.length !== IV_BYTE_LENGTH || authTag.length !== AUTH_TAG_BYTE_LENGTH || ciphertext.length === 0) {\n throw new Error('malformed envelope components');\n }\n\n const key = deriveProviderCredentialKey(baseEncryptionKey, binding.ownerScope);\n const decipher = createDecipheriv('aes-256-gcm', key, iv);\n decipher.setAAD(encodeBinding(binding));\n decipher.setAuthTag(authTag);\n\n const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');\n if (plaintext.length === 0) {\n throw new Error('empty plaintext');\n }\n return plaintext;\n } catch (error) {\n // The cause is deliberately NOT propagated: a crypto-layer message is uninformative to an\n // operator and informative to an attacker probing the envelope.\n if (error instanceof ProviderCredentialEnvelopeError) {\n throw error;\n }\n throw new ProviderCredentialEnvelopeError(\n `Provider credential for ${rowDescription} cannot be opened. Either it was sealed under different key `\n + 'material, or the stored value has been altered. Rotate the credential through the credential resource.',\n );\n }\n}\n\n/**\n * Whether two sealed envelopes are byte-identical, WITHOUT opening either.\n *\n * Returns false whenever it cannot tell — which, because the IV is random per seal, is almost always\n * for two independent seals of the same secret. That is the honest answer and the reason this\n * exists: the write path needs to know whether the stored value actually changed so it can emit a\n * rotation event rather than a set event, and the only alternative was to open both and compare\n * plaintexts, which puts two secrets in memory to answer a bookkeeping question. A false negative\n * costs a slightly noisier audit trail; opening the values costs the property this module exists to\n * hold.\n */\nexport function sealedProviderCredentialsAreIdentical(left: string, right: string): boolean {\n if (!isSealedProviderCredential(left) || !isSealedProviderCredential(right)) {\n return false;\n }\n const leftBuffer = Buffer.from(left, 'utf8');\n const rightBuffer = Buffer.from(right, 'utf8');\n if (leftBuffer.length !== rightBuffer.length) {\n return false;\n }\n return timingSafeEqual(leftBuffer, rightBuffer);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"stored-credential-value.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/security/connected-accounts/utils/stored-credential-value.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,mGAAmG;AACnG,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;AACnB;;;;;;;GAOG;AACH,UAAU,UAAQ,GACjB,wBAAwB,CAmC1B"}
1
+ {"version":3,"file":"stored-credential-value.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/utils/stored-credential-value.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,mGAAmG;AACnG,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;AACnB;;;;;;;GAOG;AACH,UAAU,UAAQ,GACjB,wBAAwB,CAmC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"stored-credential-value.backend.utils.js","sourceRoot":"","sources":["../../../../../../src/security/connected-accounts/utils/stored-credential-value.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAEhC,MAAM,uBAAuB,CAAC;AAE/B,mGAAmG;AACnG,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AA4BD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAiB,EACjB,WAAmB;AACnB;;;;;;;GAOG;AACH,UAAU,GAAG,KAAK;IAElB,gGAAgG;IAChG,iGAAiG;IACjG,gGAAgG;IAChG,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,0EAA0E;QAC1E,EAAE;QACF,8FAA8F;QAC9F,8FAA8F;QAC9F,iGAAiG;QACjG,+FAA+F;QAC/F,WAAW;QACX,EAAE;QACF,+FAA+F;QAC/F,2FAA2F;QAC3F,gGAAgG;QAChG,+FAA+F;QAC/F,gGAAgG;QAChG,iGAAiG;QACjG,MAAM,IAAI,0BAA0B,CAClC,wBAAwB,WAAW,6DAA6D;cAC9F,6FAA6F;cAC7F,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC","sourcesContent":["/**\n * Turning what a credential row STORES into what goes on the wire.\n *\n * Two things can be sealed into `secretValue`, and they are spent differently:\n *\n * - a credential a person PASTED, which is already the wire value;\n * - an OAuth2 grant a vendor MINTED, whose wire value is one field of a JSON document.\n *\n * This is the single place that distinction is resolved. It exists as one function rather than a\n * branch in each store because both stores — organization and user — hold both shapes, and an\n * invariant applied at one of its two call sites is this repository's most repeated defect. The\n * failure it prevents is specific and silent: a store that returned the opened plaintext directly\n * would put `wildo-oauth2-grant:{\"kind\":…}` on the wire as a bearer token, and the vendor's 401\n * would name a credential problem rather than a serialization one.\n *\n * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the token actually presented to a\n * third party is derived from the stored grant rather than from whatever the field happens to hold.\n */\n\nimport {\n parseProviderOAuth2Grant,\n providerOAuth2GrantNeedsRefresh,\n type ProviderOAuth2Grant,\n} from '@wildo-ai/saas-models';\n\n/** Raised when a stored credential cannot be turned into a wire value. Never carries the value. */\nexport class StoredCredentialValueError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'StoredCredentialValueError';\n }\n}\n\nexport interface ResolvedStoredCredential {\n /**\n * What goes in the Authorization header.\n *\n * Empty string when {@link needsRefresh} is set — there is no honest wire value for a grant that\n * must be renewed first, and returning the expired token would let a caller that ignored the flag\n * send it. A caller must branch on `needsRefresh` before reading this.\n */\n readonly wireValue: string;\n /**\n * The grant is expiring and a refresher is available: the caller must renew it, persist the\n * result, and use the renewed access token.\n *\n * A FLAG rather than a refresh performed here, because renewing needs the provider contract and\n * the application's registration while persisting needs the table and the envelope key — and this\n * function is a pure transformation with neither.\n */\n readonly needsRefresh?: true;\n /**\n * The grant it came from, when it came from one. Carried out so a caller can record what the\n * vendor granted, or refresh it — and ABSENT for a pasted credential, which is what lets a caller\n * tell the two apart without re-parsing.\n */\n readonly grant?: ProviderOAuth2Grant;\n}\n\n/**\n * Resolve the opened plaintext of one credential row into the value a request should carry.\n *\n * @param plaintext the opened envelope contents — already decrypted, never the sealed form.\n * @param describeRow how to name the row in a refusal. Never the value, and never the owner's id\n * alone: an operator reading a log needs the provider and slug to act.\n */\nexport function resolveStoredCredentialValue(\n plaintext: string,\n describeRow: string,\n /**\n * Whether the caller can actually renew an expiring grant.\n *\n * Passed in rather than assumed, so the two outcomes stay distinguishable: with a refresher this\n * returns `needsRefresh` and the caller renews; without one it REFUSES, naming the missing\n * subsystem. Defaulting to \"yes\" would have a store with no refresher return `needsRefresh` and\n * then dereference a refresher it does not hold.\n */\n canRefresh = false,\n): ResolvedStoredCredential {\n // Throws when the value announces itself as a grant and is not one — deliberately not caught. A\n // credential claiming a shape it does not have was written by something other than the exchange,\n // and falling back to \"treat it as pasted\" would send the malformed document itself as a token.\n const grant = parseProviderOAuth2Grant(plaintext);\n if (grant === undefined) {\n return { wireValue: plaintext };\n }\n\n if (providerOAuth2GrantNeedsRefresh(grant)) {\n if (canRefresh) {\n return { wireValue: '', grant, needsRefresh: true };\n }\n // Fail CLOSED, and name the missing subsystem rather than the credential.\n //\n // The alternative — send it anyway and let the vendor reject it — was rejected: the 401 comes\n // back as an authentication failure, the row is stamped INVALID, and the person reading their\n // connections is told their credential is bad when it is merely stale. That is a false statement\n // about their account, and it points them at reconnecting rather than at the refresh that does\n // not run.\n //\n // The population is NO LONGER empty. This was written when nothing could store a grant, so the\n // refusal was unreachable; the authorization exchange has since landed and real grants are\n // stored, which makes this the live answer whenever a store is constructed without a refresher.\n // The engine's container always binds one — pinned in `container-boot-graph-resolves.test.ts`,\n // because the injection is `@optional()` and an absent binding is otherwise silent for about an\n // hour. So reaching this in a running application means the wiring is wrong, not the credential.\n throw new StoredCredentialValueError(\n `The OAuth2 grant for ${describeRow} has expired or is within the refresh window, and no token `\n + 'refresher is wired to renew it. The stored credential is not at fault — reconnecting would '\n + 'work, and so would the refresh exchange once it exists.',\n );\n }\n\n return { wireValue: grant.accessToken, grant };\n}\n"]}
1
+ {"version":3,"file":"stored-credential-value.backend.utils.js","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/utils/stored-credential-value.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAEhC,MAAM,uBAAuB,CAAC;AAE/B,mGAAmG;AACnG,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AA4BD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAiB,EACjB,WAAmB;AACnB;;;;;;;GAOG;AACH,UAAU,GAAG,KAAK;IAElB,gGAAgG;IAChG,iGAAiG;IACjG,gGAAgG;IAChG,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,0EAA0E;QAC1E,EAAE;QACF,8FAA8F;QAC9F,8FAA8F;QAC9F,iGAAiG;QACjG,+FAA+F;QAC/F,WAAW;QACX,EAAE;QACF,+FAA+F;QAC/F,2FAA2F;QAC3F,gGAAgG;QAChG,+FAA+F;QAC/F,gGAAgG;QAChG,iGAAiG;QACjG,MAAM,IAAI,0BAA0B,CAClC,wBAAwB,WAAW,6DAA6D;cAC9F,6FAA6F;cAC7F,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC","sourcesContent":["/**\n * Turning what a credential row STORES into what goes on the wire.\n *\n * Two things can be sealed into `secretValue`, and they are spent differently:\n *\n * - a credential a person PASTED, which is already the wire value;\n * - an OAuth2 grant a vendor MINTED, whose wire value is one field of a JSON document.\n *\n * This is the single place that distinction is resolved. It exists as one function rather than a\n * branch in each store because both stores — organization and user — hold both shapes, and an\n * invariant applied at one of its two call sites is this repository's most repeated defect. The\n * failure it prevents is specific and silent: a store that returned the opened plaintext directly\n * would put `wildo-oauth2-grant:{\"kind\":…}` on the wire as a bearer token, and the vendor's 401\n * would name a credential problem rather than a serialization one.\n *\n * assurance-control: WILDO.IDENTITY.DELEGATED_AUTHORIZATION — the token actually presented to a\n * third party is derived from the stored grant rather than from whatever the field happens to hold.\n */\n\nimport {\n parseProviderOAuth2Grant,\n providerOAuth2GrantNeedsRefresh,\n type ProviderOAuth2Grant,\n} from '@wildo-ai/saas-models';\n\n/** Raised when a stored credential cannot be turned into a wire value. Never carries the value. */\nexport class StoredCredentialValueError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'StoredCredentialValueError';\n }\n}\n\nexport interface ResolvedStoredCredential {\n /**\n * What goes in the Authorization header.\n *\n * Empty string when {@link needsRefresh} is set — there is no honest wire value for a grant that\n * must be renewed first, and returning the expired token would let a caller that ignored the flag\n * send it. A caller must branch on `needsRefresh` before reading this.\n */\n readonly wireValue: string;\n /**\n * The grant is expiring and a refresher is available: the caller must renew it, persist the\n * result, and use the renewed access token.\n *\n * A FLAG rather than a refresh performed here, because renewing needs the provider contract and\n * the application's registration while persisting needs the table and the envelope key — and this\n * function is a pure transformation with neither.\n */\n readonly needsRefresh?: true;\n /**\n * The grant it came from, when it came from one. Carried out so a caller can record what the\n * vendor granted, or refresh it — and ABSENT for a pasted credential, which is what lets a caller\n * tell the two apart without re-parsing.\n */\n readonly grant?: ProviderOAuth2Grant;\n}\n\n/**\n * Resolve the opened plaintext of one credential row into the value a request should carry.\n *\n * @param plaintext the opened envelope contents — already decrypted, never the sealed form.\n * @param describeRow how to name the row in a refusal. Never the value, and never the owner's id\n * alone: an operator reading a log needs the provider and slug to act.\n */\nexport function resolveStoredCredentialValue(\n plaintext: string,\n describeRow: string,\n /**\n * Whether the caller can actually renew an expiring grant.\n *\n * Passed in rather than assumed, so the two outcomes stay distinguishable: with a refresher this\n * returns `needsRefresh` and the caller renews; without one it REFUSES, naming the missing\n * subsystem. Defaulting to \"yes\" would have a store with no refresher return `needsRefresh` and\n * then dereference a refresher it does not hold.\n */\n canRefresh = false,\n): ResolvedStoredCredential {\n // Throws when the value announces itself as a grant and is not one — deliberately not caught. A\n // credential claiming a shape it does not have was written by something other than the exchange,\n // and falling back to \"treat it as pasted\" would send the malformed document itself as a token.\n const grant = parseProviderOAuth2Grant(plaintext);\n if (grant === undefined) {\n return { wireValue: plaintext };\n }\n\n if (providerOAuth2GrantNeedsRefresh(grant)) {\n if (canRefresh) {\n return { wireValue: '', grant, needsRefresh: true };\n }\n // Fail CLOSED, and name the missing subsystem rather than the credential.\n //\n // The alternative — send it anyway and let the vendor reject it — was rejected: the 401 comes\n // back as an authentication failure, the row is stamped INVALID, and the person reading their\n // connections is told their credential is bad when it is merely stale. That is a false statement\n // about their account, and it points them at reconnecting rather than at the refresh that does\n // not run.\n //\n // The population is NO LONGER empty. This was written when nothing could store a grant, so the\n // refusal was unreachable; the authorization exchange has since landed and real grants are\n // stored, which makes this the live answer whenever a store is constructed without a refresher.\n // The engine's container always binds one — pinned in `container-boot-graph-resolves.test.ts`,\n // because the injection is `@optional()` and an absent binding is otherwise silent for about an\n // hour. So reaching this in a running application means the wiring is wrong, not the credential.\n throw new StoredCredentialValueError(\n `The OAuth2 grant for ${describeRow} has expired or is within the refresh window, and no token `\n + 'refresher is wired to renew it. The stored credential is not at fault — reconnecting would '\n + 'work, and so would the refresh exchange once it exists.',\n );\n }\n\n return { wireValue: grant.accessToken, grant };\n}\n"]}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Which secret slot holds a PERSON's delegated OAuth2 access token for a provider, and whether the
3
+ * provider admits such a connection at all.
4
+ *
5
+ * Two doors ask this exact question and must answer it identically: the browser access-token route
6
+ * (#394 P4 — a vendor picker opens as the caller) and a vendor-backed file storage (#394 P5 — a
7
+ * Drive file is read through the account of the person who linked it). The predicate lived inline
8
+ * in the route first; it moved here the day the storage needed it, because two copies of "does this
9
+ * provider hand out a personal token" would be two copies that drift, and the one that drifts
10
+ * silently is the one no route pins.
11
+ */
12
+ import type { ExternalProvidersRegistryBackendService } from '../../../external-providers/services/external-providers-registry.backend.service';
13
+ /** Why a provider cannot hand out a personal delegated token. */
14
+ export declare enum UserDelegatedAccessTokenRefusal {
15
+ /** No REST contract carrying OAuth2, so nothing delegated ever gets minted. */
16
+ PROVIDER_NOT_CONNECTABLE = "PROVIDER_NOT_CONNECTABLE",
17
+ /** The provider's admissible-connection catalogue names no USER-owned, SERVICE-delegated shape. */
18
+ CONNECTION_NOT_ADMISSIBLE = "CONNECTION_NOT_ADMISSIBLE"
19
+ }
20
+ export type UserDelegatedAccessTokenSlot = {
21
+ readonly admitted: true;
22
+ readonly secretSlug: string;
23
+ } | {
24
+ readonly admitted: false;
25
+ readonly refusal: UserDelegatedAccessTokenRefusal;
26
+ };
27
+ /**
28
+ * Resolves the slot a person's delegated access token for `providerRef` is stored under, or says
29
+ * why there is none. `requestedSlug` lets a caller name a different slot of the same provider,
30
+ * which the browser route accepts as a query parameter; the default is the REST contract's own
31
+ * `apiKey.secretRef`, which is where the OAuth2 exchange writes the access token.
32
+ */
33
+ export declare function resolveUserDelegatedAccessTokenSlot(registry: Pick<ExternalProvidersRegistryBackendService, 'getProviderRuntimeContract' | 'getProviderAdmissibleConnections'>, providerRef: string, requestedSlug?: string): UserDelegatedAccessTokenSlot;
34
+ //# sourceMappingURL=user-delegated-access-token-slot.backend.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-delegated-access-token-slot.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAE1J,iEAAiE;AACjE,oBAAY,+BAA+B;IACzC,+EAA+E;IAC/E,wBAAwB,6BAA6B;IACrD,mGAAmG;IACnG,yBAAyB,8BAA8B;CACxD;AAED,MAAM,MAAM,4BAA4B,GACpC;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAA;CAAE,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,IAAI,CAAC,uCAAuC,EAAE,4BAA4B,GAAG,kCAAkC,CAAC,EAC1H,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,4BAA4B,CAgB9B"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Which secret slot holds a PERSON's delegated OAuth2 access token for a provider, and whether the
3
+ * provider admits such a connection at all.
4
+ *
5
+ * Two doors ask this exact question and must answer it identically: the browser access-token route
6
+ * (#394 P4 — a vendor picker opens as the caller) and a vendor-backed file storage (#394 P5 — a
7
+ * Drive file is read through the account of the person who linked it). The predicate lived inline
8
+ * in the route first; it moved here the day the storage needed it, because two copies of "does this
9
+ * provider hand out a personal token" would be two copies that drift, and the one that drifts
10
+ * silently is the one no route pins.
11
+ */
12
+ import { ExternalProvider_Connection_DelegationMode, ExternalProvider_Connection_OwnerScope, ExternalProvider_ExchangeProtocol_Kind, ProviderProtocolRuntimeKind, } from '@wildo-ai/external-connectors-models';
13
+ /** Why a provider cannot hand out a personal delegated token. */
14
+ export var UserDelegatedAccessTokenRefusal;
15
+ (function (UserDelegatedAccessTokenRefusal) {
16
+ /** No REST contract carrying OAuth2, so nothing delegated ever gets minted. */
17
+ UserDelegatedAccessTokenRefusal["PROVIDER_NOT_CONNECTABLE"] = "PROVIDER_NOT_CONNECTABLE";
18
+ /** The provider's admissible-connection catalogue names no USER-owned, SERVICE-delegated shape. */
19
+ UserDelegatedAccessTokenRefusal["CONNECTION_NOT_ADMISSIBLE"] = "CONNECTION_NOT_ADMISSIBLE";
20
+ })(UserDelegatedAccessTokenRefusal || (UserDelegatedAccessTokenRefusal = {}));
21
+ /**
22
+ * Resolves the slot a person's delegated access token for `providerRef` is stored under, or says
23
+ * why there is none. `requestedSlug` lets a caller name a different slot of the same provider,
24
+ * which the browser route accepts as a query parameter; the default is the REST contract's own
25
+ * `apiKey.secretRef`, which is where the OAuth2 exchange writes the access token.
26
+ */
27
+ export function resolveUserDelegatedAccessTokenSlot(registry, providerRef, requestedSlug) {
28
+ const contract = registry.getProviderRuntimeContract(providerRef, ExternalProvider_ExchangeProtocol_Kind.REST_API);
29
+ if (contract?.kind !== ProviderProtocolRuntimeKind.REST || contract.oauth2 === undefined) {
30
+ return { admitted: false, refusal: UserDelegatedAccessTokenRefusal.PROVIDER_NOT_CONNECTABLE };
31
+ }
32
+ const admitted = registry.getProviderAdmissibleConnections(providerRef).some((shape) => shape.ownerScope === ExternalProvider_Connection_OwnerScope.USER
33
+ && shape.delegation === ExternalProvider_Connection_DelegationMode.SERVICE);
34
+ if (!admitted) {
35
+ return { admitted: false, refusal: UserDelegatedAccessTokenRefusal.CONNECTION_NOT_ADMISSIBLE };
36
+ }
37
+ return { admitted: true, secretSlug: requestedSlug ?? contract.apiKey.secretRef };
38
+ }
39
+ //# sourceMappingURL=user-delegated-access-token-slot.backend.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-delegated-access-token-slot.backend.utils.js","sourceRoot":"","sources":["../../../../../src/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,0CAA0C,EAC1C,sCAAsC,EACtC,sCAAsC,EACtC,2BAA2B,GAC5B,MAAM,sCAAsC,CAAC;AAG9C,iEAAiE;AACjE,MAAM,CAAN,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,+EAA+E;IAC/E,wFAAqD,CAAA;IACrD,mGAAmG;IACnG,0FAAuD,CAAA;AACzD,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,QAK1C;AAMD;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CACjD,QAA0H,EAC1H,WAAmB,EACnB,aAAsB;IAEtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,0BAA0B,CAAC,WAAW,EAAE,sCAAsC,CAAC,QAAQ,CAAC,CAAC;IACnH,IAAI,QAAQ,EAAE,IAAI,KAAK,2BAA2B,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,CAAC,wBAAwB,EAAE,CAAC;IAChG,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC,IAAI,CAC1E,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,UAAU,KAAK,sCAAsC,CAAC,IAAI;WAC7D,KAAK,CAAC,UAAU,KAAK,0CAA0C,CAAC,OAAO,CAC7E,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,CAAC,yBAAyB,EAAE,CAAC;IACjG,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACpF,CAAC","sourcesContent":["/**\n * Which secret slot holds a PERSON's delegated OAuth2 access token for a provider, and whether the\n * provider admits such a connection at all.\n *\n * Two doors ask this exact question and must answer it identically: the browser access-token route\n * (#394 P4 — a vendor picker opens as the caller) and a vendor-backed file storage (#394 P5 — a\n * Drive file is read through the account of the person who linked it). The predicate lived inline\n * in the route first; it moved here the day the storage needed it, because two copies of \"does this\n * provider hand out a personal token\" would be two copies that drift, and the one that drifts\n * silently is the one no route pins.\n */\n\nimport {\n ExternalProvider_Connection_DelegationMode,\n ExternalProvider_Connection_OwnerScope,\n ExternalProvider_ExchangeProtocol_Kind,\n ProviderProtocolRuntimeKind,\n} from '@wildo-ai/external-connectors-models';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\n\n/** Why a provider cannot hand out a personal delegated token. */\nexport enum UserDelegatedAccessTokenRefusal {\n /** No REST contract carrying OAuth2, so nothing delegated ever gets minted. */\n PROVIDER_NOT_CONNECTABLE = 'PROVIDER_NOT_CONNECTABLE',\n /** The provider's admissible-connection catalogue names no USER-owned, SERVICE-delegated shape. */\n CONNECTION_NOT_ADMISSIBLE = 'CONNECTION_NOT_ADMISSIBLE',\n}\n\nexport type UserDelegatedAccessTokenSlot =\n | { readonly admitted: true; readonly secretSlug: string }\n | { readonly admitted: false; readonly refusal: UserDelegatedAccessTokenRefusal };\n\n/**\n * Resolves the slot a person's delegated access token for `providerRef` is stored under, or says\n * why there is none. `requestedSlug` lets a caller name a different slot of the same provider,\n * which the browser route accepts as a query parameter; the default is the REST contract's own\n * `apiKey.secretRef`, which is where the OAuth2 exchange writes the access token.\n */\nexport function resolveUserDelegatedAccessTokenSlot(\n registry: Pick<ExternalProvidersRegistryBackendService, 'getProviderRuntimeContract' | 'getProviderAdmissibleConnections'>,\n providerRef: string,\n requestedSlug?: string,\n): UserDelegatedAccessTokenSlot {\n const contract = registry.getProviderRuntimeContract(providerRef, ExternalProvider_ExchangeProtocol_Kind.REST_API);\n if (contract?.kind !== ProviderProtocolRuntimeKind.REST || contract.oauth2 === undefined) {\n return { admitted: false, refusal: UserDelegatedAccessTokenRefusal.PROVIDER_NOT_CONNECTABLE };\n }\n\n const admitted = registry.getProviderAdmissibleConnections(providerRef).some(\n (shape) =>\n shape.ownerScope === ExternalProvider_Connection_OwnerScope.USER\n && shape.delegation === ExternalProvider_Connection_DelegationMode.SERVICE,\n );\n if (!admitted) {\n return { admitted: false, refusal: UserDelegatedAccessTokenRefusal.CONNECTION_NOT_ADMISSIBLE };\n }\n\n return { admitted: true, secretSlug: requestedSlug ?? contract.apiKey.secretRef };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"consumable-tokens-cleanup.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AAuC/I;;;;GAIG;AACH,wBAAgB,kCAAkC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAsLzG"}
1
+ {"version":3,"file":"consumable-tokens-cleanup.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AAuC/I;;;;GAIG;AACH,wBAAgB,kCAAkC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAsLzG"}
@@ -1 +1 @@
1
- {"version":3,"file":"consumable-token-models.exports.d.ts","sourceRoot":"","sources":["../../../../../src/security/consumable-tokens/consumable-token-models.exports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6DAA6D,CAAC"}
1
+ {"version":3,"file":"consumable-token-models.exports.d.ts","sourceRoot":"","sources":["../../../../src/security/consumable-tokens/consumable-token-models.exports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6DAA6D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"consumable-tokens.backend.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAM3G,OAAO,EAAyB,yBAAyB,EAAoC,MAAM,oCAAoC,CAAC;AAExI,KAAK,+BAA+B,GAChC,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,MAAM,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4DAA4D,GACvE,wBAAwB,oBAAoB,EAAE,KAC7C,qBAAqB,CAAC,SAAS,EAAE,+BAA+B,EAAE,OAAO,yBAAyB,CA0EpG,CAAC"}
1
+ {"version":3,"file":"consumable-tokens.backend.resources-config.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAM3G,OAAO,EAAyB,yBAAyB,EAAoC,MAAM,oCAAoC,CAAC;AAExI,KAAK,+BAA+B,GAChC,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,IAAI,GAC1B,qBAAqB,CAAC,MAAM,GAC5B,qBAAqB,CAAC,MAAM,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4DAA4D,GACvE,wBAAwB,oBAAoB,EAAE,KAC7C,qBAAqB,CAAC,SAAS,EAAE,+BAA+B,EAAE,OAAO,yBAAyB,CA0EpG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"consumable-tokens.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/security/consumable-tokens/models/consumable-tokens.shared.schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAEL,+BAA+B,EAGhC,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;oEAOoE;AAEpE,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwF/B,CAAC;AAEH;;;;;oEAKoE;AAEpE,eAAO,MAAM,qBAAqB,yEAAoC,CAAC;AACvE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmC,CAAC;AAC1E,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA0D,CAAC;AAExG,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,IAAI,CAAC,GAAG;IAC/E,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"consumable-tokens.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/security/consumable-tokens/models/consumable-tokens.shared.schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAEL,+BAA+B,EAGhC,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;oEAOoE;AAEpE,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwF/B,CAAC;AAEH;;;;;oEAKoE;AAEpE,eAAO,MAAM,qBAAqB,yEAAoC,CAAC;AACvE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmC,CAAC;AAC1E,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA0D,CAAC;AAExG,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,IAAI,CAAC,GAAG;IAC/E,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/security/consumable-tokens/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,sDAAsD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/security/consumable-tokens/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,sDAAsD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-consumable-token.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/security/consumable-tokens/services/__tests__/mock-consumable-token.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AASrF,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,qBACa,0BAA0B;IACrC,WAAW;mBAEI,MAAM;yBACA,MAAM;mBACZ,OAAO;mBACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;QAYpC;IAOF,YAAY,4EAaT;IAEH;;;;;OAKG;IAOH,aAAa,4EAYV;IAEH,KAAK;CAKN"}
1
+ {"version":3,"file":"mock-consumable-token.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/consumable-tokens/services/__tests__/mock-consumable-token.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AASrF,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,qBACa,0BAA0B;IACrC,WAAW;mBAEI,MAAM;yBACA,MAAM;mBACZ,OAAO;mBACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;QAYpC;IAOF,YAAY,4EAaT;IAEH;;;;;OAKG;IAOH,aAAa,4EAYV;IAEH,KAAK;CAKN"}
@@ -1 +1 @@
1
- {"version":3,"file":"consumable-token.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/consumable-tokens/services/consumable-token.backend.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumable-token.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/security/consumable-tokens/services/consumable-token.backend.service.ts"],"names":[],"mappings":"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"}