@wildo-ai/saas-backend-lib 1.1.2 → 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 (1358) 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 +19 -1
  9. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  10. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  11. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
  12. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  13. package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
  14. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
  15. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
  16. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
  18. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
  19. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
  20. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
  21. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
  22. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
  23. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
  24. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
  25. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +210 -0
  26. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
  27. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
  28. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  29. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
  30. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  31. package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
  32. package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
  33. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
  34. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  35. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
  36. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  37. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
  38. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
  39. package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
  40. package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
  41. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
  42. package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
  44. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
  45. package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
  46. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
  47. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  48. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +220 -25
  49. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  50. package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
  51. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
  52. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  53. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +191 -26
  54. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  55. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
  56. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  57. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
  58. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  59. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
  60. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
  61. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
  62. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
  63. package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
  64. package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
  65. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
  66. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
  68. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  69. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
  70. package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
  71. package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
  72. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  73. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
  74. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  75. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
  76. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
  77. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +106 -0
  78. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  79. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +266 -20
  80. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  81. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  82. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
  83. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  84. package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
  85. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
  86. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  87. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +34 -3
  88. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  89. package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
  90. package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
  91. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
  92. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
  93. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
  94. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
  95. package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
  96. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
  97. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
  98. package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
  99. package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
  100. package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
  101. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
  102. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  103. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  104. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
  105. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
  106. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
  107. package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
  108. package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
  109. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  110. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
  111. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  112. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
  113. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  114. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
  115. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  116. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
  117. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  118. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +571 -45
  119. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  120. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
  121. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  122. package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
  123. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  124. package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
  125. package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
  126. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
  127. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
  128. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
  129. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
  130. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
  131. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
  132. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
  133. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
  134. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
  135. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
  136. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
  137. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
  138. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
  139. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
  140. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
  141. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
  142. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +475 -0
  143. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
  144. package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
  145. package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
  146. package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
  147. package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
  148. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
  149. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  150. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
  151. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  152. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
  153. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  154. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
  155. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  156. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
  157. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
  158. package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
  159. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
  160. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
  161. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  162. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
  163. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  164. package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
  165. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  166. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
  167. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  168. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +70 -1
  169. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  170. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +98 -2
  171. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  172. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
  173. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  174. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
  175. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  176. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  177. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
  178. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  179. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
  180. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  181. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  182. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
  183. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  184. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +21 -1
  185. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  186. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +109 -2
  187. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  188. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
  189. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
  190. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
  191. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
  192. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
  193. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
  194. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
  195. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  196. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +310 -29
  197. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  198. package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
  199. package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
  200. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  201. package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
  202. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  203. package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
  204. package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
  205. package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
  206. package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
  207. package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
  208. package/dist/esm/companion-exports.d.ts.map +1 -1
  209. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
  210. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
  211. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
  212. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  213. package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
  214. package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  215. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
  216. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
  217. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  218. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
  219. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  220. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +350 -10
  221. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  222. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +562 -10
  223. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  224. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  225. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
  226. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  227. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
  228. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  229. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
  230. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
  231. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
  232. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  233. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
  234. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  235. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
  236. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
  237. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
  238. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
  239. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  240. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +52 -0
  241. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  242. package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
  243. package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
  244. package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
  245. package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
  246. package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
  247. package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
  248. package/dist/esm/compliance/index.d.ts.map +1 -1
  249. package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
  250. package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
  251. package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
  252. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
  253. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  254. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
  255. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  256. package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
  257. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
  258. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
  259. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
  260. package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
  261. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
  262. package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
  263. package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
  264. package/dist/esm/config/models/app-config.backend.schemas.d.ts +145 -49
  265. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  266. package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
  267. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  268. package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
  269. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
  270. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
  271. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
  272. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
  273. package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
  274. package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
  275. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
  276. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  277. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
  278. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  279. package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
  280. package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
  281. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
  282. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  283. package/dist/esm/config/services/app-configuration-loader.backend.service.js +71 -76
  284. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  285. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  286. package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
  287. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  288. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
  289. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  290. package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
  291. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  292. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +37 -0
  293. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  294. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +69 -1
  295. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  296. package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
  297. package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
  298. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
  299. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
  300. package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
  301. package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
  302. package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
  303. package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
  304. package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
  305. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
  306. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
  307. package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
  308. package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
  309. package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
  310. package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
  311. package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
  312. package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
  313. package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
  314. package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
  315. package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
  316. package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
  317. package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
  318. package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
  319. package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
  320. package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
  321. package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
  322. package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
  323. package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
  324. package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
  325. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
  326. package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
  327. package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
  328. package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
  329. package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
  330. package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
  331. package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
  332. package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
  333. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
  334. package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
  335. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
  336. package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
  337. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
  338. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
  339. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
  340. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
  341. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
  342. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
  343. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
  344. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
  345. package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
  346. package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
  347. package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
  348. package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
  349. package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
  350. package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
  351. package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
  352. package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
  353. package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
  354. package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
  355. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  356. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
  357. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  358. package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
  359. package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
  360. package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
  361. package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
  362. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
  363. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
  364. package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
  365. package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
  366. package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
  367. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  368. package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
  369. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  370. package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
  371. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  372. package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
  373. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  374. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
  375. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  376. package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
  377. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  378. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
  379. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  380. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
  381. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  382. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
  383. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  384. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
  385. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  386. package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
  387. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
  388. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
  389. package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
  390. package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
  391. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
  392. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  393. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
  394. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  395. package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
  396. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
  397. package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
  398. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
  399. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  400. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  401. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +306 -0
  402. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
  403. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +379 -0
  404. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
  405. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
  406. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
  407. package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
  408. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
  409. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
  410. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
  411. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +235 -0
  412. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
  413. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
  414. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
  415. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
  416. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
  417. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
  418. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  419. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
  420. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  421. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
  422. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
  423. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
  424. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
  425. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
  426. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  427. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
  428. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  429. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
  430. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  431. package/dist/esm/external-providers/services/document-extraction.backend.service.js +181 -100
  432. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  433. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  434. package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
  435. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  436. package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
  437. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +413 -7
  438. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  439. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +684 -45
  440. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  441. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
  442. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  443. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +84 -5
  444. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  445. package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
  446. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
  447. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
  448. package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  449. package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
  450. package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
  451. package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
  452. package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  453. package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
  454. package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  455. package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
  456. package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
  457. package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
  458. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
  459. package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
  460. package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
  461. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
  462. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  463. package/dist/esm/files/controllers/file.controller.js +21 -13
  464. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  465. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
  466. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
  467. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
  468. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  469. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +260 -36
  470. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  471. package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
  472. package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
  473. package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
  474. package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
  475. package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
  476. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
  477. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
  478. package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
  479. package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
  480. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
  481. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
  482. package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
  483. package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
  484. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  485. package/dist/esm/files/services/file-scanning.backend.service.js +202 -17
  486. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  487. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
  488. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  489. package/dist/esm/files/services/file-text-extraction.backend.service.js +175 -13
  490. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  491. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
  492. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
  493. package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
  494. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
  495. package/dist/esm/files/services/files.backend.service.d.ts +68 -0
  496. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  497. package/dist/esm/files/services/files.backend.service.js +177 -5
  498. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  499. package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
  500. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
  501. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
  502. package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
  503. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
  504. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
  505. package/dist/esm/files/storage/file-storage-provider.types.d.ts +52 -11
  506. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  507. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  508. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
  509. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
  510. package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
  511. package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
  512. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
  513. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
  514. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
  515. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
  516. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
  517. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  518. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
  519. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  520. package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
  521. package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  522. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  523. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
  524. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
  525. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  526. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
  527. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  528. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  529. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
  530. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  531. package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
  532. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
  533. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
  534. package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
  535. package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
  536. package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
  537. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
  538. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
  539. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
  540. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
  541. package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
  542. package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
  543. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
  544. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  545. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
  546. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  547. package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
  548. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  549. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
  550. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  551. package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
  552. package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
  553. package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
  554. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
  555. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  556. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
  557. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  558. package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
  559. package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
  560. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
  561. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  562. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
  563. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  564. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
  565. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  566. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
  567. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  568. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
  569. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  570. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
  571. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  572. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
  573. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  574. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  575. package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
  576. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
  577. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  578. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
  579. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  580. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
  581. package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
  582. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
  583. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  584. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
  585. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  586. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
  587. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
  588. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  589. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  590. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +179 -8
  591. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  592. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +436 -34
  593. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  594. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  595. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
  596. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  597. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
  598. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
  599. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
  600. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
  601. package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
  602. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  603. package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
  604. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  605. package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
  606. package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
  607. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +132 -6
  608. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  609. package/dist/esm/flows-actors/services/agents.backend.service.js +467 -49
  610. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  611. package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
  612. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +50 -1
  613. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  614. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +270 -20
  615. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  616. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
  617. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  618. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
  619. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  620. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  621. package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
  622. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  623. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  624. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
  625. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  626. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
  627. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
  628. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +371 -0
  629. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
  630. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
  631. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
  632. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
  633. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
  634. package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
  635. package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
  636. package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
  637. package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
  638. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
  639. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  640. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
  641. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  642. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  643. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +17 -4
  644. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  645. package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
  646. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
  647. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
  648. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  649. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
  650. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  651. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  652. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  653. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
  654. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
  655. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
  656. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
  657. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
  658. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
  659. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
  660. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
  661. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
  662. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
  663. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
  664. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
  665. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
  666. package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
  667. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
  668. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
  669. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
  670. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  671. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
  672. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  673. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
  674. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
  675. package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
  676. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
  677. package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
  678. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
  679. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  680. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
  681. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  682. package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
  683. package/dist/esm/index.d.ts +11 -5
  684. package/dist/esm/index.d.ts.map +1 -1
  685. package/dist/esm/index.js +31 -5
  686. package/dist/esm/index.js.map +1 -1
  687. package/dist/esm/inject/models/container.d.ts +10 -0
  688. package/dist/esm/inject/models/container.d.ts.map +1 -1
  689. package/dist/esm/inject/models/container.js +126 -10
  690. package/dist/esm/inject/models/container.js.map +1 -1
  691. package/dist/esm/inject/models/service-types.d.ts +20 -3
  692. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  693. package/dist/esm/inject/models/service-types.js +22 -3
  694. package/dist/esm/inject/models/service-types.js.map +1 -1
  695. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  696. package/dist/esm/mcp/controllers/mcp.controller.js +70 -3
  697. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  698. package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
  699. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
  700. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
  701. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
  702. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  703. package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
  704. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  705. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  706. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
  707. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  708. package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
  709. package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
  710. package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
  711. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  712. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
  713. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  714. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
  715. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
  716. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
  717. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
  718. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
  719. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  720. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
  721. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  722. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
  723. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  724. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  725. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
  726. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  727. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
  728. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  729. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
  730. package/dist/esm/monitoring/logger/services/logger.service.d.ts +24 -0
  731. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  732. package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
  733. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  734. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
  735. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
  736. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
  737. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
  738. package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
  739. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +313 -0
  740. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
  741. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +389 -0
  742. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
  743. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
  744. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  745. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  746. package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
  747. package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
  748. package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
  749. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
  750. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  751. package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
  752. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  753. package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
  754. package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
  755. package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
  756. package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
  757. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
  758. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
  759. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  760. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
  761. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  762. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  763. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
  764. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  765. package/dist/esm/notifications/email/services/email.backend.service.d.ts +102 -5
  766. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  767. package/dist/esm/notifications/email/services/email.backend.service.js +222 -70
  768. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  769. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
  770. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  771. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  772. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
  773. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
  774. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
  775. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  776. package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
  777. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  778. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
  779. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  780. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
  781. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  782. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
  783. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
  784. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
  785. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
  786. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
  787. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  788. package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
  789. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  790. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
  791. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  792. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
  793. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  794. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
  795. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  796. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
  797. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  798. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
  799. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  800. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
  801. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  802. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
  803. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
  804. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
  805. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
  806. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  807. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
  808. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  809. package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
  810. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
  811. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
  812. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  813. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
  814. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  815. package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
  816. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
  817. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
  818. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
  819. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  820. package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
  821. package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
  822. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
  823. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
  824. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  825. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
  826. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  827. package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  828. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
  829. package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
  830. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
  831. package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
  832. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
  833. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
  834. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
  835. package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
  836. package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
  837. package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
  838. package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
  839. package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
  840. package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
  841. package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
  842. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
  843. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
  844. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
  845. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
  846. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
  847. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
  848. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
  849. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
  850. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
  851. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
  852. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
  853. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
  854. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
  855. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
  856. package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
  857. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
  858. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
  859. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  860. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
  861. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  862. package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
  863. package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
  864. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
  865. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  866. package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
  867. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  868. package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
  869. package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
  870. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  871. package/dist/esm/queue/job-consumer.backend.service.js +1 -4
  872. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  873. package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
  874. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  875. package/dist/esm/queue/job-executor.backend.service.js +1 -4
  876. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  877. package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
  878. package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
  879. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
  880. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  881. package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
  882. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  883. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
  884. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  885. package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
  886. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  887. package/dist/esm/queue/queue.backend.service.d.ts +3 -3
  888. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  889. package/dist/esm/queue/queue.backend.service.js +26 -4
  890. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  891. package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
  892. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
  893. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  894. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
  895. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  896. package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
  897. package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
  898. package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
  899. package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
  900. package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
  901. package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
  902. package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
  903. package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
  904. package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
  905. package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
  906. package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
  907. package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
  908. package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
  909. package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
  910. package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
  911. package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
  912. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
  913. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  914. package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
  915. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  916. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
  917. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  918. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
  919. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  920. package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
  921. package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
  922. package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
  923. package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
  924. package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
  925. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
  926. package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
  927. package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
  928. package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
  929. package/dist/esm/requests/service/websocket.service.d.ts +9 -0
  930. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  931. package/dist/esm/requests/service/websocket.service.js +81 -9
  932. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  933. package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
  934. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  935. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
  936. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  937. package/dist/esm/resources/models/index.d.ts.map +1 -1
  938. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  939. package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
  940. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  941. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  942. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
  943. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  944. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
  945. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  946. package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
  947. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  948. package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
  949. package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
  950. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
  951. package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
  952. package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
  953. package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
  954. package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
  955. package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
  956. package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
  957. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +83 -5
  958. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  959. package/dist/esm/resources/services/resources-registry.backend.service.js +121 -6
  960. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  961. package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
  962. package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
  963. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
  964. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  965. package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
  966. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  967. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
  968. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  969. package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
  970. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  971. package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
  972. package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
  973. package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
  974. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
  975. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
  976. package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
  977. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
  978. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  979. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  980. package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
  981. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  982. package/dist/esm/runtime/services/http-server.backend.service.js +191 -1
  983. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  984. package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
  985. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  986. package/dist/esm/runtime/services/start-application.backend.service.js +287 -89
  987. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  988. package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
  989. package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
  990. package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
  991. package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
  992. package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
  993. package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
  994. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
  995. package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
  996. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
  997. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  998. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
  999. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  1000. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
  1001. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  1002. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
  1003. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  1004. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
  1005. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
  1006. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  1007. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +113 -4
  1008. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  1009. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
  1010. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  1011. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
  1012. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  1013. package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
  1014. package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
  1015. package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
  1016. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
  1017. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  1018. package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
  1019. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  1020. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
  1021. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
  1022. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
  1023. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
  1024. package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
  1025. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
  1026. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +30 -0
  1027. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  1028. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  1029. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
  1030. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
  1031. package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
  1032. package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
  1033. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
  1034. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
  1035. package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
  1036. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
  1037. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
  1038. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
  1039. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  1040. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
  1041. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  1042. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
  1043. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  1044. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
  1045. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  1046. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
  1047. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  1048. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
  1049. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  1050. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
  1051. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  1052. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
  1053. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  1054. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
  1055. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
  1056. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
  1057. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +197 -0
  1058. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  1059. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +384 -53
  1060. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  1061. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
  1062. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
  1063. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  1064. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
  1065. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  1066. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
  1067. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
  1068. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
  1069. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
  1070. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  1071. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
  1072. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  1073. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
  1074. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  1075. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +260 -27
  1076. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  1077. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
  1078. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  1079. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +70 -4
  1080. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  1081. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
  1082. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
  1083. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
  1084. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
  1085. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
  1086. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  1087. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
  1088. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  1089. package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
  1090. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
  1091. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  1092. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
  1093. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  1094. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
  1095. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  1096. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
  1097. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  1098. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
  1099. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  1100. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
  1101. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  1102. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  1103. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
  1104. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  1105. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
  1106. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
  1107. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
  1108. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
  1109. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +339 -0
  1110. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
  1111. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
  1112. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  1113. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
  1114. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  1115. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
  1116. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
  1117. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
  1118. package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
  1119. package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
  1120. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
  1121. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  1122. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
  1123. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  1124. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
  1125. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  1126. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
  1127. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  1128. package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
  1129. package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
  1130. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
  1131. package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
  1132. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
  1133. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  1134. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
  1135. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  1136. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
  1137. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  1138. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
  1139. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  1140. package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
  1141. package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
  1142. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
  1143. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  1144. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
  1145. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  1146. package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
  1147. package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
  1148. package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
  1149. package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
  1150. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
  1151. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  1152. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
  1153. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  1154. package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
  1155. package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
  1156. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
  1157. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
  1158. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
  1159. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
  1160. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
  1161. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
  1162. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
  1163. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
  1164. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
  1165. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
  1166. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
  1167. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
  1168. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
  1169. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
  1170. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
  1171. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
  1172. package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
  1173. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
  1174. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
  1175. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
  1176. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
  1177. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
  1178. package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
  1179. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
  1180. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  1181. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
  1182. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  1183. package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
  1184. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  1185. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +37 -124
  1186. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  1187. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
  1188. package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
  1189. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
  1190. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  1191. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
  1192. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  1193. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +133 -0
  1194. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
  1195. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +137 -0
  1196. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
  1197. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +134 -1
  1198. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  1199. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +152 -5
  1200. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  1201. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +146 -8
  1202. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  1203. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +328 -29
  1204. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  1205. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
  1206. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  1207. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
  1208. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  1209. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
  1210. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
  1211. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
  1212. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
  1213. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +299 -0
  1214. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
  1215. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +953 -0
  1216. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
  1217. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +99 -0
  1218. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
  1219. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
  1220. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
  1221. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
  1222. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
  1223. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
  1224. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
  1225. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +210 -0
  1226. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
  1227. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +423 -0
  1228. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
  1229. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
  1230. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  1231. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
  1232. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
  1233. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
  1234. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
  1235. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +282 -0
  1236. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
  1237. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +125 -0
  1238. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
  1239. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +123 -0
  1240. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
  1241. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
  1242. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
  1243. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
  1244. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
  1245. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +214 -0
  1246. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
  1247. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +430 -0
  1248. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
  1249. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
  1250. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  1251. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
  1252. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
  1253. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +98 -0
  1254. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
  1255. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
  1256. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
  1257. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
  1258. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
  1259. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
  1260. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
  1261. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
  1262. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
  1263. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
  1264. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
  1265. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
  1266. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
  1267. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
  1268. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
  1269. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
  1270. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
  1271. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
  1272. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
  1273. package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
  1274. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
  1275. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
  1276. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  1277. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
  1278. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  1279. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
  1280. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  1281. package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
  1282. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  1283. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
  1284. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
  1285. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
  1286. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
  1287. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
  1288. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
  1289. package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
  1290. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
  1291. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  1292. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
  1293. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  1294. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
  1295. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  1296. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
  1297. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  1298. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
  1299. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
  1300. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
  1301. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
  1302. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
  1303. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
  1304. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
  1305. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
  1306. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  1307. package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
  1308. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  1309. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
  1310. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  1311. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
  1312. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  1313. package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
  1314. package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
  1315. package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
  1316. package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
  1317. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
  1318. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  1319. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
  1320. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  1321. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
  1322. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
  1323. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
  1324. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
  1325. package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
  1326. package/dist/esm/testing.d.ts.map +1 -1
  1327. package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
  1328. package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  1329. package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
  1330. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
  1331. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
  1332. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
  1333. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
  1334. package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
  1335. package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
  1336. package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
  1337. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1338. package/package.json +11 -9
  1339. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
  1340. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
  1341. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
  1342. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
  1343. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
  1344. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
  1345. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
  1346. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
  1347. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
  1348. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
  1349. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
  1350. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
  1351. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
  1352. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
  1353. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
  1354. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
  1355. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
  1356. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
  1357. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
  1358. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
@@ -3,7 +3,7 @@
3
3
  * (partial-resource paper, PR-29): provider-access resolution, transport execution (timeout /
4
4
  * bounded retry / rate budget), the per-dialect wire framing (OData GET, REST_JSON GET/POST +
5
5
  * JSON-RPC envelope semantics, Odoo `execute_kw` with the `common.authenticate` handshake and
6
- * the instance-cached uid), and the 404-as-null read tolerance.
6
+ * the credential-keyed cached uid), and the 404-as-null read tolerance.
7
7
  *
8
8
  * TWO consumers, by design: the VIRTUAL repository (`http-api-resource-repository`) and the
9
9
  * pipeline extraction source (P-2). The declaration layer is split on purpose — a pipeline is
@@ -17,39 +17,146 @@
17
17
  * narrows a query and never interprets a ROW — it moves compiled requests and returns parsed
18
18
  * bodies.
19
19
  */
20
- import { HttpApiRateBudget, HttpApiTransportError, HttpApiTransportFailureKind, executeHttpApiTransportCall, } from './http-api-transport.backend.js';
20
+ import { createHash } from 'node:crypto';
21
+ import { ExternalProvider_Connection_DelegationMode, ExternalProvider_Connection_OwnerScope, } from '@wildo-ai/external-connectors-models';
22
+ import { ExternalProvider_ConnectionTargetSchema, } from '@wildo-ai/external-connectors-models';
23
+ import { HttpApiRateBudget, HttpApiTransportBodyEncoding, HttpApiTransportError, HttpApiTransportFailureKind, executeHttpApiTransportCall, } from './http-api-transport.backend.js';
21
24
  import { HttpApiRemoteContractError, resolveHttpApiResultPath, } from './http-api-row-projection.backend.js';
22
25
  import { HttpApiProviderAccessError, } from './http-api-provider-access.backend.js';
23
26
  /** Default fetch over the platform global (Node ≥18); injectable for tests. */
24
27
  export const defaultHttpApiFetch = async (url, init) => {
28
+ // outbound-deadline: a forwarding seam. `init.signal` is the caller's, and every caller reaches
29
+ // here through `executeHttpApiTransportCall`, which owns the binding's `remoteCallSemantics
30
+ // .timeoutMs` and its retry budget. Minting a second deadline here would put two competing
31
+ // timers on one request and hide which one fired.
25
32
  const response = await fetch(url, init);
26
33
  return { status: response.status, ok: response.ok, text: () => response.text() };
27
34
  };
35
+ /**
36
+ * The binding's declared connection SHAPE, plus the instance ids this execution supplies — ONE
37
+ * place, deliberately.
38
+ *
39
+ * ## What changed, and why the refusal that used to live here is gone
40
+ *
41
+ * This function used to refuse every delegated binding, naming a missing subsystem: "the engine has
42
+ * no outbound per-user token store". That was true when it was written and is not any more — the
43
+ * store exists, is bound, and serves the connection controller (#333). What actually blocked the
44
+ * lift was narrower: the binding carried a two-valued `identityMode`, and `USER_DELEGATED` cannot
45
+ * say WHOSE ACCOUNT is spent. A user's own grant (`USER × SERVICE`) and a tenant's registration
46
+ * acting for one of its members (`ORGANIZATION × USER`) are both "per-user OAuth" and resolve
47
+ * different credentials, so mapping the one field would have silently picked a lane. The binding
48
+ * now carries the shape itself, and this function only has to source the instances.
49
+ *
50
+ * ## The ids come from the EXECUTION, and that is not the resolver reading ambient context
51
+ *
52
+ * `ExternalProvider_ConnectionTarget`'s own contract says a target is supplied BY THE CALL and never
53
+ * invented by the resolver, because "the resolver cannot verify a target it also invented". This is
54
+ * the call side of that split: an httpApiBinding read is triggered by a resource operation, so the
55
+ * organization and the user it runs for ARE the execution's, and naming them here is what leaves the
56
+ * resolver free to authorize them. It refuses rather than falling back — an absent organization on a
57
+ * tenant-owned binding must not quietly become the application's account, which is the exact
58
+ * mis-attribution `resolveProviderSecretForConnection` exists to prevent.
59
+ *
60
+ * ## The rules are the SCHEMA's
61
+ *
62
+ * Every refusal below comes from `ExternalProvider_ConnectionTargetSchema`'s own refinements, which
63
+ * already say — better than a re-statement here would — that an instance-owned connection names
64
+ * which instance, that an application-owned one has no id to name, and that a delegated call must
65
+ * name the user it acts for. Re-deriving them here would be a second copy that drifts.
66
+ */
67
+ function connectionTargetForBinding(binding, executionContext) {
68
+ const { ownerScope, delegation } = binding.connection;
69
+ const initiator = executionContext.initiatorIds;
70
+ const ownerId = ownerScope === ExternalProvider_Connection_OwnerScope.ORGANIZATION
71
+ ? initiator?.organizationId
72
+ : ownerScope === ExternalProvider_Connection_OwnerScope.USER
73
+ ? initiator?.userId
74
+ : undefined;
75
+ const candidate = {
76
+ ownerScope,
77
+ delegation,
78
+ ...(ownerId === undefined ? {} : { ownerId }),
79
+ ...(delegation === ExternalProvider_Connection_DelegationMode.USER && initiator?.userId !== undefined
80
+ ? { actingForUserId: initiator.userId }
81
+ : {}),
82
+ };
83
+ const parsed = ExternalProvider_ConnectionTargetSchema.safeParse(candidate);
84
+ if (!parsed.success) {
85
+ throw new HttpApiProviderAccessError(`The binding toward provider '${binding.providerRef}' declares a ${ownerScope} × ${delegation} connection, `
86
+ + 'and this execution cannot supply what that names: '
87
+ + parsed.error.issues.map((issue) => issue.message).join(' ')
88
+ + ' Either trigger the read from an execution that carries them, or declare a connection the application can satisfy alone.');
89
+ }
90
+ return parsed.data;
91
+ }
28
92
  export class HttpApiReadClient {
29
93
  binding;
30
94
  providerAccessResolver;
31
95
  fetchImpl;
32
96
  rateBudget;
33
97
  /**
34
- * The authenticated uid for this binding's credentials, resolved once per client instance
35
- * through the documented `common.authenticate(db, login, api_key, {})` handshake and cached —
36
- * clients are constructed once per consumer and the credential set is instance-stable. A
37
- * credential rotation therefore needs a process restart in slice 1 (recorded; an invalidation
38
- * hook belongs with the runtime-proof work, measured against real session-expiry behavior).
98
+ * The authenticated uid, KEYED ON the credential it was minted under rather than merely
99
+ * remembered against this instance.
100
+ *
101
+ * The uid comes from the documented `common.authenticate(db, login, api_key, {})` handshake and
102
+ * is worth caching: the virtual repository builds ONE client per binding and keeps it for the
103
+ * process lifetime (`http-api-resource-repository.backend.service.ts:163`), so re-authenticating
104
+ * per call would double every read's round trips.
105
+ *
106
+ * What it must never do is outlive the credential. `resolveAccess` runs on EVERY call and reads
107
+ * the secret afresh (environment, provider registry, or a tenant credential row), so a rotation
108
+ * genuinely reaches this class — and a uid remembered against the instance would then be an
109
+ * identity minted under the retired credential, presented on every subsequent `execute_kw`.
110
+ *
111
+ * Keying the cache on the credential is what makes that unrepresentable, and it is deliberately
112
+ * preferred over an `invalidate()` some rotation path has to remember to call: there is no
113
+ * enumeration of rotation sites to get wrong, because a changed credential simply misses. Note
114
+ * the key includes `baseUrl` — a uid is a `res.users` row id on ONE database on ONE instance, so
115
+ * repointing the binding at another host must not reuse it either.
116
+ *
117
+ * The key is a SHA-256 of the tuple rather than the tuple itself, so the API key is not held
118
+ * alive on a long-lived field beyond the call that resolved it. The hash is per `execute_kw`
119
+ * call and costs microseconds against a network round trip.
120
+ *
121
+ * ONE slot, not a map. A map would save a handshake when a credential the client has already
122
+ * seen comes back, at the cost of accumulating one secret-derived entry per retired credential
123
+ * for the lifetime of the process — an unbounded set, to avoid a round trip nobody has measured.
124
+ * A binding names one credential at a time, so the slot is single and a rollback re-authenticates.
125
+ *
126
+ * The single slot stays SAFE now that an Odoo binding MAY name a tenant-owned target (#333, which
127
+ * widened `connectionTargetForBinding` from the `APPLICATION` pin it used to hold). Alternating
128
+ * tenants each miss the key and pay a handshake — slower, and never one tenant acting under
129
+ * another tenant's uid, which is what an instance-remembered uid would have become the moment the
130
+ * scope widened. The key is the credential, so the widening cost a round trip and no correctness.
131
+ *
132
+ * This replaces the slice-1 note that said a rotation needs a process restart, and with it the
133
+ * owed work to "measure against real session-expiry behavior". That measurement was owed for an
134
+ * invalidation TRIGGER, and this design needs no trigger. It also has nothing to expire against:
135
+ * `execute_kw` below re-presents `db` + `uid` + `apiKey` in the args of every single call, so
136
+ * there is no server-side session here whose lifetime we could be racing — the only thing that
137
+ * can retire the uid is the credential (or the instance) it names, which is exactly the key.
39
138
  */
40
- odooAuthenticatedUid;
139
+ odooAuthenticatedIdentity;
41
140
  constructor(binding, providerAccessResolver, fetchImpl = defaultHttpApiFetch) {
42
141
  this.binding = binding;
43
142
  this.providerAccessResolver = providerAccessResolver;
44
143
  this.fetchImpl = fetchImpl;
45
144
  this.rateBudget = new HttpApiRateBudget(binding.remoteCallSemantics.maxRequestsPerMinute);
46
145
  }
47
- resolveAccess(executionContext) {
48
- return this.providerAccessResolver.resolveAccess(this.binding, executionContext);
146
+ /**
147
+ * `async`, so a target this execution cannot satisfy REJECTS rather than throwing synchronously.
148
+ *
149
+ * `connectionTargetForBinding` refuses before the port is reached, and a synchronous throw out of
150
+ * a `Promise`-returning method escapes every `.catch()` a caller attaches — the failure would land
151
+ * as an unhandled exception in whichever frame happened to call it without `await`. The keyword is
152
+ * the whole fix.
153
+ */
154
+ async resolveAccess(executionContext) {
155
+ return this.providerAccessResolver.resolveAccess(this.binding.providerRef, connectionTargetForBinding(this.binding, executionContext), executionContext);
49
156
  }
50
157
  // ── OData ────────────────────────────────────────────────────────────────────
51
158
  async odataGet(executionContext, compiled) {
52
- const access = this.resolveAccess(executionContext);
159
+ const access = await this.resolveAccess(executionContext);
53
160
  const response = await executeHttpApiTransportCall(this.buildODataRequest(access, compiled), this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget);
54
161
  return response.json;
55
162
  }
@@ -69,9 +176,11 @@ export class HttpApiReadClient {
69
176
  * service-relative) continuation URL; nothing is compiled locally.
70
177
  */
71
178
  async odataGetByUrl(executionContext, url) {
72
- const access = this.resolveAccess(executionContext);
179
+ const access = await this.resolveAccess(executionContext);
73
180
  const absoluteUrl = url.startsWith('http') ? url : `${access.baseUrl}${url.startsWith('/') ? '' : '/'}${url}`;
74
- const response = await executeHttpApiTransportCall({ method: 'GET', url: absoluteUrl, headers: { Accept: 'application/json', ...access.headers } }, this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget);
181
+ const response = await executeHttpApiTransportCall(
182
+ // A paging continuation is a read: safe to re-send after a timeout.
183
+ { method: 'GET', url: absoluteUrl, headers: { Accept: 'application/json', ...access.headers }, retrySafe: true }, this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget);
75
184
  return response.json;
76
185
  }
77
186
  /**
@@ -85,10 +194,23 @@ export class HttpApiReadClient {
85
194
  */
86
195
  async odataMetadataText(executionContext) {
87
196
  try {
88
- const access = this.resolveAccess(executionContext);
197
+ const access = await this.resolveAccess(executionContext);
198
+ /*
199
+ * The binding's OWN call budget, even though this probe steps outside the transport.
200
+ *
201
+ * Stepping outside `executeHttpApiTransportCall` for the XML framing also stepped outside its
202
+ * deadline, and the `catch` below turns every failure into `null` — so an unresponsive remote
203
+ * did not surface as drift, as an error, or as anything at all. It simply held the caller.
204
+ * That is the quietest shape this defect takes, and the reason a second MECHANISM for the same
205
+ * outbound work has to re-derive the bound rather than inherit it by proximity.
206
+ *
207
+ * The budget is the same because the REMOTE is the same. What this probe legitimately declines
208
+ * is the retry and the rate-budget draw, not the deadline.
209
+ */
89
210
  const response = await this.fetchImpl(`${access.baseUrl}/$metadata`, {
90
211
  method: 'GET',
91
212
  headers: { Accept: 'application/xml', ...access.headers },
213
+ signal: AbortSignal.timeout(this.binding.remoteCallSemantics.timeoutMs),
92
214
  });
93
215
  if (response.status !== 200)
94
216
  return null;
@@ -106,11 +228,12 @@ export class HttpApiReadClient {
106
228
  method: 'GET',
107
229
  url: `${access.baseUrl}${compiled.path}${search.length > 0 ? `?${search}` : ''}`,
108
230
  headers: { Accept: 'application/json', ...access.headers },
231
+ retrySafe: true,
109
232
  };
110
233
  }
111
234
  // ── REST_JSON ────────────────────────────────────────────────────────────────
112
235
  async restJson(executionContext, compiled) {
113
- const access = this.resolveAccess(executionContext);
236
+ const access = await this.resolveAccess(executionContext);
114
237
  const response = await executeHttpApiTransportCall(this.buildRestJsonRequest(access, compiled), this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget);
115
238
  if (compiled.jsonRpc) {
116
239
  const envelope = response.json;
@@ -149,7 +272,10 @@ export class HttpApiReadClient {
149
272
  method: 'POST',
150
273
  url: `${access.baseUrl}${compiled.path}`,
151
274
  headers: { Accept: 'application/json', ...access.headers },
152
- jsonBody: { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: compiled.params, id: 1 },
275
+ body: { encoding: HttpApiTransportBodyEncoding.JSON, value: { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: compiled.params, id: 1 } },
276
+ // POST-shaped, read by construction: the read compilers are the only producers of this
277
+ // request and they compile nothing but reads, so re-sending it cannot duplicate a write.
278
+ retrySafe: true,
153
279
  };
154
280
  }
155
281
  if (compiled.method === 'POST') {
@@ -157,7 +283,9 @@ export class HttpApiReadClient {
157
283
  method: 'POST',
158
284
  url: `${access.baseUrl}${compiled.path}`,
159
285
  headers: { Accept: 'application/json', ...access.headers },
160
- jsonBody: compiled.params,
286
+ body: { encoding: HttpApiTransportBodyEncoding.JSON, value: compiled.params },
287
+ // Same argument as the JSON-RPC branch above: a POST-shaped SEARCH is still a read.
288
+ retrySafe: true,
161
289
  };
162
290
  }
163
291
  const search = Object.entries(compiled.params)
@@ -167,11 +295,12 @@ export class HttpApiReadClient {
167
295
  method: 'GET',
168
296
  url: `${access.baseUrl}${compiled.path}${search.length > 0 ? `?${search}` : ''}`,
169
297
  headers: { Accept: 'application/json', ...access.headers },
298
+ retrySafe: true,
170
299
  };
171
300
  }
172
301
  // ── Odoo execute_kw ──────────────────────────────────────────────────────────
173
302
  async odooExecuteKw(executionContext, call) {
174
- const access = this.resolveAccess(executionContext);
303
+ const access = await this.resolveAccess(executionContext);
175
304
  const credentials = access.jsonRpcInArgsCredentials;
176
305
  if (!credentials) {
177
306
  // An ODOO_JSONRPC binding on a provider whose contract declares no in-args auth cannot
@@ -179,20 +308,33 @@ export class HttpApiReadClient {
179
308
  throw new HttpApiProviderAccessError(`Provider '${this.binding.providerRef}' declares no jsonRpcInArgsAuth on its rest contract, but this binding speaks ODOO_JSONRPC — `
180
309
  + 'the target authenticates INSIDE the RPC args; declare jsonRpcInArgsAuth (dbEnvVarName, loginEnvVarName) on the provider module.');
181
310
  }
182
- if (this.odooAuthenticatedUid === undefined) {
311
+ // Resolved from THIS call's access, so a rotated credential produces a different key and the
312
+ // cached identity below simply does not match — no invalidation call, and therefore no
313
+ // rotation path that can forget to make one.
314
+ const credentialKey = HttpApiReadClient.odooCredentialKey(access.baseUrl, credentials);
315
+ let authenticatedUid = this.odooAuthenticatedIdentity?.credentialKey === credentialKey
316
+ ? this.odooAuthenticatedIdentity.uid
317
+ : undefined;
318
+ if (authenticatedUid === undefined) {
183
319
  const uid = await this.executeOdooRpc(access, 'common', 'authenticate', [
184
320
  credentials.db, credentials.login, credentials.apiKey, {},
185
321
  ]);
186
322
  if (typeof uid !== 'number' || !Number.isInteger(uid) || uid <= 0) {
187
323
  // Odoo answers `false` for rejected credentials — a terminal answer, spelled loudly.
324
+ //
325
+ // The previously cached identity is left alone rather than dropped: it belongs to a
326
+ // DIFFERENT key (that is why we are here), so it can never be served for these
327
+ // credentials, and keeping it means a rotation that is rolled back does not pay a second
328
+ // handshake. Only a successful authenticate writes the field.
188
329
  throw new HttpApiProviderAccessError(`Odoo rejected the credentials for provider '${this.binding.providerRef}' (db '${credentials.db}', login '${credentials.login}'): `
189
330
  + `authenticate answered ${JSON.stringify(uid)} instead of a uid.`);
190
331
  }
191
- this.odooAuthenticatedUid = uid;
332
+ authenticatedUid = uid;
333
+ this.odooAuthenticatedIdentity = { credentialKey, uid };
192
334
  }
193
335
  return this.executeOdooRpc(access, 'object', 'execute_kw', [
194
336
  credentials.db,
195
- this.odooAuthenticatedUid,
337
+ authenticatedUid,
196
338
  credentials.apiKey,
197
339
  this.binding.entityRef,
198
340
  call.method,
@@ -200,12 +342,29 @@ export class HttpApiReadClient {
200
342
  call.kwargs,
201
343
  ]);
202
344
  }
345
+ /**
346
+ * The identity a cached uid belongs to: the instance it was minted on, and the exact credential
347
+ * it was minted with.
348
+ *
349
+ * `JSON.stringify` over the tuple rather than a joined string because JSON escapes each member,
350
+ * so no combination of separators inside a db name, a login or a key can make two different
351
+ * tuples produce one key.
352
+ */
353
+ static odooCredentialKey(baseUrl, credentials) {
354
+ return createHash('sha256')
355
+ .update(JSON.stringify([baseUrl, credentials.db, credentials.login, credentials.apiKey]))
356
+ .digest('hex');
357
+ }
203
358
  async executeOdooRpc(access, service, method, args) {
204
359
  const response = await executeHttpApiTransportCall({
205
360
  method: 'POST',
206
361
  url: `${access.baseUrl}/jsonrpc`,
207
362
  headers: { Accept: 'application/json', ...access.headers },
208
- jsonBody: { jsonrpc: '2.0', method: 'call', params: { service, method, args }, id: 1 },
363
+ body: { encoding: HttpApiTransportBodyEncoding.JSON, value: { jsonrpc: '2.0', method: 'call', params: { service, method, args }, id: 1 } },
364
+ // Two callers, both safe to repeat: `common.authenticate` (a pure question) and
365
+ // `object.execute_kw` with a read method — the Odoo compiler emits `search_read`/
366
+ // `search_count` and nothing that writes.
367
+ retrySafe: true,
209
368
  }, this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget);
210
369
  const envelope = response.json;
211
370
  if (envelope && typeof envelope === 'object' && envelope.error) {
@@ -216,11 +375,14 @@ export class HttpApiReadClient {
216
375
  // ── Erasure-family calls (stance 6b — the door ORCHESTRATES, the client frames) ──
217
376
  /** OData's canonical `DELETE /EntitySet(key)`; a 404 is the row already gone (idempotent). */
218
377
  async odataDeleteByPath(executionContext, path) {
219
- const access = this.resolveAccess(executionContext);
378
+ const access = await this.resolveAccess(executionContext);
220
379
  await this.rawCallTolerating404({
221
380
  method: 'DELETE',
222
381
  url: `${access.baseUrl}${path}`,
223
382
  headers: { Accept: 'application/json', ...access.headers },
383
+ // Idempotent by key: the second DELETE of a gone row answers 404, which this door reads as
384
+ // already-gone. That is what makes a retried timeout safe here and unsafe on a create.
385
+ retrySafe: true,
224
386
  });
225
387
  }
226
388
  /**
@@ -229,14 +391,17 @@ export class HttpApiReadClient {
229
391
  * transport error.
230
392
  */
231
393
  async restDeclaredErasureCall(executionContext, compiled) {
232
- const access = this.resolveAccess(executionContext);
394
+ const access = await this.resolveAccess(executionContext);
233
395
  const response = await this.rawCallTolerating404({
234
396
  method: compiled.method,
235
397
  url: `${access.baseUrl}${compiled.path}`,
236
398
  headers: { Accept: 'application/json', ...access.headers },
237
- jsonBody: compiled.jsonRpc
238
- ? { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: {}, id: 1 }
399
+ body: compiled.jsonRpc
400
+ ? { encoding: HttpApiTransportBodyEncoding.JSON, value: { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: {}, id: 1 } }
239
401
  : undefined,
402
+ // A declared erasure addresses ONE row by key and is idempotent for the same reason the
403
+ // OData delete above is; the repository's own remediation for a partial failure is a re-run.
404
+ retrySafe: true,
240
405
  });
241
406
  if (compiled.jsonRpc && response !== undefined) {
242
407
  const envelope = response;
@@ -1 +1 @@
1
- {"version":3,"file":"http-api-read-client.backend.js","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-read-client.backend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `HttpApiReadClient` — THE one implementation of the HTTP-API dialect mechanics\n * (partial-resource paper, PR-29): provider-access resolution, transport execution (timeout /\n * bounded retry / rate budget), the per-dialect wire framing (OData GET, REST_JSON GET/POST +\n * JSON-RPC envelope semantics, Odoo `execute_kw` with the `common.authenticate` handshake and\n * the instance-cached uid), and the 404-as-null read tolerance.\n *\n * TWO consumers, by design: the VIRTUAL repository (`http-api-resource-repository`) and the\n * pipeline extraction source (P-2). The declaration layer is split on purpose — a pipeline is\n * not a persistence adapter — but the runtime middle must be structurally un-duplicable: this\n * class is where \"same mechanism\" stops being a discipline and becomes a fact. The drift pin\n * (`http-api-read-client.single-authority.test.ts`) refuses a second `authenticate` handshake\n * anywhere in the directory.\n *\n * Everything above the wire stays with the consumer: T-set translation, projection, scope\n * checks, audit emission, erasure orchestration, mapping/loading. This class never widens or\n * narrows a query and never interprets a ROW — it moves compiled requests and returns parsed\n * bodies.\n */\n\nimport type {\n HttpApiResourceBinding,\n} from '@wildo-ai/saas-models/external-data';\n\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\n\nimport {\n HttpApiRateBudget,\n HttpApiTransportError,\n HttpApiTransportFailureKind,\n executeHttpApiTransportCall,\n type HttpApiFetchLike,\n type HttpApiTransportRequest,\n} from './http-api-transport.backend';\nimport type { ODataCompiledRequest } from './odata-query-compiler.backend';\nimport type { RestJsonCompiledErasureRequest, RestJsonCompiledRequest } from './rest-json-query-compiler.backend';\nimport type { OdooCompiledCall } from './odoo-jsonrpc-compiler.backend';\nimport {\n HttpApiRemoteContractError,\n resolveHttpApiResultPath,\n} from './http-api-row-projection.backend';\nimport {\n HttpApiProviderAccessError,\n type HttpApiProviderAccess,\n type HttpApiProviderAccessResolver,\n} from './http-api-provider-access.backend';\n\n/** Default fetch over the platform global (Node ≥18); injectable for tests. */\nexport const defaultHttpApiFetch: HttpApiFetchLike = async (url, init) => {\n const response = await fetch(url, init as RequestInit);\n return { status: response.status, ok: response.ok, text: () => response.text() };\n};\n\nexport class HttpApiReadClient {\n private readonly rateBudget: HttpApiRateBudget;\n\n /**\n * The authenticated uid for this binding's credentials, resolved once per client instance\n * through the documented `common.authenticate(db, login, api_key, {})` handshake and cached —\n * clients are constructed once per consumer and the credential set is instance-stable. A\n * credential rotation therefore needs a process restart in slice 1 (recorded; an invalidation\n * hook belongs with the runtime-proof work, measured against real session-expiry behavior).\n */\n private odooAuthenticatedUid?: number;\n\n constructor(\n private readonly binding: HttpApiResourceBinding,\n private readonly providerAccessResolver: HttpApiProviderAccessResolver,\n private readonly fetchImpl: HttpApiFetchLike = defaultHttpApiFetch,\n ) {\n this.rateBudget = new HttpApiRateBudget(binding.remoteCallSemantics.maxRequestsPerMinute);\n }\n\n public resolveAccess(executionContext: ExecutionContext<any>): HttpApiProviderAccess {\n return this.providerAccessResolver.resolveAccess(this.binding, executionContext);\n }\n\n // ── OData ────────────────────────────────────────────────────────────────────\n\n public async odataGet(executionContext: ExecutionContext<any>, compiled: ODataCompiledRequest): Promise<unknown> {\n const access = this.resolveAccess(executionContext);\n const response = await executeHttpApiTransportCall(\n this.buildODataRequest(access, compiled), this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n return response.json;\n }\n\n public async odataGetOrNull(executionContext: ExecutionContext<any>, compiled: ODataCompiledRequest): Promise<unknown | null> {\n try {\n return await this.odataGet(executionContext, compiled);\n } catch (error) {\n if (error instanceof HttpApiTransportError && error.detail.status === 404) return null;\n throw error;\n }\n }\n\n /**\n * Follow an OData server-driven paging link (`@odata.nextLink`) — the drift-safe extraction\n * paging the v3.1 discipline mandates. The link is the server's own absolute (or\n * service-relative) continuation URL; nothing is compiled locally.\n */\n public async odataGetByUrl(executionContext: ExecutionContext<any>, url: string): Promise<unknown> {\n const access = this.resolveAccess(executionContext);\n const absoluteUrl = url.startsWith('http') ? url : `${access.baseUrl}${url.startsWith('/') ? '' : '/'}${url}`;\n const response = await executeHttpApiTransportCall(\n { method: 'GET', url: absoluteUrl, headers: { Accept: 'application/json', ...access.headers } },\n this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n return response.json;\n }\n\n /**\n * `GET /$metadata` as raw XML text — the WARN-only schema-drift probe's input (partial-resource\n * paper, PR-21). Deliberately OUTSIDE the JSON transport: the EDMX document is XML, and the\n * transport treats a 2xx non-JSON body as a contract failure — correct for every data read,\n * wrong for this one diagnostic document. One plain fetch, no retry, no rate-budget draw\n * (a diagnostic must never spend the data path's budget), and EVERY failure — non-200, network\n * error, a server that does not serve `$metadata` at all — answers `null`: the probe's caller\n * treats null as \"nothing to compare\", never as drift.\n */\n public async odataMetadataText(executionContext: ExecutionContext<any>): Promise<string | null> {\n try {\n const access = this.resolveAccess(executionContext);\n const response = await this.fetchImpl(`${access.baseUrl}/$metadata`, {\n method: 'GET',\n headers: { Accept: 'application/xml', ...access.headers },\n });\n if (response.status !== 200) return null;\n return await response.text();\n } catch {\n return null;\n }\n }\n\n private buildODataRequest(access: { baseUrl: string; headers: Record<string, string> }, compiled: ODataCompiledRequest): HttpApiTransportRequest {\n const search = Object.entries(compiled.params)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n .join('&');\n return {\n method: 'GET',\n url: `${access.baseUrl}${compiled.path}${search.length > 0 ? `?${search}` : ''}`,\n headers: { Accept: 'application/json', ...access.headers },\n };\n }\n\n // ── REST_JSON ────────────────────────────────────────────────────────────────\n\n public async restJson(executionContext: ExecutionContext<any>, compiled: RestJsonCompiledRequest): Promise<unknown> {\n const access = this.resolveAccess(executionContext);\n const response = await executeHttpApiTransportCall(\n this.buildRestJsonRequest(access, compiled), this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n if (compiled.jsonRpc) {\n const envelope = response.json as { result?: unknown; error?: { code?: number; message?: string } };\n if (envelope && typeof envelope === 'object' && envelope.error) {\n throw new HttpApiTransportError(\n `JSON-RPC error from the target: ${envelope.error.message ?? 'unknown'} (code ${envelope.error.code ?? '?'})`,\n { url: compiled.path, method: 'POST', attempts: 1, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n }\n return envelope?.result;\n }\n return response.json;\n }\n\n /**\n * Single-row REST read with the dialect's no-row semantics: a remote 404, and a `null`/`false`\n * payload at the declared resultPath, are the target's honest \"no row\"; an ABSENT leaf is a\n * contract breach, never a silent not-found.\n */\n public async restJsonReadOrNull(executionContext: ExecutionContext<any>, compiled: RestJsonCompiledRequest): Promise<unknown | null> {\n try {\n const body = await this.restJson(executionContext, compiled);\n const payload = resolveHttpApiResultPath(body, compiled.resultPath);\n if (payload === null || payload === false) return null;\n if (payload === undefined) {\n throw new HttpApiRemoteContractError(\n `The remote read answered 200 but the declared resultPath '${compiled.resultPath ?? '(body)'}' resolves to nothing.`,\n );\n }\n return payload;\n } catch (error) {\n if (error instanceof HttpApiTransportError && error.detail.status === 404) return null;\n throw error;\n }\n }\n\n private buildRestJsonRequest(access: { baseUrl: string; headers: Record<string, string> }, compiled: RestJsonCompiledRequest): HttpApiTransportRequest {\n if (compiled.jsonRpc) {\n return {\n method: 'POST',\n url: `${access.baseUrl}${compiled.path}`,\n headers: { Accept: 'application/json', ...access.headers },\n jsonBody: { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: compiled.params, id: 1 },\n };\n }\n if (compiled.method === 'POST') {\n return {\n method: 'POST',\n url: `${access.baseUrl}${compiled.path}`,\n headers: { Accept: 'application/json', ...access.headers },\n jsonBody: compiled.params,\n };\n }\n const search = Object.entries(compiled.params)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n return {\n method: 'GET',\n url: `${access.baseUrl}${compiled.path}${search.length > 0 ? `?${search}` : ''}`,\n headers: { Accept: 'application/json', ...access.headers },\n };\n }\n\n // ── Odoo execute_kw ──────────────────────────────────────────────────────────\n\n public async odooExecuteKw(executionContext: ExecutionContext<any>, call: OdooCompiledCall): Promise<unknown> {\n const access = this.resolveAccess(executionContext);\n const credentials = access.jsonRpcInArgsCredentials;\n if (!credentials) {\n // An ODOO_JSONRPC binding on a provider whose contract declares no in-args auth cannot\n // authenticate at all — the header credential is unread by `/jsonrpc`.\n throw new HttpApiProviderAccessError(\n `Provider '${this.binding.providerRef}' declares no jsonRpcInArgsAuth on its rest contract, but this binding speaks ODOO_JSONRPC — `\n + 'the target authenticates INSIDE the RPC args; declare jsonRpcInArgsAuth (dbEnvVarName, loginEnvVarName) on the provider module.',\n );\n }\n\n if (this.odooAuthenticatedUid === undefined) {\n const uid = await this.executeOdooRpc(access, 'common', 'authenticate', [\n credentials.db, credentials.login, credentials.apiKey, {},\n ]);\n if (typeof uid !== 'number' || !Number.isInteger(uid) || uid <= 0) {\n // Odoo answers `false` for rejected credentials — a terminal answer, spelled loudly.\n throw new HttpApiProviderAccessError(\n `Odoo rejected the credentials for provider '${this.binding.providerRef}' (db '${credentials.db}', login '${credentials.login}'): `\n + `authenticate answered ${JSON.stringify(uid)} instead of a uid.`,\n );\n }\n this.odooAuthenticatedUid = uid;\n }\n\n return this.executeOdooRpc(access, 'object', 'execute_kw', [\n credentials.db,\n this.odooAuthenticatedUid,\n credentials.apiKey,\n this.binding.entityRef,\n call.method,\n call.positionalArgs,\n call.kwargs,\n ]);\n }\n\n private async executeOdooRpc(\n access: { baseUrl: string; headers: Record<string, string> },\n service: string,\n method: string,\n args: unknown[],\n ): Promise<unknown> {\n const response = await executeHttpApiTransportCall(\n {\n method: 'POST',\n url: `${access.baseUrl}/jsonrpc`,\n headers: { Accept: 'application/json', ...access.headers },\n jsonBody: { jsonrpc: '2.0', method: 'call', params: { service, method, args }, id: 1 },\n },\n this.binding.remoteCallSemantics,\n this.fetchImpl,\n this.rateBudget,\n );\n const envelope = response.json as { result?: unknown; error?: { code?: number; message?: string; data?: { message?: string } } };\n if (envelope && typeof envelope === 'object' && envelope.error) {\n throw new HttpApiTransportError(\n `Odoo JSON-RPC error: ${envelope.error.data?.message ?? envelope.error.message ?? 'unknown'} (code ${envelope.error.code ?? '?'})`,\n { url: '/jsonrpc', method: 'POST', attempts: 1, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n }\n return envelope?.result;\n }\n\n // ── Erasure-family calls (stance 6b — the door ORCHESTRATES, the client frames) ──\n\n /** OData's canonical `DELETE /EntitySet(key)`; a 404 is the row already gone (idempotent). */\n public async odataDeleteByPath(executionContext: ExecutionContext<any>, path: string): Promise<void> {\n const access = this.resolveAccess(executionContext);\n await this.rawCallTolerating404({\n method: 'DELETE',\n url: `${access.baseUrl}${path}`,\n headers: { Accept: 'application/json', ...access.headers },\n });\n }\n\n /**\n * One declared REST_JSON erasure call (stance 6b explicit spec): frames method/path/RPC\n * envelope, tolerates 404 as already-gone, and surfaces a JSON-RPC error envelope as a\n * transport error.\n */\n public async restDeclaredErasureCall(\n executionContext: ExecutionContext<any>,\n compiled: RestJsonCompiledErasureRequest,\n ): Promise<void> {\n const access = this.resolveAccess(executionContext);\n const response = await this.rawCallTolerating404({\n method: compiled.method,\n url: `${access.baseUrl}${compiled.path}`,\n headers: { Accept: 'application/json', ...access.headers },\n jsonBody: compiled.jsonRpc\n ? { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: {}, id: 1 }\n : undefined,\n });\n if (compiled.jsonRpc && response !== undefined) {\n const envelope = response as { error?: { code?: number; message?: string } };\n if (envelope && typeof envelope === 'object' && envelope.error) {\n throw new HttpApiTransportError(\n `JSON-RPC error from the declared erasure operation: ${envelope.error.message ?? 'unknown'} (code ${envelope.error.code ?? '?'})`,\n { url: compiled.path, method: compiled.method, attempts: 1, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n }\n }\n }\n\n // ── Generic transport ────────────────────────────────────────────────────────\n\n /** One transport call, body parsed; the caller frames the request. */\n public async rawCall(request: HttpApiTransportRequest): Promise<unknown> {\n const response = await executeHttpApiTransportCall(\n request, this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n return response.json;\n }\n\n /** As {@link rawCall}, tolerating a remote 404 as \"already gone\" (idempotent deletes). */\n public async rawCallTolerating404(request: HttpApiTransportRequest): Promise<unknown> {\n try {\n return await this.rawCall(request);\n } catch (error) {\n if (error instanceof HttpApiTransportError && error.detail.status === 404) return undefined;\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"http-api-read-client.backend.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/http-api/http-api-read-client.backend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `HttpApiReadClient` — THE one implementation of the HTTP-API dialect mechanics\n * (partial-resource paper, PR-29): provider-access resolution, transport execution (timeout /\n * bounded retry / rate budget), the per-dialect wire framing (OData GET, REST_JSON GET/POST +\n * JSON-RPC envelope semantics, Odoo `execute_kw` with the `common.authenticate` handshake and\n * the credential-keyed cached uid), and the 404-as-null read tolerance.\n *\n * TWO consumers, by design: the VIRTUAL repository (`http-api-resource-repository`) and the\n * pipeline extraction source (P-2). The declaration layer is split on purpose — a pipeline is\n * not a persistence adapter — but the runtime middle must be structurally un-duplicable: this\n * class is where \"same mechanism\" stops being a discipline and becomes a fact. The drift pin\n * (`http-api-read-client.single-authority.test.ts`) refuses a second `authenticate` handshake\n * anywhere in the directory.\n *\n * Everything above the wire stays with the consumer: T-set translation, projection, scope\n * checks, audit emission, erasure orchestration, mapping/loading. This class never widens or\n * narrows a query and never interprets a ROW — it moves compiled requests and returns parsed\n * bodies.\n */\n\nimport { createHash } from 'node:crypto';\n\nimport {\n ExternalProvider_Connection_DelegationMode,\n ExternalProvider_Connection_OwnerScope,\n} from '@wildo-ai/external-connectors-models';\nimport {\n ExternalProvider_ConnectionTargetSchema,\n type ExternalProvider_ConnectionTarget,\n} from '@wildo-ai/external-connectors-models';\nimport type {\n HttpApiResourceBinding,\n} from '@wildo-ai/saas-models/external-data';\n\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\n\nimport {\n HttpApiRateBudget,\n HttpApiTransportBodyEncoding,\n HttpApiTransportError,\n HttpApiTransportFailureKind,\n executeHttpApiTransportCall,\n type HttpApiFetchLike,\n type HttpApiTransportRequest,\n} from './http-api-transport.backend';\nimport type { ODataCompiledRequest } from './odata-query-compiler.backend';\nimport type { RestJsonCompiledErasureRequest, RestJsonCompiledRequest } from './rest-json-query-compiler.backend';\nimport type { OdooCompiledCall } from './odoo-jsonrpc-compiler.backend';\nimport {\n HttpApiRemoteContractError,\n resolveHttpApiResultPath,\n} from './http-api-row-projection.backend';\nimport {\n HttpApiProviderAccessError,\n type HttpApiProviderAccess,\n type HttpApiProviderAccessResolver,\n} from './http-api-provider-access.backend';\n\n/** Default fetch over the platform global (Node ≥18); injectable for tests. */\nexport const defaultHttpApiFetch: HttpApiFetchLike = async (url, init) => {\n // outbound-deadline: a forwarding seam. `init.signal` is the caller's, and every caller reaches\n // here through `executeHttpApiTransportCall`, which owns the binding's `remoteCallSemantics\n // .timeoutMs` and its retry budget. Minting a second deadline here would put two competing\n // timers on one request and hide which one fired.\n const response = await fetch(url, init as RequestInit);\n return { status: response.status, ok: response.ok, text: () => response.text() };\n};\n\n/**\n * The binding's declared connection SHAPE, plus the instance ids this execution supplies — ONE\n * place, deliberately.\n *\n * ## What changed, and why the refusal that used to live here is gone\n *\n * This function used to refuse every delegated binding, naming a missing subsystem: \"the engine has\n * no outbound per-user token store\". That was true when it was written and is not any more — the\n * store exists, is bound, and serves the connection controller (#333). What actually blocked the\n * lift was narrower: the binding carried a two-valued `identityMode`, and `USER_DELEGATED` cannot\n * say WHOSE ACCOUNT is spent. A user's own grant (`USER × SERVICE`) and a tenant's registration\n * acting for one of its members (`ORGANIZATION × USER`) are both \"per-user OAuth\" and resolve\n * different credentials, so mapping the one field would have silently picked a lane. The binding\n * now carries the shape itself, and this function only has to source the instances.\n *\n * ## The ids come from the EXECUTION, and that is not the resolver reading ambient context\n *\n * `ExternalProvider_ConnectionTarget`'s own contract says a target is supplied BY THE CALL and never\n * invented by the resolver, because \"the resolver cannot verify a target it also invented\". This is\n * the call side of that split: an httpApiBinding read is triggered by a resource operation, so the\n * organization and the user it runs for ARE the execution's, and naming them here is what leaves the\n * resolver free to authorize them. It refuses rather than falling back — an absent organization on a\n * tenant-owned binding must not quietly become the application's account, which is the exact\n * mis-attribution `resolveProviderSecretForConnection` exists to prevent.\n *\n * ## The rules are the SCHEMA's\n *\n * Every refusal below comes from `ExternalProvider_ConnectionTargetSchema`'s own refinements, which\n * already say — better than a re-statement here would — that an instance-owned connection names\n * which instance, that an application-owned one has no id to name, and that a delegated call must\n * name the user it acts for. Re-deriving them here would be a second copy that drifts.\n */\nfunction connectionTargetForBinding(\n binding: Pick<HttpApiResourceBinding, 'providerRef' | 'connection'>,\n executionContext: ExecutionContext<any>,\n): ExternalProvider_ConnectionTarget {\n const { ownerScope, delegation } = binding.connection;\n const initiator = executionContext.initiatorIds;\n\n const ownerId = ownerScope === ExternalProvider_Connection_OwnerScope.ORGANIZATION\n ? initiator?.organizationId\n : ownerScope === ExternalProvider_Connection_OwnerScope.USER\n ? initiator?.userId\n : undefined;\n\n const candidate = {\n ownerScope,\n delegation,\n ...(ownerId === undefined ? {} : { ownerId }),\n ...(delegation === ExternalProvider_Connection_DelegationMode.USER && initiator?.userId !== undefined\n ? { actingForUserId: initiator.userId }\n : {}),\n };\n\n const parsed = ExternalProvider_ConnectionTargetSchema.safeParse(candidate);\n if (!parsed.success) {\n throw new HttpApiProviderAccessError(\n `The binding toward provider '${binding.providerRef}' declares a ${ownerScope} × ${delegation} connection, `\n + 'and this execution cannot supply what that names: '\n + parsed.error.issues.map((issue) => issue.message).join(' ')\n + ' Either trigger the read from an execution that carries them, or declare a connection the application can satisfy alone.',\n );\n }\n return parsed.data;\n}\n\nexport class HttpApiReadClient {\n private readonly rateBudget: HttpApiRateBudget;\n\n /**\n * The authenticated uid, KEYED ON the credential it was minted under rather than merely\n * remembered against this instance.\n *\n * The uid comes from the documented `common.authenticate(db, login, api_key, {})` handshake and\n * is worth caching: the virtual repository builds ONE client per binding and keeps it for the\n * process lifetime (`http-api-resource-repository.backend.service.ts:163`), so re-authenticating\n * per call would double every read's round trips.\n *\n * What it must never do is outlive the credential. `resolveAccess` runs on EVERY call and reads\n * the secret afresh (environment, provider registry, or a tenant credential row), so a rotation\n * genuinely reaches this class — and a uid remembered against the instance would then be an\n * identity minted under the retired credential, presented on every subsequent `execute_kw`.\n *\n * Keying the cache on the credential is what makes that unrepresentable, and it is deliberately\n * preferred over an `invalidate()` some rotation path has to remember to call: there is no\n * enumeration of rotation sites to get wrong, because a changed credential simply misses. Note\n * the key includes `baseUrl` — a uid is a `res.users` row id on ONE database on ONE instance, so\n * repointing the binding at another host must not reuse it either.\n *\n * The key is a SHA-256 of the tuple rather than the tuple itself, so the API key is not held\n * alive on a long-lived field beyond the call that resolved it. The hash is per `execute_kw`\n * call and costs microseconds against a network round trip.\n *\n * ONE slot, not a map. A map would save a handshake when a credential the client has already\n * seen comes back, at the cost of accumulating one secret-derived entry per retired credential\n * for the lifetime of the process — an unbounded set, to avoid a round trip nobody has measured.\n * A binding names one credential at a time, so the slot is single and a rollback re-authenticates.\n *\n * The single slot stays SAFE now that an Odoo binding MAY name a tenant-owned target (#333, which\n * widened `connectionTargetForBinding` from the `APPLICATION` pin it used to hold). Alternating\n * tenants each miss the key and pay a handshake — slower, and never one tenant acting under\n * another tenant's uid, which is what an instance-remembered uid would have become the moment the\n * scope widened. The key is the credential, so the widening cost a round trip and no correctness.\n *\n * This replaces the slice-1 note that said a rotation needs a process restart, and with it the\n * owed work to \"measure against real session-expiry behavior\". That measurement was owed for an\n * invalidation TRIGGER, and this design needs no trigger. It also has nothing to expire against:\n * `execute_kw` below re-presents `db` + `uid` + `apiKey` in the args of every single call, so\n * there is no server-side session here whose lifetime we could be racing — the only thing that\n * can retire the uid is the credential (or the instance) it names, which is exactly the key.\n */\n private odooAuthenticatedIdentity?: { credentialKey: string; uid: number };\n\n constructor(\n private readonly binding: HttpApiResourceBinding,\n private readonly providerAccessResolver: HttpApiProviderAccessResolver,\n private readonly fetchImpl: HttpApiFetchLike = defaultHttpApiFetch,\n ) {\n this.rateBudget = new HttpApiRateBudget(binding.remoteCallSemantics.maxRequestsPerMinute);\n }\n\n /**\n * `async`, so a target this execution cannot satisfy REJECTS rather than throwing synchronously.\n *\n * `connectionTargetForBinding` refuses before the port is reached, and a synchronous throw out of\n * a `Promise`-returning method escapes every `.catch()` a caller attaches — the failure would land\n * as an unhandled exception in whichever frame happened to call it without `await`. The keyword is\n * the whole fix.\n */\n public async resolveAccess(executionContext: ExecutionContext<any>): Promise<HttpApiProviderAccess> {\n return this.providerAccessResolver.resolveAccess(\n this.binding.providerRef,\n connectionTargetForBinding(this.binding, executionContext),\n executionContext,\n );\n }\n\n // ── OData ────────────────────────────────────────────────────────────────────\n\n public async odataGet(executionContext: ExecutionContext<any>, compiled: ODataCompiledRequest): Promise<unknown> {\n const access = await this.resolveAccess(executionContext);\n const response = await executeHttpApiTransportCall(\n this.buildODataRequest(access, compiled), this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n return response.json;\n }\n\n public async odataGetOrNull(executionContext: ExecutionContext<any>, compiled: ODataCompiledRequest): Promise<unknown | null> {\n try {\n return await this.odataGet(executionContext, compiled);\n } catch (error) {\n if (error instanceof HttpApiTransportError && error.detail.status === 404) return null;\n throw error;\n }\n }\n\n /**\n * Follow an OData server-driven paging link (`@odata.nextLink`) — the drift-safe extraction\n * paging the v3.1 discipline mandates. The link is the server's own absolute (or\n * service-relative) continuation URL; nothing is compiled locally.\n */\n public async odataGetByUrl(executionContext: ExecutionContext<any>, url: string): Promise<unknown> {\n const access = await this.resolveAccess(executionContext);\n const absoluteUrl = url.startsWith('http') ? url : `${access.baseUrl}${url.startsWith('/') ? '' : '/'}${url}`;\n const response = await executeHttpApiTransportCall(\n // A paging continuation is a read: safe to re-send after a timeout.\n { method: 'GET', url: absoluteUrl, headers: { Accept: 'application/json', ...access.headers }, retrySafe: true },\n this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n return response.json;\n }\n\n /**\n * `GET /$metadata` as raw XML text — the WARN-only schema-drift probe's input (partial-resource\n * paper, PR-21). Deliberately OUTSIDE the JSON transport: the EDMX document is XML, and the\n * transport treats a 2xx non-JSON body as a contract failure — correct for every data read,\n * wrong for this one diagnostic document. One plain fetch, no retry, no rate-budget draw\n * (a diagnostic must never spend the data path's budget), and EVERY failure — non-200, network\n * error, a server that does not serve `$metadata` at all — answers `null`: the probe's caller\n * treats null as \"nothing to compare\", never as drift.\n */\n public async odataMetadataText(executionContext: ExecutionContext<any>): Promise<string | null> {\n try {\n const access = await this.resolveAccess(executionContext);\n /*\n * The binding's OWN call budget, even though this probe steps outside the transport.\n *\n * Stepping outside `executeHttpApiTransportCall` for the XML framing also stepped outside its\n * deadline, and the `catch` below turns every failure into `null` — so an unresponsive remote\n * did not surface as drift, as an error, or as anything at all. It simply held the caller.\n * That is the quietest shape this defect takes, and the reason a second MECHANISM for the same\n * outbound work has to re-derive the bound rather than inherit it by proximity.\n *\n * The budget is the same because the REMOTE is the same. What this probe legitimately declines\n * is the retry and the rate-budget draw, not the deadline.\n */\n const response = await this.fetchImpl(`${access.baseUrl}/$metadata`, {\n method: 'GET',\n headers: { Accept: 'application/xml', ...access.headers },\n signal: AbortSignal.timeout(this.binding.remoteCallSemantics.timeoutMs),\n });\n if (response.status !== 200) return null;\n return await response.text();\n } catch {\n return null;\n }\n }\n\n private buildODataRequest(access: { baseUrl: string; headers: Record<string, string> }, compiled: ODataCompiledRequest): HttpApiTransportRequest {\n const search = Object.entries(compiled.params)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n .join('&');\n return {\n method: 'GET',\n url: `${access.baseUrl}${compiled.path}${search.length > 0 ? `?${search}` : ''}`,\n headers: { Accept: 'application/json', ...access.headers },\n retrySafe: true,\n };\n }\n\n // ── REST_JSON ────────────────────────────────────────────────────────────────\n\n public async restJson(executionContext: ExecutionContext<any>, compiled: RestJsonCompiledRequest): Promise<unknown> {\n const access = await this.resolveAccess(executionContext);\n const response = await executeHttpApiTransportCall(\n this.buildRestJsonRequest(access, compiled), this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n if (compiled.jsonRpc) {\n const envelope = response.json as { result?: unknown; error?: { code?: number; message?: string } };\n if (envelope && typeof envelope === 'object' && envelope.error) {\n throw new HttpApiTransportError(\n `JSON-RPC error from the target: ${envelope.error.message ?? 'unknown'} (code ${envelope.error.code ?? '?'})`,\n { url: compiled.path, method: 'POST', attempts: 1, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n }\n return envelope?.result;\n }\n return response.json;\n }\n\n /**\n * Single-row REST read with the dialect's no-row semantics: a remote 404, and a `null`/`false`\n * payload at the declared resultPath, are the target's honest \"no row\"; an ABSENT leaf is a\n * contract breach, never a silent not-found.\n */\n public async restJsonReadOrNull(executionContext: ExecutionContext<any>, compiled: RestJsonCompiledRequest): Promise<unknown | null> {\n try {\n const body = await this.restJson(executionContext, compiled);\n const payload = resolveHttpApiResultPath(body, compiled.resultPath);\n if (payload === null || payload === false) return null;\n if (payload === undefined) {\n throw new HttpApiRemoteContractError(\n `The remote read answered 200 but the declared resultPath '${compiled.resultPath ?? '(body)'}' resolves to nothing.`,\n );\n }\n return payload;\n } catch (error) {\n if (error instanceof HttpApiTransportError && error.detail.status === 404) return null;\n throw error;\n }\n }\n\n private buildRestJsonRequest(access: { baseUrl: string; headers: Record<string, string> }, compiled: RestJsonCompiledRequest): HttpApiTransportRequest {\n if (compiled.jsonRpc) {\n return {\n method: 'POST',\n url: `${access.baseUrl}${compiled.path}`,\n headers: { Accept: 'application/json', ...access.headers },\n body: { encoding: HttpApiTransportBodyEncoding.JSON, value: { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: compiled.params, id: 1 } },\n // POST-shaped, read by construction: the read compilers are the only producers of this\n // request and they compile nothing but reads, so re-sending it cannot duplicate a write.\n retrySafe: true,\n };\n }\n if (compiled.method === 'POST') {\n return {\n method: 'POST',\n url: `${access.baseUrl}${compiled.path}`,\n headers: { Accept: 'application/json', ...access.headers },\n body: { encoding: HttpApiTransportBodyEncoding.JSON, value: compiled.params },\n // Same argument as the JSON-RPC branch above: a POST-shaped SEARCH is still a read.\n retrySafe: true,\n };\n }\n const search = Object.entries(compiled.params)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n return {\n method: 'GET',\n url: `${access.baseUrl}${compiled.path}${search.length > 0 ? `?${search}` : ''}`,\n headers: { Accept: 'application/json', ...access.headers },\n retrySafe: true,\n };\n }\n\n // ── Odoo execute_kw ──────────────────────────────────────────────────────────\n\n public async odooExecuteKw(executionContext: ExecutionContext<any>, call: OdooCompiledCall): Promise<unknown> {\n const access = await this.resolveAccess(executionContext);\n const credentials = access.jsonRpcInArgsCredentials;\n if (!credentials) {\n // An ODOO_JSONRPC binding on a provider whose contract declares no in-args auth cannot\n // authenticate at all — the header credential is unread by `/jsonrpc`.\n throw new HttpApiProviderAccessError(\n `Provider '${this.binding.providerRef}' declares no jsonRpcInArgsAuth on its rest contract, but this binding speaks ODOO_JSONRPC — `\n + 'the target authenticates INSIDE the RPC args; declare jsonRpcInArgsAuth (dbEnvVarName, loginEnvVarName) on the provider module.',\n );\n }\n\n // Resolved from THIS call's access, so a rotated credential produces a different key and the\n // cached identity below simply does not match — no invalidation call, and therefore no\n // rotation path that can forget to make one.\n const credentialKey = HttpApiReadClient.odooCredentialKey(access.baseUrl, credentials);\n let authenticatedUid = this.odooAuthenticatedIdentity?.credentialKey === credentialKey\n ? this.odooAuthenticatedIdentity.uid\n : undefined;\n\n if (authenticatedUid === undefined) {\n const uid = await this.executeOdooRpc(access, 'common', 'authenticate', [\n credentials.db, credentials.login, credentials.apiKey, {},\n ]);\n if (typeof uid !== 'number' || !Number.isInteger(uid) || uid <= 0) {\n // Odoo answers `false` for rejected credentials — a terminal answer, spelled loudly.\n //\n // The previously cached identity is left alone rather than dropped: it belongs to a\n // DIFFERENT key (that is why we are here), so it can never be served for these\n // credentials, and keeping it means a rotation that is rolled back does not pay a second\n // handshake. Only a successful authenticate writes the field.\n throw new HttpApiProviderAccessError(\n `Odoo rejected the credentials for provider '${this.binding.providerRef}' (db '${credentials.db}', login '${credentials.login}'): `\n + `authenticate answered ${JSON.stringify(uid)} instead of a uid.`,\n );\n }\n authenticatedUid = uid;\n this.odooAuthenticatedIdentity = { credentialKey, uid };\n }\n\n return this.executeOdooRpc(access, 'object', 'execute_kw', [\n credentials.db,\n authenticatedUid,\n credentials.apiKey,\n this.binding.entityRef,\n call.method,\n call.positionalArgs,\n call.kwargs,\n ]);\n }\n\n /**\n * The identity a cached uid belongs to: the instance it was minted on, and the exact credential\n * it was minted with.\n *\n * `JSON.stringify` over the tuple rather than a joined string because JSON escapes each member,\n * so no combination of separators inside a db name, a login or a key can make two different\n * tuples produce one key.\n */\n private static odooCredentialKey(\n baseUrl: string,\n credentials: { db: string; login: string; apiKey: string },\n ): string {\n return createHash('sha256')\n .update(JSON.stringify([baseUrl, credentials.db, credentials.login, credentials.apiKey]))\n .digest('hex');\n }\n\n private async executeOdooRpc(\n access: { baseUrl: string; headers: Record<string, string> },\n service: string,\n method: string,\n args: unknown[],\n ): Promise<unknown> {\n const response = await executeHttpApiTransportCall(\n {\n method: 'POST',\n url: `${access.baseUrl}/jsonrpc`,\n headers: { Accept: 'application/json', ...access.headers },\n body: { encoding: HttpApiTransportBodyEncoding.JSON, value: { jsonrpc: '2.0', method: 'call', params: { service, method, args }, id: 1 } },\n // Two callers, both safe to repeat: `common.authenticate` (a pure question) and\n // `object.execute_kw` with a read method — the Odoo compiler emits `search_read`/\n // `search_count` and nothing that writes.\n retrySafe: true,\n },\n this.binding.remoteCallSemantics,\n this.fetchImpl,\n this.rateBudget,\n );\n const envelope = response.json as { result?: unknown; error?: { code?: number; message?: string; data?: { message?: string } } };\n if (envelope && typeof envelope === 'object' && envelope.error) {\n throw new HttpApiTransportError(\n `Odoo JSON-RPC error: ${envelope.error.data?.message ?? envelope.error.message ?? 'unknown'} (code ${envelope.error.code ?? '?'})`,\n { url: '/jsonrpc', method: 'POST', attempts: 1, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n }\n return envelope?.result;\n }\n\n // ── Erasure-family calls (stance 6b — the door ORCHESTRATES, the client frames) ──\n\n /** OData's canonical `DELETE /EntitySet(key)`; a 404 is the row already gone (idempotent). */\n public async odataDeleteByPath(executionContext: ExecutionContext<any>, path: string): Promise<void> {\n const access = await this.resolveAccess(executionContext);\n await this.rawCallTolerating404({\n method: 'DELETE',\n url: `${access.baseUrl}${path}`,\n headers: { Accept: 'application/json', ...access.headers },\n // Idempotent by key: the second DELETE of a gone row answers 404, which this door reads as\n // already-gone. That is what makes a retried timeout safe here and unsafe on a create.\n retrySafe: true,\n });\n }\n\n /**\n * One declared REST_JSON erasure call (stance 6b explicit spec): frames method/path/RPC\n * envelope, tolerates 404 as already-gone, and surfaces a JSON-RPC error envelope as a\n * transport error.\n */\n public async restDeclaredErasureCall(\n executionContext: ExecutionContext<any>,\n compiled: RestJsonCompiledErasureRequest,\n ): Promise<void> {\n const access = await this.resolveAccess(executionContext);\n const response = await this.rawCallTolerating404({\n method: compiled.method,\n url: `${access.baseUrl}${compiled.path}`,\n headers: { Accept: 'application/json', ...access.headers },\n body: compiled.jsonRpc\n ? { encoding: HttpApiTransportBodyEncoding.JSON, value: { jsonrpc: '2.0', method: compiled.jsonRpc.rpcMethod, params: {}, id: 1 } }\n : undefined,\n // A declared erasure addresses ONE row by key and is idempotent for the same reason the\n // OData delete above is; the repository's own remediation for a partial failure is a re-run.\n retrySafe: true,\n });\n if (compiled.jsonRpc && response !== undefined) {\n const envelope = response as { error?: { code?: number; message?: string } };\n if (envelope && typeof envelope === 'object' && envelope.error) {\n throw new HttpApiTransportError(\n `JSON-RPC error from the declared erasure operation: ${envelope.error.message ?? 'unknown'} (code ${envelope.error.code ?? '?'})`,\n { url: compiled.path, method: compiled.method, attempts: 1, kind: HttpApiTransportFailureKind.REMOTE_ERROR },\n );\n }\n }\n }\n\n // ── Generic transport ────────────────────────────────────────────────────────\n\n /** One transport call, body parsed; the caller frames the request. */\n public async rawCall(request: HttpApiTransportRequest): Promise<unknown> {\n const response = await executeHttpApiTransportCall(\n request, this.binding.remoteCallSemantics, this.fetchImpl, this.rateBudget,\n );\n return response.json;\n }\n\n /** As {@link rawCall}, tolerating a remote 404 as \"already gone\" (idempotent deletes). */\n public async rawCallTolerating404(request: HttpApiTransportRequest): Promise<unknown> {\n try {\n return await this.rawCall(request);\n } catch (error) {\n if (error instanceof HttpApiTransportError && error.detail.status === 404) return undefined;\n throw error;\n }\n }\n}\n"]}
@@ -21,6 +21,7 @@ import type { ErrorBuilderBackendService } from '../../../../errors/services/err
21
21
  import type { ResourcesRegistryBackendService } from '../../../../resources/services/resources-registry.backend.service';
22
22
  import type { ExecutionContext } from '../../../../runtime/models/execution-context.backend.schemas';
23
23
  import type { RepositoryOptions } from '../../../../base-classes/models/repositories.backend.schemas';
24
+ import { type AuditObservationLossMetricsResolver } from '../../../../monitoring/observability/audit-observation-emission.backend';
24
25
  import { type HttpApiFetchLike } from './http-api-transport.backend';
25
26
  import { type HttpApiProviderAccessResolver } from './http-api-provider-access.backend';
26
27
  type ListCallOptions = RepositoryOptions & {
@@ -55,12 +56,26 @@ export declare class HttpApiResourceRepositoryBackendService {
55
56
  private readonly providerAccessResolver;
56
57
  private readonly fetchImpl;
57
58
  private readonly auditLogsResolver?;
59
+ /**
60
+ * The loss counter behind {@link recordReadThroughAccess}, resolved the same way and for the
61
+ * same reason as the audit seam beside it: this class is built with `new`, holds no container,
62
+ * and must construct in a unit harness that binds neither. A thunk rather than the recorder
63
+ * itself so nothing is resolved on the happy path — see the seam's own type.
64
+ */
65
+ private readonly metricsResolver?;
58
66
  private readonly resourceConfiguration;
59
67
  private readonly binding;
60
68
  private readonly operationsMap;
61
69
  private readonly readClient;
62
70
  private readonly logDebug;
63
- constructor(resourceType: ResourceType, logger: LoggerService, errorBuilder: ErrorBuilderBackendService, resourceRegistry: ResourcesRegistryBackendService, providerAccessResolver: HttpApiProviderAccessResolver, fetchImpl?: HttpApiFetchLike, auditLogsResolver?: HttpApiAuditLogsResolver);
71
+ constructor(resourceType: ResourceType, logger: LoggerService, errorBuilder: ErrorBuilderBackendService, resourceRegistry: ResourcesRegistryBackendService, providerAccessResolver: HttpApiProviderAccessResolver, fetchImpl?: HttpApiFetchLike, auditLogsResolver?: HttpApiAuditLogsResolver,
72
+ /**
73
+ * The loss counter behind {@link recordReadThroughAccess}, resolved the same way and for the
74
+ * same reason as the audit seam beside it: this class is built with `new`, holds no container,
75
+ * and must construct in a unit harness that binds neither. A thunk rather than the recorder
76
+ * itself so nothing is resolved on the happy path — see the seam's own type.
77
+ */
78
+ metricsResolver?: AuditObservationLossMetricsResolver);
64
79
  doByPath<T = any, U = any>(operationRepositoryPath: Parameters<typeof ResourcesConfig_OperationPathUtils.createOperationRepositoryPathKey>[0], executionContext: ExecutionContext<any>, id_or_ids_or_filter?: any, data?: U, options?: RepositoryOptions): Promise<T>;
65
80
  doByKey<T = any, U = any>(operationRepositoryPathKey: string, executionContext: ExecutionContext<any>, id_or_ids_or_filter?: any, data?: U, options?: RepositoryOptions): Promise<T>;
66
81
  doByExecutionContext<T = any>(executionContext: ExecutionContext<any>, data?: any, options?: RepositoryOptions): Promise<T>;
@@ -90,6 +105,19 @@ export declare class HttpApiResourceRepositoryBackendService {
90
105
  private _doCount;
91
106
  private _doSearch;
92
107
  private translate;
108
+ /**
109
+ * The ONE place a REST_JSON read member becomes a compilable spec — and, since S3a (#331), the
110
+ * one place a CATALOGUE REFERENCE is resolved into one.
111
+ *
112
+ * Async because a reference loads the provider's catalogue, which is lazy by contract. All four
113
+ * call sites were already inside async methods, so this cost nothing at the boundary; what it
114
+ * buys is that a reference is resolved at the same chokepoint an inline spec is read, so no
115
+ * compiler and no caller ever learns which form the binding used.
116
+ *
117
+ * Resolved per call rather than cached here: the resolver memoizes the CATALOGUE (which is the
118
+ * expensive part), and caching the projected spec as well would put a second copy of provider
119
+ * state in every repository instance for no measurable gain.
120
+ */
93
121
  private restOperationSpec;
94
122
  private executeKeyAddressedRead;
95
123
  private executeCollectionRead;
@@ -102,6 +130,14 @@ export declare class HttpApiResourceRepositoryBackendService {
102
130
  * never fail the read it observes. Emitted ONLY after a remote round-trip actually happened —
103
131
  * match-nothing short-circuits touch no external system and record nothing.
104
132
  *
133
+ * Every emission goes through {@link emitAuditObservation}, so a lost one lands on
134
+ * `audit_observation_dropped_total` instead of nowhere. The feature detection therefore decides an
135
+ * ARGUMENT rather than an early return: handing the seam `undefined` is how this site reports
136
+ * `SERVICE_UNAVAILABLE`, the loss shape that reaches no `_createAuditLog` and used to leave nothing
137
+ * behind at all. An early return would restore that silence — and the silence is expensive here,
138
+ * because ATTRIBUTION is the whole point of the row: without it the third party's own logs show
139
+ * one shared service principal and nothing anywhere resolves it back to a person.
140
+ *
105
141
  * Emission lives at the ADAPTER, deliberately inverting the services-tier precedent
106
142
  * (`recordPlatformDirectoryAccess`'s "the repository exists once per adapter" argument):
107
143
  * HTTP_API has exactly ONE adapter, and it is the only tier that witnesses EVERY remote access
@@ -122,9 +158,16 @@ export declare class HttpApiResourceRepositoryBackendService {
122
158
  *
123
159
  * ## Identity-less by design
124
160
  *
125
- * The internal context below is inert on this path, verified per consumer: translation runs
126
- * `excludeContextualFilter` (an erasure must reach the subject's rows in EVERY tenant — the FK
127
- * equality is the confinement), and `resolveAccess` ignores the context for SERVICE_PRINCIPAL.
161
+ * The internal context below is inert on this path for translation, verified per consumer:
162
+ * translation runs `excludeContextualFilter` (an erasure must reach the subject's rows in EVERY
163
+ * tenant — the FK equality is the confinement).
164
+ *
165
+ * It is NOT inert for access. This said `resolveAccess` "ignores the context for
166
+ * SERVICE_PRINCIPAL", and since #333 the context is what NAMES the owner whose account a
167
+ * tenant-owned or user-owned binding spends. An erasure sweep runs on an internal context, so a
168
+ * binding that declares anything but an application-owned connection refuses here rather than
169
+ * erasing under the wrong account — which is the fail-closed direction, and is why the refusal is
170
+ * worth meeting as an explicit error rather than a silent fallback.
128
171
  * Attribution lives in the `HTTP_API_EXTERNAL_ERASURE` audit row the calling effect emits;
129
172
  * discovery reads here deliberately do NOT emit read-through events (the read exists only to
130
173
  * address the deletion the event already records — double-recording would be noise with no