@wildo-ai/saas-models 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 (645) hide show
  1. package/dist/esm/__tests__/setup.d.ts.map +1 -1
  2. package/dist/esm/_inspect.d.ts.map +1 -1
  3. package/dist/esm/applications/application-metadata.shared.resources-config.schemas.d.ts.map +1 -1
  4. package/dist/esm/applications/application-subject.shared.schemas.d.ts.map +1 -1
  5. package/dist/esm/applications/application-versions.shared.resources-config.schemas.d.ts.map +1 -1
  6. package/dist/esm/applications/applications-context.schemas.d.ts +14 -10
  7. package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
  8. package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
  9. package/dist/esm/applications/applications.shared.resources-config.schemas.js +4 -3
  10. package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
  11. package/dist/esm/applications/applications.shared.schemas.d.ts.map +1 -1
  12. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
  13. package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
  14. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +0 -4
  15. package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
  16. package/dist/esm/billing/billing-configuration.shared.schemas.js +59 -17
  17. package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
  18. package/dist/esm/billing/billing-enums.shared.schemas.d.ts +77 -21
  19. package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
  20. package/dist/esm/billing/billing-enums.shared.schemas.js +85 -23
  21. package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
  22. package/dist/esm/billing/billing-types.shared.schemas.d.ts +4 -3
  23. package/dist/esm/billing/billing-types.shared.schemas.d.ts.map +1 -1
  24. package/dist/esm/billing/billing-types.shared.schemas.js +45 -0
  25. package/dist/esm/billing/billing-types.shared.schemas.js.map +1 -1
  26. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
  27. package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
  28. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
  29. package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
  30. package/dist/esm/billing/price.shared.resources-config.schemas.d.ts.map +1 -1
  31. package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
  32. package/dist/esm/billing/price.shared.schemas.js +7 -1
  33. package/dist/esm/billing/price.shared.schemas.js.map +1 -1
  34. package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
  35. package/dist/esm/billing/product-behavior-policy.shared.schemas.js +52 -11
  36. package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
  37. package/dist/esm/billing/product-definition.shared.schemas.d.ts +2 -2
  38. package/dist/esm/billing/product-definition.shared.schemas.d.ts.map +1 -1
  39. package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +2 -2
  40. package/dist/esm/billing/product.shared.resources-config.schemas.d.ts.map +1 -1
  41. package/dist/esm/billing/product.shared.schemas.d.ts +2 -2
  42. package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
  43. package/dist/esm/billing/product.shared.schemas.js +7 -3
  44. package/dist/esm/billing/product.shared.schemas.js.map +1 -1
  45. package/dist/esm/billing/promotions.shared.resources-config.schemas.d.ts.map +1 -1
  46. package/dist/esm/billing/promotions.shared.schemas.d.ts.map +1 -1
  47. package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts.map +1 -1
  48. package/dist/esm/billing/referral.shared.schemas.d.ts.map +1 -1
  49. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
  50. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  51. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +15 -1
  52. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  53. package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
  54. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
  55. package/dist/esm/billing/usage-record.shared.schemas.d.ts +7 -3
  56. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  57. package/dist/esm/billing/usage-record.shared.schemas.js +22 -3
  58. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  59. package/dist/esm/charts/aggregation-query.shared.schemas.d.ts.map +1 -1
  60. package/dist/esm/charts/chart-definition-builder.shared.d.ts.map +1 -1
  61. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +71 -2
  62. package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
  63. package/dist/esm/companion/provider-discovery.shared.schemas.js +20 -1
  64. package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
  65. package/dist/esm/companion/shared-library-companion.shared.definitions.d.ts.map +1 -1
  66. package/dist/esm/companion-exports.d.ts.map +1 -1
  67. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +85 -0
  68. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -0
  69. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +157 -0
  70. package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -0
  71. package/dist/esm/compliance/audit-trails/audit-log-sink.shared.schemas.d.ts.map +1 -1
  72. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  73. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +23 -0
  74. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
  75. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +56 -0
  76. package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
  77. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +658 -26
  78. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  79. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +873 -27
  80. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  81. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  82. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +104 -3
  83. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  84. package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts.map +1 -1
  85. package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts.map +1 -1
  86. package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts.map +1 -1
  87. package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts.map +1 -1
  88. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
  89. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
  90. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +54 -26
  91. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
  92. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +132 -3
  93. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
  94. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
  95. package/dist/esm/compliance/privacy/personal-data-category.shared.schemas.d.ts.map +1 -1
  96. package/dist/esm/compliance/privacy/personal-data-declaration.shared.utils.d.ts.map +1 -1
  97. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +17 -0
  98. package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
  99. package/dist/esm/compliance/privacy/privacy.shared.schemas.js +27 -4
  100. package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
  101. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +82 -29
  102. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  103. package/dist/esm/compliance/privacy/redaction.shared.schemas.js +95 -29
  104. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  105. package/dist/esm/compliance/privacy/retention-schedule.shared.schemas.d.ts.map +1 -1
  106. package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts.map +1 -1
  107. package/dist/esm/compliance/privacy/subject-export-render.shared.utils.d.ts.map +1 -1
  108. package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
  109. package/dist/esm/compliance/privacy/subject-export.shared.schemas.js +12 -5
  110. package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
  111. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +21 -0
  112. package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
  113. package/dist/esm/config/analytics-value-moments.shared.schemas.js +20 -0
  114. package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
  115. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +7 -5
  116. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  117. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +8 -1
  118. package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
  119. package/dist/esm/config/auth-config-resolution.shared.utils.js +29 -0
  120. package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
  121. package/dist/esm/config/brand-assets.shared.schemas.d.ts.map +1 -1
  122. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +95 -17
  123. package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
  124. package/dist/esm/config/entity-identity-config.shared.schemas.js +86 -8
  125. package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
  126. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +26 -26
  127. package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts.map +1 -1
  128. package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts +139 -3
  129. package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts.map +1 -1
  130. package/dist/esm/config/frontend/chart-registration-alignment.shared.js +151 -4
  131. package/dist/esm/config/frontend/chart-registration-alignment.shared.js.map +1 -1
  132. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
  133. package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts.map +1 -1
  134. package/dist/esm/config/registration-acquisition-policy.shared.utils.d.ts.map +1 -1
  135. package/dist/esm/config-authoring.entry.d.ts.map +1 -1
  136. package/dist/esm/crdt/crdt-merge.shared.utils.d.ts.map +1 -1
  137. package/dist/esm/data-seeding/data-seeding-config.shared.schemas.d.ts.map +1 -1
  138. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +34 -0
  139. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  140. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +34 -0
  141. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  142. package/dist/esm/errors/errors.shared.definitions.d.ts.map +1 -1
  143. package/dist/esm/errors/errors.shared.schemas.d.ts.map +1 -1
  144. package/dist/esm/errors/errors.shared.utils.d.ts.map +1 -1
  145. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +45 -12
  146. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  147. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  148. package/dist/esm/external-data.exports.d.ts.map +1 -1
  149. package/dist/esm/external-providers/compose-provider-registry.shared.d.ts.map +1 -1
  150. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +110 -58
  151. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  152. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +183 -15
  153. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  154. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +15 -3
  155. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  156. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +32 -5
  157. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  158. package/dist/esm/external-providers/external-providers.shared.schemas.d.ts.map +1 -1
  159. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +87 -7
  160. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  161. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +59 -0
  162. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -0
  163. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +61 -0
  164. package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -0
  165. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +97 -0
  166. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -0
  167. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +41 -0
  168. package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -0
  169. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +205 -2
  170. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
  171. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +85 -1
  172. package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
  173. package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts +175 -0
  174. package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts.map +1 -0
  175. package/dist/esm/external-providers/frontend-provider-public-config.shared.js +207 -0
  176. package/dist/esm/external-providers/frontend-provider-public-config.shared.js.map +1 -0
  177. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +5 -28
  178. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  179. package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -2
  180. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  181. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts +28 -8
  182. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
  183. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js +15 -4
  184. package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
  185. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts +165 -0
  186. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts.map +1 -0
  187. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js +39 -0
  188. package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js.map +1 -0
  189. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +338 -0
  190. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -0
  191. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +332 -0
  192. package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -0
  193. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +178 -9
  194. package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
  195. package/dist/esm/external-providers/provider-metadata.shared.schemas.js +181 -9
  196. package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
  197. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +7 -5
  198. package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
  199. package/dist/esm/external-providers/provider-protocol.shared.schemas.js +7 -5
  200. package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
  201. package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts +40 -0
  202. package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -0
  203. package/dist/esm/external-providers/provider-tier-rule.shared.utils.js +80 -0
  204. package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -0
  205. package/dist/esm/external-providers/provider-usage-pricing.shared.schemas.d.ts.map +1 -1
  206. package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts.map +1 -1
  207. package/dist/esm/features/application-features.shared.resources-config.schemas.js +12 -0
  208. package/dist/esm/features/application-features.shared.resources-config.schemas.js.map +1 -1
  209. package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
  210. package/dist/esm/features/core-feature-definitions.shared.js +7 -1
  211. package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
  212. package/dist/esm/features/feature-builders.shared.d.ts +32 -0
  213. package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
  214. package/dist/esm/features/feature-builders.shared.js +32 -0
  215. package/dist/esm/features/feature-builders.shared.js.map +1 -1
  216. package/dist/esm/features/feature-definition.shared.schemas.d.ts.map +1 -1
  217. package/dist/esm/features/feature-registry.shared.d.ts.map +1 -1
  218. package/dist/esm/features/feature-resolution.shared.schemas.d.ts.map +1 -1
  219. package/dist/esm/features/scope-features.shared.schemas.d.ts.map +1 -1
  220. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
  221. package/dist/esm/features/user-features.shared.resources-config.schemas.js +12 -0
  222. package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
  223. package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts +73 -0
  224. package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts.map +1 -0
  225. package/dist/esm/files/file-remote-reference-link.shared.schemas.js +62 -0
  226. package/dist/esm/files/file-remote-reference-link.shared.schemas.js.map +1 -0
  227. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +14 -2
  228. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
  229. package/dist/esm/files/file-upload-grant.shared.schemas.js +44 -5
  230. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
  231. package/dist/esm/files/files.shared.resources-config.schemas.d.ts.map +1 -1
  232. package/dist/esm/files/files.shared.schemas.d.ts +15 -8
  233. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  234. package/dist/esm/files/files.shared.schemas.js +15 -8
  235. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  236. package/dist/esm/files/files.shared.utils.d.ts.map +1 -1
  237. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  238. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
  239. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
  240. package/dist/esm/flows-actors/a2a-token-budget-state.shared.schemas.d.ts.map +1 -1
  241. package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
  242. package/dist/esm/flows-actors/actors.shared.schemas.js +3 -2
  243. package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
  244. package/dist/esm/flows-actors/agent-traceability.shared.schemas.d.ts.map +1 -1
  245. package/dist/esm/flows-actors/agents.shared.schemas.d.ts +54 -5
  246. package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
  247. package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
  248. package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts.map +1 -1
  249. package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts.map +1 -1
  250. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +0 -3
  251. package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
  252. package/dist/esm/flows-actors/deliberation.shared.schemas.js +0 -5
  253. package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
  254. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
  255. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +14 -0
  256. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  257. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +40 -3
  258. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  259. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
  260. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
  261. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +19 -0
  262. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
  263. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +33 -0
  264. package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
  265. package/dist/esm/flows-actors/flows-actors.configuration.shared.schemas.d.ts.map +1 -1
  266. package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts.map +1 -1
  267. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts +14 -9
  268. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
  269. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js +14 -9
  270. package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
  271. package/dist/esm/flows-actors/flows-actors.system.shared.definitions.d.ts.map +1 -1
  272. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
  273. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +3 -2
  274. package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
  275. package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
  276. package/dist/esm/flows-actors/flows.shared.schemas.js +3 -2
  277. package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
  278. package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts +130 -0
  279. package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -0
  280. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +153 -0
  281. package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -0
  282. package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +1 -1
  283. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -3
  284. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +1 -1
  285. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +1 -4
  286. package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +1 -1
  287. package/dist/esm/flows-actors/meta-workflows/catalog.meta-workflows.shared.schemas.d.ts.map +1 -1
  288. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts +0 -16
  289. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -1
  290. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js +1 -17
  291. package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -1
  292. package/dist/esm/flows-actors/meta-workflows/continuity-identifiers.meta-workflows.shared.schemas.d.ts.map +1 -1
  293. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts +3 -3
  294. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts.map +1 -1
  295. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js +3 -3
  296. package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -1
  297. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +2 -8
  298. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +1 -1
  299. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +4 -15
  300. package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +1 -1
  301. package/dist/esm/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +1 -1
  302. package/dist/esm/flows-actors/prompt-ir.shared.schemas.d.ts.map +1 -1
  303. package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts.map +1 -1
  304. package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts.map +1 -1
  305. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts +112 -0
  306. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts.map +1 -0
  307. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js +113 -0
  308. package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js.map +1 -0
  309. package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts.map +1 -1
  310. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
  311. package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
  312. package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
  313. package/dist/esm/guidance/guidance-state.shared.utils.js +1 -0
  314. package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
  315. package/dist/esm/guidance/lifecycle-config.shared.schemas.d.ts.map +1 -1
  316. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
  317. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
  318. package/dist/esm/guidance/milestone-builders.shared.d.ts.map +1 -1
  319. package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts.map +1 -1
  320. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +8 -0
  321. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  322. package/dist/esm/guidance/progression-state.shared.schemas.d.ts +46 -0
  323. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  324. package/dist/esm/guidance/progression-state.shared.schemas.js +49 -0
  325. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  326. package/dist/esm/http-api-binding/http-api-binding-id.shared.utils.d.ts.map +1 -1
  327. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +320 -50
  328. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  329. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +137 -36
  330. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  331. package/dist/esm/i18n/labelling.dto.shared.schemas.d.ts.map +1 -1
  332. package/dist/esm/index.d.ts +15 -0
  333. package/dist/esm/index.d.ts.map +1 -1
  334. package/dist/esm/index.js +15 -0
  335. package/dist/esm/index.js.map +1 -1
  336. package/dist/esm/meta-workflows.exports.d.ts.map +1 -1
  337. package/dist/esm/monitoring/monitoring.shared.schemas.d.ts.map +1 -1
  338. package/dist/esm/notifications/email/email-context.shared.schemas.d.ts.map +1 -1
  339. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +11 -2
  340. package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
  341. package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
  342. package/dist/esm/notifications/email/email-template.shared.enums.d.ts +15 -0
  343. package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
  344. package/dist/esm/notifications/email/email-template.shared.enums.js +15 -0
  345. package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
  346. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -1
  347. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  348. package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts.map +1 -1
  349. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +1 -0
  350. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
  351. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +19 -0
  352. package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
  353. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts +30 -0
  354. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
  355. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +65 -1
  356. package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
  357. package/dist/esm/notifications/notification-badges.core.definitions.d.ts +6 -4
  358. package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
  359. package/dist/esm/notifications/notification-badges.core.definitions.js +6 -4
  360. package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
  361. package/dist/esm/notifications/notification-badges.schemas.d.ts +167 -5
  362. package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
  363. package/dist/esm/notifications/notification-badges.schemas.js +191 -6
  364. package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
  365. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
  366. package/dist/esm/notifications/notifications.shared.schemas.d.ts +158 -0
  367. package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
  368. package/dist/esm/notifications/notifications.shared.schemas.js +200 -1
  369. package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
  370. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts.map +1 -1
  371. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js +13 -0
  372. package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js.map +1 -1
  373. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
  374. package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
  375. package/dist/esm/organizations/organization-notifications.shared.resources-config.schemas.d.ts.map +1 -1
  376. package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
  377. package/dist/esm/organizations/organization-notifications.shared.schemas.js +22 -1
  378. package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
  379. package/dist/esm/organizations/organization-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  380. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +26 -0
  381. package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
  382. package/dist/esm/organizations/organization-preferences.shared.schemas.js +25 -0
  383. package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
  384. package/dist/esm/organizations/organization-profile.shared.resources-config.schemas.d.ts.map +1 -1
  385. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +25 -0
  386. package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
  387. package/dist/esm/organizations/organization-profile.shared.schemas.js +42 -17
  388. package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
  389. package/dist/esm/organizations/organization-unit-inheritance.shared.d.ts.map +1 -1
  390. package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.d.ts.map +1 -1
  391. package/dist/esm/organizations/organization-unit-members.shared.schemas.d.ts.map +1 -1
  392. package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts.map +1 -1
  393. package/dist/esm/organizations/organization-unit-narrowing.example.d.ts.map +1 -1
  394. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +3 -2
  395. package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
  396. package/dist/esm/organizations/organization-unit-narrowing.shared.js +9 -2
  397. package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
  398. package/dist/esm/organizations/organization-units.shared.resources-config.schemas.d.ts.map +1 -1
  399. package/dist/esm/organizations/organization-units.shared.schemas.d.ts.map +1 -1
  400. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  401. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -3
  402. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  403. package/dist/esm/organizations/organizations.shared.schemas.d.ts.map +1 -1
  404. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts +13 -0
  405. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts.map +1 -1
  406. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js +13 -0
  407. package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js.map +1 -1
  408. package/dist/esm/provider-registration-runtime.exports.d.ts.map +1 -1
  409. package/dist/esm/public-runtime/index.d.ts +71 -2
  410. package/dist/esm/public-runtime/index.d.ts.map +1 -1
  411. package/dist/esm/public-runtime/index.js +62 -1
  412. package/dist/esm/public-runtime/index.js.map +1 -1
  413. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +6 -5
  414. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  415. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +6 -5
  416. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  417. package/dist/esm/queue/jobs.shared.schemas.d.ts +16 -3
  418. package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
  419. package/dist/esm/queue/jobs.shared.schemas.js +16 -3
  420. package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
  421. package/dist/esm/queue/jobs.shared.utils.d.ts.map +1 -1
  422. package/dist/esm/queue/queues.shared.schemas.d.ts.map +1 -1
  423. package/dist/esm/queue/queues.shared.utils.d.ts.map +1 -1
  424. package/dist/esm/requests/manual-controllers-routes-documentation.d.ts +137 -0
  425. package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -0
  426. package/dist/esm/requests/manual-controllers-routes-documentation.js +1255 -0
  427. package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -0
  428. package/dist/esm/requests/manual-controllers-routes-urls.d.ts +114 -0
  429. package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
  430. package/dist/esm/requests/manual-controllers-routes-urls.js +129 -0
  431. package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
  432. package/dist/esm/requests/rate-limits.shared.schemas.d.ts +11 -1
  433. package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
  434. package/dist/esm/requests/rate-limits.shared.schemas.js +11 -1
  435. package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
  436. package/dist/esm/requests/websocket.shared.schemas.d.ts +28 -3
  437. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  438. package/dist/esm/requests/websocket.shared.schemas.js +52 -0
  439. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  440. package/dist/esm/resources/child-operations.shared.schemas.d.ts.map +1 -1
  441. package/dist/esm/resources/context-policy.shared.schemas.d.ts.map +1 -1
  442. package/dist/esm/resources/relationship-display.shared.schemas.d.ts.map +1 -1
  443. package/dist/esm/resources/resources-config.shared.factory.d.ts +1 -0
  444. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  445. package/dist/esm/resources/resources-config.shared.factory.js +203 -25
  446. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  447. package/dist/esm/resources/resources-config.shared.schemas.d.ts +297 -68
  448. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  449. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  450. package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
  451. package/dist/esm/resources/resources-registry.shared.core.definitions.js +151 -5
  452. package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
  453. package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
  454. package/dist/esm/resources/resources-relationships.shared.factory.js +15 -0
  455. package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
  456. package/dist/esm/resources/resources-serialization.shared.schemas.d.ts.map +1 -1
  457. package/dist/esm/resources/resources.shared.core.definitions.d.ts +54 -0
  458. package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
  459. package/dist/esm/resources/resources.shared.core.definitions.js +69 -0
  460. package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
  461. package/dist/esm/resources/resources.shared.schemas.d.ts +11 -2
  462. package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
  463. package/dist/esm/resources/resources.shared.schemas.js +34 -3
  464. package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
  465. package/dist/esm/resources/resources.shared.utils.d.ts +32 -7
  466. package/dist/esm/resources/resources.shared.utils.d.ts.map +1 -1
  467. package/dist/esm/resources/resources.shared.utils.js +32 -7
  468. package/dist/esm/resources/resources.shared.utils.js.map +1 -1
  469. package/dist/esm/resources/utils/collection-export.shared.utils.d.ts.map +1 -1
  470. package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts.map +1 -1
  471. package/dist/esm/resources/utils/composition-seedability.validation.d.ts.map +1 -1
  472. package/dist/esm/resources/utils/context-addressed-composition-singleton.shared.utils.d.ts.map +1 -1
  473. package/dist/esm/resources/utils/duplicate-relationship-registration.validation.d.ts.map +1 -1
  474. package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts +51 -0
  475. package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -0
  476. package/dist/esm/resources/utils/field-value-disclosure.utils.js +53 -0
  477. package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -0
  478. package/dist/esm/resources/utils/persistence-adapter-discrimination.shared.utils.d.ts.map +1 -1
  479. package/dist/esm/resources/utils/repository-dto-builder.utils.d.ts.map +1 -1
  480. package/dist/esm/resources/utils/required-fk-fillability.validation.d.ts.map +1 -1
  481. package/dist/esm/resources/utils/resource-operation-type-guards.utils.d.ts.map +1 -1
  482. package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts.map +1 -1
  483. package/dist/esm/resources/utils/resource-polymorphism.relationships.d.ts.map +1 -1
  484. package/dist/esm/resources/utils/resource-polymorphism.schemas.d.ts.map +1 -1
  485. package/dist/esm/resources/utils/resource-polymorphism.utils.d.ts.map +1 -1
  486. package/dist/esm/resources/utils/resource-subtree.utils.d.ts.map +1 -1
  487. package/dist/esm/resources/utils/resources-config-context-needs.utils.d.ts.map +1 -1
  488. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
  489. package/dist/esm/resources/utils/resources-config-operations.path.utils.d.ts.map +1 -1
  490. package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts.map +1 -1
  491. package/dist/esm/resources/utils/resources-config-operations.utils.d.ts.map +1 -1
  492. package/dist/esm/resources/utils/resources-serialization.utils.d.ts.map +1 -1
  493. package/dist/esm/resources/utils/resources-summary.utils.d.ts +16 -2
  494. package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
  495. package/dist/esm/resources/utils/resources-summary.utils.js +19 -5
  496. package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
  497. package/dist/esm/resources/utils/schema-family-builder.utils.d.ts.map +1 -1
  498. package/dist/esm/resources/utils/schema-type-inference.utils.d.ts.map +1 -1
  499. package/dist/esm/resources/utils/schema-type-utils.d.ts.map +1 -1
  500. package/dist/esm/resources/utils/schema-variant-resolver.utils.d.ts.map +1 -1
  501. package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
  502. package/dist/esm/resources/utils/shared-persistence-collection.utils.js +11 -0
  503. package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
  504. package/dist/esm/resources/utils/templatable-file-fields.shared.utils.d.ts.map +1 -1
  505. package/dist/esm/runtime/domain-module.shared.definitions.d.ts +25 -0
  506. package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
  507. package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
  508. package/dist/esm/runtime/execution-context.shared.schemas.d.ts.map +1 -1
  509. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts +1 -0
  510. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
  511. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +38 -0
  512. package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
  513. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts +1 -0
  514. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
  515. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +38 -0
  516. package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
  517. package/dist/esm/security/api-keys/api-keys.shared.schemas.d.ts.map +1 -1
  518. package/dist/esm/security/authentications/anonymous-session/anonymous-session.shared.contract.d.ts.map +1 -1
  519. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +5 -12
  520. package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
  521. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +0 -1
  522. package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
  523. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +84 -5
  524. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  525. package/dist/esm/security/authentications/authentication.shared.schemas.js +83 -3
  526. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  527. package/dist/esm/security/authentications/authentication.shared.utils.d.ts.map +1 -1
  528. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
  529. package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
  530. package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts.map +1 -1
  531. package/dist/esm/security/authentications/password-reset.shared.dto.schemas.d.ts.map +1 -1
  532. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +1 -0
  533. package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
  534. package/dist/esm/security/authentications/registration.shared.dto.schemas.js +11 -0
  535. package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
  536. package/dist/esm/security/authentications/scim/scim-organization-unit-mapping.shared.d.ts.map +1 -1
  537. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts.map +1 -1
  538. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +15 -0
  539. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
  540. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +21 -4
  541. package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
  542. package/dist/esm/security/authentications/scim/scim-tokens.shared.resources-config.schemas.d.ts.map +1 -1
  543. package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts.map +1 -1
  544. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.d.ts.map +1 -1
  545. package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.schemas.d.ts.map +1 -1
  546. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -1
  547. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -1
  548. package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts.map +1 -1
  549. package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts.map +1 -1
  550. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +61 -1
  551. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
  552. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +238 -6
  553. package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
  554. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +37 -27
  555. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
  556. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +134 -12
  557. package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
  558. package/dist/esm/security/authentications/sso/sso-connection.shared.resources-config.schemas.d.ts.map +1 -1
  559. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +2 -6
  560. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
  561. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +32 -8
  562. package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
  563. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts +45 -2
  564. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts.map +1 -1
  565. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js +45 -2
  566. package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js.map +1 -1
  567. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts +35 -0
  568. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts.map +1 -0
  569. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js +257 -0
  570. package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js.map +1 -0
  571. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts +143 -0
  572. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts.map +1 -0
  573. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js +219 -0
  574. package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js.map +1 -0
  575. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  576. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +27 -0
  577. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  578. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +75 -7
  579. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  580. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +69 -8
  581. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  582. package/dist/esm/security/authorizations/roles.shared.defaults.d.ts.map +1 -1
  583. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
  584. package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
  585. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +31 -0
  586. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -0
  587. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +198 -0
  588. package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -0
  589. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +31 -0
  590. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -0
  591. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +191 -0
  592. package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -0
  593. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +307 -0
  594. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -0
  595. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +530 -0
  596. package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -0
  597. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +4 -1
  598. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
  599. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +29 -0
  600. package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
  601. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +4 -1
  602. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
  603. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +29 -0
  604. package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
  605. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +6 -0
  606. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  607. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +31 -0
  608. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  609. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
  610. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts +13 -0
  611. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  612. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +24 -3
  613. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  614. package/dist/esm/security/oauth-clients/oauth-resource-server.shared.schemas.d.ts.map +1 -1
  615. package/dist/esm/testing/resource-config-builders.d.ts.map +1 -1
  616. package/dist/esm/testing.d.ts.map +1 -1
  617. package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts.map +1 -1
  618. package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts.map +1 -1
  619. package/dist/esm/users/anonymous-users.shared.schema.d.ts.map +1 -1
  620. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
  621. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
  622. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
  623. package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
  624. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
  625. package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
  626. package/dist/esm/users/user-preferences-reset.shared.utils.d.ts.map +1 -1
  627. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +4 -4
  628. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  629. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  630. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -4
  631. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  632. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  633. package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
  634. package/dist/esm/users/user-self.shared.resources-config.schemas.js +33 -3
  635. package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
  636. package/dist/esm/users/users.shared.resources-config.schemas.d.ts +17 -1
  637. package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
  638. package/dist/esm/users/users.shared.resources-config.schemas.js +136 -5
  639. package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
  640. package/dist/esm/users/users.shared.schemas.d.ts +60 -13
  641. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  642. package/dist/esm/users/users.shared.schemas.js +56 -9
  643. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  644. package/dist/tsconfig.build.tsbuildinfo +1 -1
  645. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"resources-relationships.shared.factory.d.ts","sourceRoot":"","sources":["../../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,kBAAkB,EAClB,KAAK,gCAAgC,EACrC,iCAAiC,EAEjC,oBAAoB,EAEpB,uCAAuC,EACvC,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAA+B,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAC1I,OAAO,EAAE,yBAAyB,EAAmC,MAAM,uCAAuC,CAAC;AAYnH;;;;GAIG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,UAAU,CAAC,EAAG,OAAO,CAAC;IACtB,cAAc,CAAC,EAAG,OAAO,CAAC;IAC1B,yBAAyB,CAAC,EAAG,iCAAiC,CAAC;IAC/D,mBAAmB,CAAC,EAAG,uCAAuC,CAAC;IAC/D,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C;;;;;;OAMG;IACH,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,gCAAgC,CAAC;IACxC;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;;;OAIG;IACH,aAAa,CAAC,EAAE,iCAAiC,CAAC;IAClD;;;;OAIG;IACH,SAAS,CAAC,EAAE,+BAA+B,CAAC;IAC5C;;;OAGG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AACF,kFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,wBAAgB,2BAA2B,CACvC,aAAa,EAAE,YAAY,EAC3B,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,+BAA+B,EAC7C,YAAY,EAAE,+BAA+B,EAC7C,OAAO,EAAE,sCAAsC,GAC7C,oBAAoB,CA0PvB"}
1
+ {"version":3,"file":"resources-relationships.shared.factory.d.ts","sourceRoot":"","sources":["../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,kBAAkB,EAClB,KAAK,gCAAgC,EACrC,iCAAiC,EAEjC,oBAAoB,EAEpB,uCAAuC,EACvC,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAA+B,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAC1I,OAAO,EAAE,yBAAyB,EAAmC,MAAM,uCAAuC,CAAC;AAYnH;;;;GAIG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,UAAU,CAAC,EAAG,OAAO,CAAC;IACtB,cAAc,CAAC,EAAG,OAAO,CAAC;IAC1B,yBAAyB,CAAC,EAAG,iCAAiC,CAAC;IAC/D,mBAAmB,CAAC,EAAG,uCAAuC,CAAC;IAC/D,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C;;;;;;OAMG;IACH,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,gCAAgC,CAAC;IACxC;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;;;OAIG;IACH,aAAa,CAAC,EAAE,iCAAiC,CAAC;IAClD;;;;OAIG;IACH,SAAS,CAAC,EAAE,+BAA+B,CAAC;IAC5C;;;OAGG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AACF,kFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,wBAAgB,2BAA2B,CACvC,aAAa,EAAE,YAAY,EAC3B,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,+BAA+B,EAC7C,YAAY,EAAE,+BAA+B,EAC7C,OAAO,EAAE,sCAAsC,GAC7C,oBAAoB,CAyQvB"}
@@ -109,6 +109,19 @@ export function createResourcesRelationship(resourceType1, resourceType2, cardin
109
109
  // ========================================
110
110
  // VALIDATION GUARDS
111
111
  // ========================================
112
+ //
113
+ // The numbers below are STABLE LABELS, not a count and not a sequence. They are cited from
114
+ // `resources-relationships-factory.test.ts`, from `resources-registry.shared.core.definitions.ts`
115
+ // and from sibling packages, so renumbering them breaks those references. Two consequences a
116
+ // reader has to know before counting anything here:
117
+ //
118
+ // - there is no Guard 4, and no commit touching this file has ever added or removed one;
119
+ // - three refusals in this sequence carry no number at all (self-referencing MANY-to-MANY
120
+ // below Guard 2, the unresolvable primary scope, and the post-default-resolution repeat of
121
+ // Guard 1 near the end of the function).
122
+ //
123
+ // So "the guards" is a larger set than "the numbered guards". Enumerate the `throw` statements,
124
+ // not the labels.
112
125
  // Guard 1: `isPrimaryScope` cannot be paired with `OPTIONAL_CONTEXT`.
113
126
  //
114
127
  // ## Why this guard exists (and why it only forbids OPTIONAL_CONTEXT, not STANDALONE)
@@ -163,6 +176,8 @@ export function createResourcesRelationship(resourceType1, resourceType2, cardin
163
176
  `Self-referencing MANY-to-MANY relationships cannot be authored as one association declaration.\n` +
164
177
  `Declare explicit junction-resource relationships so source and target edge identity stay explicit.`);
165
178
  }
179
+ // (The refusal immediately above carries no guard number: self-referencing MANY-to-MANY.)
180
+ //
166
181
  // Note: foreignKeyField IS valid with isPrimaryScope - it specifies the FK field on the child
167
182
  // resource that points back to the parent, which is useful for 1:1 relationships
168
183
  // Guard 3: jointResourceType should not be combined with foreignKeyField.
@@ -1 +1 @@
1
- {"version":3,"file":"resources-relationships.shared.factory.js","sourceRoot":"","sources":["../../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoreResourceType, ResourceType } from \"./resources.shared.core.definitions\";\nimport {\n RelationshipNature,\n type RelationshipHandlingReadSettings,\n ResourceParentResourceRequirement,\n ResourcePrimaryScope,\n ResourceRelationship,\n ResourceRelationshipDeclaration,\n ResourceRelationshipAccessScopeStrategy,\n ResourceRelationshipCardinality,\n ResourceRelationshipConditionFn,\n type ScopeMembership,\n} from \"./resources.shared.schemas\";\nimport { ErrorType } from \"../errors/errors.shared.schemas\";\nimport { RelationshipContextPolicy } from \"./context-policy.shared.schemas\";\nimport { ChildOperationsConfig, ChildOperationsConfigSchema, ResourceRelationshipDiscriminator } from \"./child-operations.shared.schemas\";\nimport { RelationshipDisplayConfig, RelationshipDisplayConfigSchema } from \"./relationship-display.shared.schemas\";\nimport { Resources_SharedUtils } from \"./resources.shared.utils\";\n\n/**\n * Creates a configuration error with ErrorType.CONFIGURATION\n */\nfunction createConfigurationError(message: string): Error {\n const error = new Error(message);\n (error as any).type = ErrorType.CONFIGURATION;\n return error;\n}\n\n/**\n * @wildo_source:part:start saas.models.resource-relationship-builder-parameters facet:layer:shared facet:family:resource-config\n *\n * Parameters accepted by `createResourcesRelationship()` (app registry authoring).\n */\nexport type ResourceRelationship_BuilderParameters = {\n isDisabled? : boolean,\n isPrimaryScope? : boolean,\n parentResourceRequirement? : ResourceParentResourceRequirement,\n accessScopeStrategy? : ResourceRelationshipAccessScopeStrategy,\n jointResourceType?: ResourceType,\n /**\n * Opt-in flag for relationships that form cycles in the resource graph.\n * Required on every edge in a cycle for schema-level validation to pass.\n * @see ResourceRelationshipSchema.allowCycle\n */\n allowCycle?: boolean,\n /** Context policy for this relationship - controls how related resources are fetched */\n contextPolicy?: RelationshipContextPolicy,\n /**\n * High-level shared meaning of the relationship.\n *\n * This is the primary semantic field app developers should author. The\n * framework derives the deeper internal handling contract from it plus the\n * optional explicit read intent when present.\n */\n nature: RelationshipNature,\n /**\n * Optional explicit semantic read intent.\n *\n * This does not replace `childOperations.nested.onRead`; it only declares the\n * semantic read model the framework should resolve.\n */\n read?: RelationshipHandlingReadSettings,\n /**\n * Child operations configuration for this relationship.\n * Handles BACKEND concerns: lifecycle cascade and nested DTO aggregation.\n */\n childOperations?: ChildOperationsConfig,\n /**\n * Static discriminator filter for conditional relationships.\n * When specified, this relationship only applies when the parent resource's\n * discriminator field matches one of the specified values.\n */\n discriminator?: ResourceRelationshipDiscriminator,\n /**\n * Function-based condition for conditional relationships.\n * Evaluated at runtime with the parent resource data.\n * Unlike the static `discriminator`, this allows arbitrary logic.\n */\n condition?: ResourceRelationshipConditionFn,\n /**\n * Frontend display configuration for this relationship.\n * Defines how related resources are displayed in the UI.\n */\n display?: RelationshipDisplayConfig,\n /**\n * Foreign key field name for this relationship.\n *\n * When omitted: Inferred from parent's resourceFieldIdentifier via allResourceFieldIdentifiers map.\n * When specified: Used for disambiguation when multiple FKs point to same resource type,\n * or when FK field name differs from standard naming convention.\n *\n * Examples:\n * - Standard: ORGANIZATIONS → TODOS uses organizationId (inferred, no foreignKeyField needed)\n * - Disambiguation: TODOS → USERS via assignedToUserId vs createdByUserId (explicit)\n * - Self-referencing M:N is not expressed as one relationship declaration;\n * declare two explicit junction-resource edges so source and target FK\n * identities remain distinct.\n */\n foreignKeyField?: string,\n /**\n * Write-time SCOPE CONFINEMENT for a REFERENCE foreign key: the referenced target must be linked to\n * the writing row's scope through a junction, enforced on CREATE and UPDATE. Opt-in and additive —\n * omit for unchanged behavior.\n *\n * STRUCTURE only. `scopeMembership: true` is the simple case (junction auto-resolved from the M:N\n * scope-junction map); the object form names the junction / its columns when convention cannot — a\n * SELF-REFERENTIAL junction (organizations ↔ organizations). Per-variant POLICY (status, roles, typed\n * junction rows) is declared on the operation config's `referenceConstraints`.\n *\n * @example todos.assignedToUserId must be a member of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'assignedToUserId', scopeMembership: true }\n *\n * @example todos.sharedWithOrganizationId must be a partner of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'sharedWithOrganizationId',\n * scopeMembership: { junction: CoreResourceType.ORGANIZATION_PARTNERSHIPS } }\n */\n scopeMembership?: ScopeMembership,\n};\n/** @wildo_source:part:end saas.models.resource-relationship-builder-parameters */\n\n\n\n/**\n * Create a resource relationship declaration between two resource types.\n *\n * This is the primary entry point for declaring relationships in the resource registry.\n * Returns a `ResourceRelationship` object that is spread into the registry's relationship\n * array and later categorized by `transformResourceRelationships()` at factory time.\n *\n * ## Conditional Relationships\n *\n * Relationships can optionally carry runtime conditions via `discriminator` and/or `condition`:\n *\n * - **`discriminator`** (static): A simple `{ discriminatorField, values }` object.\n * The relationship is active only when `String(parent[discriminatorField])` is in `values`.\n * Useful for discriminated union patterns (e.g., recurring vs. one-time todos).\n *\n * - **`condition`** (dynamic): An arbitrary `(parentResource) => boolean` function.\n * Allows cross-field logic, computed checks, etc. Cannot be serialized to Zod.\n *\n * When both are provided, AND semantics apply — both must pass for the relationship\n * to be active at runtime.\n *\n * These conditions are NOT evaluated at startup/factory time. They are stored inline\n * on the relationship object and evaluated at runtime by:\n * - `ResourceContextBackendService.fetchChildResourcesWithPolicy()` — backend context building\n * - `ServicesRegistryHandler.filterRelationshipsByParent()` — nested CRUD + lifecycle\n * - `ResourceLayout_ContainerNested` — frontend display filtering\n *\n * @param resourceType1 - The parent resource type in 1:N/1:1, or the first entity side in M:N\n * @param resourceType2 - The child resource type in 1:N/1:1, or the second entity side in M:N\n * @param cardinality1 - Cardinality from the perspective of resourceType1\n * @param cardinality2 - Cardinality from the perspective of resourceType2\n * @param options - Required relationship options; must include `nature`.\n * Other relationship fields remain optional as needed (discriminator,\n * condition, childOperations, display, etc.)\n * @returns A fully constructed `ResourceRelationship` object\n *\n * ## M:N developer mental model\n *\n * For `MANY <-> MANY`, the declaration is still authored at the association level:\n * developers declare the two peer entity types plus `jointResourceType`.\n *\n * The framework may later decompose non-self associations into synthetic\n * entity->junction and junction->entity edges for DTO, routing, and runtime\n * processing, but that decomposition is an internal implementation detail.\n * App-facing meaning should stay association-centric, not \"manually declare the\n * synthetic edges yourself.\"\n *\n * Self-referencing M:N is the exception: one declaration cannot carry two\n * distinct source/target FK identities for the same resource type. Model it with\n * explicit junction-resource relationships instead.\n *\n * ## Semantic Resolution Order\n *\n * Relationship declarations now have an explicit semantic precedence:\n *\n * 1. structural topology (`cardinality*`, `jointResourceType`, `foreignKeyField`, ...)\n * 2. `nature`\n * 3. explicit semantic read intent (`read`) when authored\n * 4. derived handling contract (future resolver step, internal)\n * 5. current low-level operational projection (`childOperations`)\n *\n * `nature` is therefore the primary semantic declaration for app developers.\n * The fuller handling contract belongs to framework internals, not the authored\n * relationship API.\n *\n * ## Greenfield Direction\n *\n * Relationship declarations must define explicit `nature`. Missing annotations\n * are configuration bugs, not a compatibility target.\n *\n * @example Static discriminator (recurring todos → occurrences)\n * ```typescript\n * createResourcesRelationship(TODOS, RECURRING_OCCURRENCES, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * discriminator: { discriminatorField: 'recurringType', values: ['RECURRING'] },\n * childOperations: { lifecycle: { onParentDelete: { enabled: true } } },\n * })\n * ```\n *\n * @example Function-based condition\n * ```typescript\n * createResourcesRelationship(ORDERS, REFUND_RECORDS, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * condition: (parent) => parent.status === 'COMPLETED' && parent.totalAmount > 0,\n * })\n * ```\n */\nexport function createResourcesRelationship(\n resourceType1: ResourceType, \n resourceType2: ResourceType, \n cardinality1: ResourceRelationshipCardinality, \n cardinality2: ResourceRelationshipCardinality, \n options: ResourceRelationship_BuilderParameters\n ) : ResourceRelationship {\n\n if (!options?.nature) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationship declarations must define nature explicitly.\\n` +\n `Greenfield relationship semantics no longer infer meaning from childOperations or jointResourceType.`\n );\n }\n \n // ========================================\n // VALIDATION GUARDS\n // ========================================\n\n // Guard 1: `isPrimaryScope` cannot be paired with `OPTIONAL_CONTEXT`.\n //\n // ## Why this guard exists (and why it only forbids OPTIONAL_CONTEXT, not STANDALONE)\n //\n // `isPrimaryScope` and `accessScopeStrategy` govern two ORTHOGONAL concerns:\n //\n // - `isPrimaryScope` — ownership graph anchor: \"this parent is the\n // row's structural scope root\". Drives the\n // resource's `resourcePrimaryScope` enum, which\n // in turn drives scope-aware services (auth,\n // notifications, execution context, etc).\n // - `accessScopeStrategy` — URL routing + fetch-time context gating.\n // STANDALONE → no URL segment, no context gate\n // REQUIRES_CONTEXT → mandatory URL segment + gate\n // OPTIONAL_CONTEXT → optional URL segment\n //\n // The two concerns are already orthogonalized in the URL builder\n // (`generateParentCombinations` filters out STANDALONE parents *before*\n // bucketing the rest by `isPrimaryScope`), so a `STANDALONE + isPrimaryScope`\n // rel is URL-inert by construction — it contributes zero path segments and\n // simply anchors the scope enum. That is a coherent, intended configuration\n // (e.g. internal ledgers like `jobExecutions` that are APP-scoped but not\n // routed under `/applications/:id/…`, user-owned credential stores that are\n // USER_SELF-scoped but not exposed as routable child resources).\n //\n // `OPTIONAL_CONTEXT + isPrimaryScope` is however INCOHERENT under the current\n // combinator: `generateParentCombinations` puts every `isPrimaryScope` edge\n // into the always-on bucket, which would force an \"optional\" primary parent\n // to appear in every URL combination — contradicting its optionality. That\n // redesign is out of scope here; until then the guard remains.\n if (options?.isPrimaryScope &&\n options?.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope cannot have accessScopeStrategy=OPTIONAL_CONTEXT.\\n` +\n `A primary-scope rel marks the structural ownership anchor; OPTIONAL_CONTEXT\\n` +\n `would make the anchor optional in URLs, which the current URL combinator\\n` +\n `cannot express coherently. Use REQUIRES_CONTEXT (routed anchor) or\\n` +\n `STANDALONE (logical anchor, not routed).`\n );\n }\n \n // Guard 2: MANY-to-MANY requires jointResourceType (junction table)\n if (cardinality1 === ResourceRelationshipCardinality.MANY && \n cardinality2 === ResourceRelationshipCardinality.MANY &&\n !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `MANY-to-MANY relationships require a jointResourceType (junction table).`\n );\n }\n\n if (\n cardinality1 === ResourceRelationshipCardinality.MANY &&\n cardinality2 === ResourceRelationshipCardinality.MANY &&\n options?.jointResourceType &&\n resourceType1 === resourceType2\n ) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing MANY-to-MANY relationships cannot be authored as one association declaration.\\n` +\n `Declare explicit junction-resource relationships so source and target edge identity stay explicit.`\n );\n }\n \n // Note: foreignKeyField IS valid with isPrimaryScope - it specifies the FK field on the child\n // resource that points back to the parent, which is useful for 1:1 relationships\n \n // Guard 3: jointResourceType should not be combined with foreignKeyField.\n // Self-referencing many-to-many is rejected above because a single\n // declaration cannot encode two FK identities for the same peer resource.\n if (options?.jointResourceType && options?.foreignKeyField && resourceType1 !== resourceType2) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Cannot combine jointResourceType and foreignKeyField for non-self-referencing M:N.\\n` +\n `Use jointResourceType for MANY-to-MANY via junction table.`\n );\n }\n \n // Guard 5: foreignKeyField must end with 'Id' or 'Ids' (reserved for FK naming convention)\n if (options?.foreignKeyField) {\n const fkField = options.foreignKeyField;\n if (!fkField.endsWith('Id') && !fkField.endsWith('Ids')) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `foreignKeyField \"${fkField}\" must end with 'Id' or 'Ids' (e.g., assignedToUserId, memberIds).\\n` +\n `This naming convention is reserved for foreign key fields.`\n );\n }\n }\n \n // Guard 6: Self-referencing 1:N/1:1 relationships require explicit foreignKeyField.\n // Without it, the default FK (derived from resourceFieldIdentifier) would collide with\n // itself in URL param generation — e.g., /resource/{resourceId}/resource/{resourceId}.\n // M:N self-refs are rejected above: one declaration cannot encode distinct\n // source/target FK identities for the same peer resource.\n if (resourceType1 === resourceType2 && !options?.jointResourceType) {\n if (!options?.foreignKeyField) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST specify foreignKeyField explicitly.\\n` +\n `Without it, URL parameter names collide (same resource type on both sides).`\n );\n }\n\n // Guard 7: Self-referencing 1:N/1:1 relationships must have OPTIONAL parent requirement.\n // Tree roots have no parent — MANDATORY would make root-level access impossible.\n const effectiveParentReq = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n if (effectiveParentReq === ResourceParentResourceRequirement.MANDATORY) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST have parentResourceRequirement=OPTIONAL.\\n` +\n `Tree/graph roots have no parent — MANDATORY would make root-level access impossible.`\n );\n }\n }\n\n // Guard 8: junction-backed relationships are association semantics when nature is explicit.\n if (options?.jointResourceType && options?.nature && options.nature !== RelationshipNature.ASSOCIATION) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationships with jointResourceType must declare nature=ASSOCIATION.\\n` +\n `Junction-backed relationships are association-centric in the shared model.`\n );\n }\n\n // Guard 9: explicit association semantics require a junction resource.\n if (options?.nature === RelationshipNature.ASSOCIATION && !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `nature=ASSOCIATION requires jointResourceType.\\n` +\n `Association semantics are reserved for explicit link-management / junction-backed relationships.`\n );\n }\n \n // ========================================\n // PRIMARY SCOPE MAPPING\n // ========================================\n \n let primaryScope : ResourcePrimaryScope | undefined;\n if (options?.isPrimaryScope) {\n \n const primaryScopeMap = {\n [CoreResourceType.ORGANIZATIONS]: ResourcePrimaryScope.ORGANIZATIONS,\n [CoreResourceType.USERS]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.USER_SELF]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.APPLICATION]: ResourcePrimaryScope.APPLICATION,\n [CoreResourceType.ANONYMOUS_USERS]: ResourcePrimaryScope.ANONYMOUS,\n }\n primaryScope = primaryScopeMap[resourceType1 as CoreResourceType];\n \n if (!primaryScope) {\n throw createConfigurationError(`Resource type ${resourceType1} is not related to a primary scope`);\n }\n }\n \n // ========================================\n // ACCESS SCOPE STRATEGY DEFAULTS\n // ========================================\n\n const parentResourceRequirement = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n let accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n\n if (!options?.accessScopeStrategy) {\n if (parentResourceRequirement === ResourceParentResourceRequirement.MANDATORY) {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n } else {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT;\n }\n } else {\n accessScopeStrategy = options.accessScopeStrategy;\n }\n\n // Post-default-resolution check: `isPrimaryScope` must resolve to REQUIRES_CONTEXT\n // or STANDALONE, never OPTIONAL_CONTEXT. See Guard 1 above for the full\n // rationale (ownership graph vs URL routing are orthogonal, except for the\n // OPTIONAL_CONTEXT incoherence).\n //\n // This second gate exists because `accessScopeStrategy` may be filled in by\n // the DEFAULTS block above (lines 332-340) rather than authored explicitly.\n // Guard 1 only fires on explicit authoring; this one catches the defaulted\n // case where `parentResourceRequirement=OPTIONAL` silently resolves to\n // `OPTIONAL_CONTEXT`.\n if (options?.isPrimaryScope &&\n accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope rel defaulted to accessScopeStrategy=OPTIONAL_CONTEXT\\n` +\n `(triggered by parentResourceRequirement=OPTIONAL without explicit strategy).\\n` +\n `Declare accessScopeStrategy=REQUIRES_CONTEXT (routed anchor) or STANDALONE\\n` +\n `(logical anchor, not routed) explicitly.`\n );\n }\n \n // Parse childOperations and display to apply defaults and convert to parsed types\n const parsedChildOperations = options?.childOperations \n ? ChildOperationsConfigSchema.parse(options.childOperations)\n : undefined;\n \n const parsedDisplay = options?.display\n ? RelationshipDisplayConfigSchema.parse(options.display)\n : undefined;\n\n const relationshipDeclaration: ResourceRelationshipDeclaration = {\n cardinality1,\n cardinality2,\n resourceType1,\n resourceType2,\n accessScopeStrategy,\n parentResourceRequirement,\n isPrimaryScope: options?.isPrimaryScope || false,\n primaryScope,\n jointResourceType: options?.jointResourceType || undefined,\n allowCycle: options?.allowCycle || false,\n isDisabled: options?.isDisabled || false,\n // Context policy for relationship traversal\n contextPolicy: options?.contextPolicy,\n // High-level shared semantic meaning authored by app developers.\n nature: options.nature,\n // Optional explicit semantic read intent authored by app developers.\n read: options?.read,\n // Child operations configuration (lifecycle + nested DTOs) - parsed to apply defaults\n childOperations: parsedChildOperations,\n // Static discriminator filter for conditional relationships\n discriminator: options?.discriminator,\n // Function-based condition for conditional relationships\n condition: options?.condition,\n // Frontend display configuration - parsed to apply defaults\n display: parsedDisplay,\n // Foreign key field for disambiguation or non-standard naming\n foreignKeyField: options?.foreignKeyField,\n // Write-time scope-membership constraint (opt-in; enforced on CREATE/UPDATE by write-integrity)\n scopeMembership: options?.scopeMembership,\n };\n\n return Resources_SharedUtils.compileRelationshipDeclaration(relationshipDeclaration);\n }\n"]}
1
+ {"version":3,"file":"resources-relationships.shared.factory.js","sourceRoot":"","sources":["../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoreResourceType, ResourceType } from \"./resources.shared.core.definitions\";\nimport {\n RelationshipNature,\n type RelationshipHandlingReadSettings,\n ResourceParentResourceRequirement,\n ResourcePrimaryScope,\n ResourceRelationship,\n ResourceRelationshipDeclaration,\n ResourceRelationshipAccessScopeStrategy,\n ResourceRelationshipCardinality,\n ResourceRelationshipConditionFn,\n type ScopeMembership,\n} from \"./resources.shared.schemas\";\nimport { ErrorType } from \"../errors/errors.shared.schemas\";\nimport { RelationshipContextPolicy } from \"./context-policy.shared.schemas\";\nimport { ChildOperationsConfig, ChildOperationsConfigSchema, ResourceRelationshipDiscriminator } from \"./child-operations.shared.schemas\";\nimport { RelationshipDisplayConfig, RelationshipDisplayConfigSchema } from \"./relationship-display.shared.schemas\";\nimport { Resources_SharedUtils } from \"./resources.shared.utils\";\n\n/**\n * Creates a configuration error with ErrorType.CONFIGURATION\n */\nfunction createConfigurationError(message: string): Error {\n const error = new Error(message);\n (error as any).type = ErrorType.CONFIGURATION;\n return error;\n}\n\n/**\n * @wildo_source:part:start saas.models.resource-relationship-builder-parameters facet:layer:shared facet:family:resource-config\n *\n * Parameters accepted by `createResourcesRelationship()` (app registry authoring).\n */\nexport type ResourceRelationship_BuilderParameters = {\n isDisabled? : boolean,\n isPrimaryScope? : boolean,\n parentResourceRequirement? : ResourceParentResourceRequirement,\n accessScopeStrategy? : ResourceRelationshipAccessScopeStrategy,\n jointResourceType?: ResourceType,\n /**\n * Opt-in flag for relationships that form cycles in the resource graph.\n * Required on every edge in a cycle for schema-level validation to pass.\n * @see ResourceRelationshipSchema.allowCycle\n */\n allowCycle?: boolean,\n /** Context policy for this relationship - controls how related resources are fetched */\n contextPolicy?: RelationshipContextPolicy,\n /**\n * High-level shared meaning of the relationship.\n *\n * This is the primary semantic field app developers should author. The\n * framework derives the deeper internal handling contract from it plus the\n * optional explicit read intent when present.\n */\n nature: RelationshipNature,\n /**\n * Optional explicit semantic read intent.\n *\n * This does not replace `childOperations.nested.onRead`; it only declares the\n * semantic read model the framework should resolve.\n */\n read?: RelationshipHandlingReadSettings,\n /**\n * Child operations configuration for this relationship.\n * Handles BACKEND concerns: lifecycle cascade and nested DTO aggregation.\n */\n childOperations?: ChildOperationsConfig,\n /**\n * Static discriminator filter for conditional relationships.\n * When specified, this relationship only applies when the parent resource's\n * discriminator field matches one of the specified values.\n */\n discriminator?: ResourceRelationshipDiscriminator,\n /**\n * Function-based condition for conditional relationships.\n * Evaluated at runtime with the parent resource data.\n * Unlike the static `discriminator`, this allows arbitrary logic.\n */\n condition?: ResourceRelationshipConditionFn,\n /**\n * Frontend display configuration for this relationship.\n * Defines how related resources are displayed in the UI.\n */\n display?: RelationshipDisplayConfig,\n /**\n * Foreign key field name for this relationship.\n *\n * When omitted: Inferred from parent's resourceFieldIdentifier via allResourceFieldIdentifiers map.\n * When specified: Used for disambiguation when multiple FKs point to same resource type,\n * or when FK field name differs from standard naming convention.\n *\n * Examples:\n * - Standard: ORGANIZATIONS → TODOS uses organizationId (inferred, no foreignKeyField needed)\n * - Disambiguation: TODOS → USERS via assignedToUserId vs createdByUserId (explicit)\n * - Self-referencing M:N is not expressed as one relationship declaration;\n * declare two explicit junction-resource edges so source and target FK\n * identities remain distinct.\n */\n foreignKeyField?: string,\n /**\n * Write-time SCOPE CONFINEMENT for a REFERENCE foreign key: the referenced target must be linked to\n * the writing row's scope through a junction, enforced on CREATE and UPDATE. Opt-in and additive —\n * omit for unchanged behavior.\n *\n * STRUCTURE only. `scopeMembership: true` is the simple case (junction auto-resolved from the M:N\n * scope-junction map); the object form names the junction / its columns when convention cannot — a\n * SELF-REFERENTIAL junction (organizations ↔ organizations). Per-variant POLICY (status, roles, typed\n * junction rows) is declared on the operation config's `referenceConstraints`.\n *\n * @example todos.assignedToUserId must be a member of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'assignedToUserId', scopeMembership: true }\n *\n * @example todos.sharedWithOrganizationId must be a partner of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'sharedWithOrganizationId',\n * scopeMembership: { junction: CoreResourceType.ORGANIZATION_PARTNERSHIPS } }\n */\n scopeMembership?: ScopeMembership,\n};\n/** @wildo_source:part:end saas.models.resource-relationship-builder-parameters */\n\n\n\n/**\n * Create a resource relationship declaration between two resource types.\n *\n * This is the primary entry point for declaring relationships in the resource registry.\n * Returns a `ResourceRelationship` object that is spread into the registry's relationship\n * array and later categorized by `transformResourceRelationships()` at factory time.\n *\n * ## Conditional Relationships\n *\n * Relationships can optionally carry runtime conditions via `discriminator` and/or `condition`:\n *\n * - **`discriminator`** (static): A simple `{ discriminatorField, values }` object.\n * The relationship is active only when `String(parent[discriminatorField])` is in `values`.\n * Useful for discriminated union patterns (e.g., recurring vs. one-time todos).\n *\n * - **`condition`** (dynamic): An arbitrary `(parentResource) => boolean` function.\n * Allows cross-field logic, computed checks, etc. Cannot be serialized to Zod.\n *\n * When both are provided, AND semantics apply — both must pass for the relationship\n * to be active at runtime.\n *\n * These conditions are NOT evaluated at startup/factory time. They are stored inline\n * on the relationship object and evaluated at runtime by:\n * - `ResourceContextBackendService.fetchChildResourcesWithPolicy()` — backend context building\n * - `ServicesRegistryHandler.filterRelationshipsByParent()` — nested CRUD + lifecycle\n * - `ResourceLayout_ContainerNested` — frontend display filtering\n *\n * @param resourceType1 - The parent resource type in 1:N/1:1, or the first entity side in M:N\n * @param resourceType2 - The child resource type in 1:N/1:1, or the second entity side in M:N\n * @param cardinality1 - Cardinality from the perspective of resourceType1\n * @param cardinality2 - Cardinality from the perspective of resourceType2\n * @param options - Required relationship options; must include `nature`.\n * Other relationship fields remain optional as needed (discriminator,\n * condition, childOperations, display, etc.)\n * @returns A fully constructed `ResourceRelationship` object\n *\n * ## M:N developer mental model\n *\n * For `MANY <-> MANY`, the declaration is still authored at the association level:\n * developers declare the two peer entity types plus `jointResourceType`.\n *\n * The framework may later decompose non-self associations into synthetic\n * entity->junction and junction->entity edges for DTO, routing, and runtime\n * processing, but that decomposition is an internal implementation detail.\n * App-facing meaning should stay association-centric, not \"manually declare the\n * synthetic edges yourself.\"\n *\n * Self-referencing M:N is the exception: one declaration cannot carry two\n * distinct source/target FK identities for the same resource type. Model it with\n * explicit junction-resource relationships instead.\n *\n * ## Semantic Resolution Order\n *\n * Relationship declarations now have an explicit semantic precedence:\n *\n * 1. structural topology (`cardinality*`, `jointResourceType`, `foreignKeyField`, ...)\n * 2. `nature`\n * 3. explicit semantic read intent (`read`) when authored\n * 4. derived handling contract (future resolver step, internal)\n * 5. current low-level operational projection (`childOperations`)\n *\n * `nature` is therefore the primary semantic declaration for app developers.\n * The fuller handling contract belongs to framework internals, not the authored\n * relationship API.\n *\n * ## Greenfield Direction\n *\n * Relationship declarations must define explicit `nature`. Missing annotations\n * are configuration bugs, not a compatibility target.\n *\n * @example Static discriminator (recurring todos → occurrences)\n * ```typescript\n * createResourcesRelationship(TODOS, RECURRING_OCCURRENCES, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * discriminator: { discriminatorField: 'recurringType', values: ['RECURRING'] },\n * childOperations: { lifecycle: { onParentDelete: { enabled: true } } },\n * })\n * ```\n *\n * @example Function-based condition\n * ```typescript\n * createResourcesRelationship(ORDERS, REFUND_RECORDS, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * condition: (parent) => parent.status === 'COMPLETED' && parent.totalAmount > 0,\n * })\n * ```\n */\nexport function createResourcesRelationship(\n resourceType1: ResourceType, \n resourceType2: ResourceType, \n cardinality1: ResourceRelationshipCardinality, \n cardinality2: ResourceRelationshipCardinality, \n options: ResourceRelationship_BuilderParameters\n ) : ResourceRelationship {\n\n if (!options?.nature) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationship declarations must define nature explicitly.\\n` +\n `Greenfield relationship semantics no longer infer meaning from childOperations or jointResourceType.`\n );\n }\n \n // ========================================\n // VALIDATION GUARDS\n // ========================================\n //\n // The numbers below are STABLE LABELS, not a count and not a sequence. They are cited from\n // `resources-relationships-factory.test.ts`, from `resources-registry.shared.core.definitions.ts`\n // and from sibling packages, so renumbering them breaks those references. Two consequences a\n // reader has to know before counting anything here:\n //\n // - there is no Guard 4, and no commit touching this file has ever added or removed one;\n // - three refusals in this sequence carry no number at all (self-referencing MANY-to-MANY\n // below Guard 2, the unresolvable primary scope, and the post-default-resolution repeat of\n // Guard 1 near the end of the function).\n //\n // So \"the guards\" is a larger set than \"the numbered guards\". Enumerate the `throw` statements,\n // not the labels.\n\n // Guard 1: `isPrimaryScope` cannot be paired with `OPTIONAL_CONTEXT`.\n //\n // ## Why this guard exists (and why it only forbids OPTIONAL_CONTEXT, not STANDALONE)\n //\n // `isPrimaryScope` and `accessScopeStrategy` govern two ORTHOGONAL concerns:\n //\n // - `isPrimaryScope` — ownership graph anchor: \"this parent is the\n // row's structural scope root\". Drives the\n // resource's `resourcePrimaryScope` enum, which\n // in turn drives scope-aware services (auth,\n // notifications, execution context, etc).\n // - `accessScopeStrategy` — URL routing + fetch-time context gating.\n // STANDALONE → no URL segment, no context gate\n // REQUIRES_CONTEXT → mandatory URL segment + gate\n // OPTIONAL_CONTEXT → optional URL segment\n //\n // The two concerns are already orthogonalized in the URL builder\n // (`generateParentCombinations` filters out STANDALONE parents *before*\n // bucketing the rest by `isPrimaryScope`), so a `STANDALONE + isPrimaryScope`\n // rel is URL-inert by construction — it contributes zero path segments and\n // simply anchors the scope enum. That is a coherent, intended configuration\n // (e.g. internal ledgers like `jobExecutions` that are APP-scoped but not\n // routed under `/applications/:id/…`, user-owned credential stores that are\n // USER_SELF-scoped but not exposed as routable child resources).\n //\n // `OPTIONAL_CONTEXT + isPrimaryScope` is however INCOHERENT under the current\n // combinator: `generateParentCombinations` puts every `isPrimaryScope` edge\n // into the always-on bucket, which would force an \"optional\" primary parent\n // to appear in every URL combination — contradicting its optionality. That\n // redesign is out of scope here; until then the guard remains.\n if (options?.isPrimaryScope &&\n options?.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope cannot have accessScopeStrategy=OPTIONAL_CONTEXT.\\n` +\n `A primary-scope rel marks the structural ownership anchor; OPTIONAL_CONTEXT\\n` +\n `would make the anchor optional in URLs, which the current URL combinator\\n` +\n `cannot express coherently. Use REQUIRES_CONTEXT (routed anchor) or\\n` +\n `STANDALONE (logical anchor, not routed).`\n );\n }\n \n // Guard 2: MANY-to-MANY requires jointResourceType (junction table)\n if (cardinality1 === ResourceRelationshipCardinality.MANY && \n cardinality2 === ResourceRelationshipCardinality.MANY &&\n !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `MANY-to-MANY relationships require a jointResourceType (junction table).`\n );\n }\n\n if (\n cardinality1 === ResourceRelationshipCardinality.MANY &&\n cardinality2 === ResourceRelationshipCardinality.MANY &&\n options?.jointResourceType &&\n resourceType1 === resourceType2\n ) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing MANY-to-MANY relationships cannot be authored as one association declaration.\\n` +\n `Declare explicit junction-resource relationships so source and target edge identity stay explicit.`\n );\n }\n \n // (The refusal immediately above carries no guard number: self-referencing MANY-to-MANY.)\n //\n // Note: foreignKeyField IS valid with isPrimaryScope - it specifies the FK field on the child\n // resource that points back to the parent, which is useful for 1:1 relationships\n \n // Guard 3: jointResourceType should not be combined with foreignKeyField.\n // Self-referencing many-to-many is rejected above because a single\n // declaration cannot encode two FK identities for the same peer resource.\n if (options?.jointResourceType && options?.foreignKeyField && resourceType1 !== resourceType2) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Cannot combine jointResourceType and foreignKeyField for non-self-referencing M:N.\\n` +\n `Use jointResourceType for MANY-to-MANY via junction table.`\n );\n }\n \n // Guard 5: foreignKeyField must end with 'Id' or 'Ids' (reserved for FK naming convention)\n if (options?.foreignKeyField) {\n const fkField = options.foreignKeyField;\n if (!fkField.endsWith('Id') && !fkField.endsWith('Ids')) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `foreignKeyField \"${fkField}\" must end with 'Id' or 'Ids' (e.g., assignedToUserId, memberIds).\\n` +\n `This naming convention is reserved for foreign key fields.`\n );\n }\n }\n \n // Guard 6: Self-referencing 1:N/1:1 relationships require explicit foreignKeyField.\n // Without it, the default FK (derived from resourceFieldIdentifier) would collide with\n // itself in URL param generation — e.g., /resource/{resourceId}/resource/{resourceId}.\n // M:N self-refs are rejected above: one declaration cannot encode distinct\n // source/target FK identities for the same peer resource.\n if (resourceType1 === resourceType2 && !options?.jointResourceType) {\n if (!options?.foreignKeyField) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST specify foreignKeyField explicitly.\\n` +\n `Without it, URL parameter names collide (same resource type on both sides).`\n );\n }\n\n // Guard 7: Self-referencing 1:N/1:1 relationships must have OPTIONAL parent requirement.\n // Tree roots have no parent — MANDATORY would make root-level access impossible.\n const effectiveParentReq = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n if (effectiveParentReq === ResourceParentResourceRequirement.MANDATORY) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST have parentResourceRequirement=OPTIONAL.\\n` +\n `Tree/graph roots have no parent — MANDATORY would make root-level access impossible.`\n );\n }\n }\n\n // Guard 8: junction-backed relationships are association semantics when nature is explicit.\n if (options?.jointResourceType && options?.nature && options.nature !== RelationshipNature.ASSOCIATION) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationships with jointResourceType must declare nature=ASSOCIATION.\\n` +\n `Junction-backed relationships are association-centric in the shared model.`\n );\n }\n\n // Guard 9: explicit association semantics require a junction resource.\n if (options?.nature === RelationshipNature.ASSOCIATION && !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `nature=ASSOCIATION requires jointResourceType.\\n` +\n `Association semantics are reserved for explicit link-management / junction-backed relationships.`\n );\n }\n \n // ========================================\n // PRIMARY SCOPE MAPPING\n // ========================================\n \n let primaryScope : ResourcePrimaryScope | undefined;\n if (options?.isPrimaryScope) {\n \n const primaryScopeMap = {\n [CoreResourceType.ORGANIZATIONS]: ResourcePrimaryScope.ORGANIZATIONS,\n [CoreResourceType.USERS]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.USER_SELF]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.APPLICATION]: ResourcePrimaryScope.APPLICATION,\n [CoreResourceType.ANONYMOUS_USERS]: ResourcePrimaryScope.ANONYMOUS,\n }\n primaryScope = primaryScopeMap[resourceType1 as CoreResourceType];\n \n if (!primaryScope) {\n throw createConfigurationError(`Resource type ${resourceType1} is not related to a primary scope`);\n }\n }\n \n // ========================================\n // ACCESS SCOPE STRATEGY DEFAULTS\n // ========================================\n\n const parentResourceRequirement = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n let accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n\n if (!options?.accessScopeStrategy) {\n if (parentResourceRequirement === ResourceParentResourceRequirement.MANDATORY) {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n } else {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT;\n }\n } else {\n accessScopeStrategy = options.accessScopeStrategy;\n }\n\n // Post-default-resolution check: `isPrimaryScope` must resolve to REQUIRES_CONTEXT\n // or STANDALONE, never OPTIONAL_CONTEXT. See Guard 1 above for the full\n // rationale (ownership graph vs URL routing are orthogonal, except for the\n // OPTIONAL_CONTEXT incoherence).\n //\n // This second gate exists because `accessScopeStrategy` may be filled in by\n // the DEFAULTS block above (lines 332-340) rather than authored explicitly.\n // Guard 1 only fires on explicit authoring; this one catches the defaulted\n // case where `parentResourceRequirement=OPTIONAL` silently resolves to\n // `OPTIONAL_CONTEXT`.\n if (options?.isPrimaryScope &&\n accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope rel defaulted to accessScopeStrategy=OPTIONAL_CONTEXT\\n` +\n `(triggered by parentResourceRequirement=OPTIONAL without explicit strategy).\\n` +\n `Declare accessScopeStrategy=REQUIRES_CONTEXT (routed anchor) or STANDALONE\\n` +\n `(logical anchor, not routed) explicitly.`\n );\n }\n \n // Parse childOperations and display to apply defaults and convert to parsed types\n const parsedChildOperations = options?.childOperations \n ? ChildOperationsConfigSchema.parse(options.childOperations)\n : undefined;\n \n const parsedDisplay = options?.display\n ? RelationshipDisplayConfigSchema.parse(options.display)\n : undefined;\n\n const relationshipDeclaration: ResourceRelationshipDeclaration = {\n cardinality1,\n cardinality2,\n resourceType1,\n resourceType2,\n accessScopeStrategy,\n parentResourceRequirement,\n isPrimaryScope: options?.isPrimaryScope || false,\n primaryScope,\n jointResourceType: options?.jointResourceType || undefined,\n allowCycle: options?.allowCycle || false,\n isDisabled: options?.isDisabled || false,\n // Context policy for relationship traversal\n contextPolicy: options?.contextPolicy,\n // High-level shared semantic meaning authored by app developers.\n nature: options.nature,\n // Optional explicit semantic read intent authored by app developers.\n read: options?.read,\n // Child operations configuration (lifecycle + nested DTOs) - parsed to apply defaults\n childOperations: parsedChildOperations,\n // Static discriminator filter for conditional relationships\n discriminator: options?.discriminator,\n // Function-based condition for conditional relationships\n condition: options?.condition,\n // Frontend display configuration - parsed to apply defaults\n display: parsedDisplay,\n // Foreign key field for disambiguation or non-standard naming\n foreignKeyField: options?.foreignKeyField,\n // Write-time scope-membership constraint (opt-in; enforced on CREATE/UPDATE by write-integrity)\n scopeMembership: options?.scopeMembership,\n };\n\n return Resources_SharedUtils.compileRelationshipDeclaration(relationshipDeclaration);\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resources-serialization.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../src/resources/resources-serialization.shared.schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources-serialization.shared.schemas.d.ts","sourceRoot":"","sources":["../../../src/resources/resources-serialization.shared.schemas.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,23 @@ export declare enum CoreResourceType {
60
60
  ORGANIZATION_PROFILES = "organizationProfiles",
61
61
  ORGANIZATION_PREFERENCES = "organizationPreferences",
62
62
  PLATFORM_ACCESS_GRANTS = "platformAccessGrants",
63
+ /**
64
+ * The APPLICATION-WIDE sibling of {@link CoreResourceType.PLATFORM_ACCESS_GRANTS}.
65
+ *
66
+ * Same lifecycle, same vocabulary, same expiry control — a DIFFERENT scope, and the scope is the
67
+ * whole reason it is a second resource rather than a field on the first. A platform access grant
68
+ * is an ORGANIZATIONS-scoped row addressed at `/organizations/{organizationId}/…`, because the
69
+ * tenant it names is the party that sees, approves and revokes it. An application-wide elevation
70
+ * names NO tenant, so there is nothing for that route to carry and nobody for the Lockbox posture
71
+ * to ask.
72
+ *
73
+ * Its approval is therefore the TWO-PERSON RULE: a second platform administrator, never the
74
+ * requester. `.claude/rules/administrative-continuity-floors.md` — "a second factor authenticates
75
+ * a session; only a second signature constrains an authenticated operator". Customer approval is
76
+ * the industry ceiling (Lockbox, Access Approval) and is structurally unavailable here, so a
77
+ * second signature is the strongest control that exists for this act.
78
+ */
79
+ APPLICATION_ACCESS_GRANTS = "applicationAccessGrants",
63
80
  ORGANIZATION_NOTIFICATIONS = "organizationNotifications",
64
81
  ORGANIZATION_FEATURES = "organizationFeatures",
65
82
  USER_FEATURES = "userFeatures",
@@ -68,6 +85,14 @@ export declare enum CoreResourceType {
68
85
  ORGANIZATION_UNIT_MEMBERS = "organizationUnitMembers",
69
86
  ORG_API_KEYS = "organizationApiKeys",
70
87
  OAUTH_CLIENTS_ORGANIZATION = "organizationOAuthClients",
88
+ /**
89
+ * An organization's OWN credential toward a third-party provider — its Slack workspace token,
90
+ * its CRM API key. Distinct from the deployment's `process.env` secret, which is one value for
91
+ * every tenant in the application, and distinct from a user's delegated OAuth grant (#333),
92
+ * which has a different owner and a different revocation.
93
+ */
94
+ ORG_PROVIDER_CREDENTIALS = "organizationProviderCredentials",
95
+ USER_PROVIDER_CREDENTIALS = "userProviderCredentials",
71
96
  ORGANIZATION_SCIM_TOKENS = "organizationScimTokens",
72
97
  ORGANIZATION_SCIM_PROVISIONING_CONFIG = "organizationScimProvisioningConfig",
73
98
  ORGANIZATION_SSO_CONNECTIONS = "organizationSsoConnections",
@@ -100,6 +125,35 @@ export declare enum CoreResourceType {
100
125
  PROMOTIONS = "promotions",
101
126
  REFERRALS = "referrals",
102
127
  AUDIT_LOGS = "auditLogs",
128
+ /**
129
+ * The APPLICATION-scoped door onto the SAME audit rows `AUDIT_LOGS` serves.
130
+ *
131
+ * `AUDIT_LOGS` is organization-scoped: its only route is
132
+ * `/organizations/{organizationId}/audit-logs`, so it can only ever return rows carrying that
133
+ * tenant. But a security event is frequently application-scoped BY NATURE — `logUserLogin` takes
134
+ * `organizationId` as OPTIONAL because at login no organization is selected, and the same holds
135
+ * for session eviction, token refresh and application-wide authentication-policy changes.
136
+ * Measured on a dogfood application (#317): 94 of 127 rows carried no organization and were
137
+ * therefore reachable through no API at all.
138
+ *
139
+ * This type is that missing door, and it is a SEPARATE type rather than a second route on
140
+ * `AUDIT_LOGS` because the URL combinator forbids the alternative: `generateParentCombinations`
141
+ * puts every `isPrimaryScope` and every `REQUIRES_CONTEXT` parent into EVERY combination, so
142
+ * routing `AUDIT_LOGS`' application edge would rewrite its organization route to
143
+ * `/applications/{applicationId}/organizations/{organizationId}/audit-logs` and break every
144
+ * existing consumer. A sibling type with a single application parent takes the route it needs and
145
+ * leaves the organization door untouched.
146
+ *
147
+ * Both types address ONE row set through `RESOURCE_SHARED_PERSISTENCE_COLLECTION_ALIASES` — the
148
+ * mechanism `USER_SELF` already uses to address `USERS`' rows. Two doors, one record set: the
149
+ * organization door stays tenant-filtered, this one is `APP_ADMIN_SUPER_ADMIN`-only, and a read
150
+ * here that touches a tenant-attributed row emits `CROSS_TENANT_ADMINISTRATIVE_ACCESS`, once per
151
+ * tenant reached. That emission is NOT inherited: `authorizeOrganizations`, where the event is
152
+ * otherwise raised, runs only for ORGANIZATIONS-scoped resources. Each read variant here declares
153
+ * `admitsCrossTenantPlatformAdministration`, and that declaration is what enrols the read in the
154
+ * trail (`security/authorizations/cross-tenant-read-observation.backend.ts`).
155
+ */
156
+ APPLICATION_AUDIT_LOGS = "applicationAuditLogs",
103
157
  USER_NOTIFICATION_BADGES = "userNotificationBadges",
104
158
  ORGANIZATION_NOTIFICATION_BADGES = "organizationNotificationBadges",
105
159
  ORGANIZATION_WEBHOOK_CONFIG = "organizationWebhookConfig",
@@ -1 +1 @@
1
- {"version":3,"file":"resources.shared.core.definitions.d.ts","sourceRoot":"","sources":["../../../../src/resources/resources.shared.core.definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.shared.core.definitions.d.ts","sourceRoot":"","sources":["../../../src/resources/resources.shared.core.definitions.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,23 @@ export var CoreResourceType;
85
85
  CoreResourceType["ORGANIZATION_PROFILES"] = "organizationProfiles";
86
86
  CoreResourceType["ORGANIZATION_PREFERENCES"] = "organizationPreferences";
87
87
  CoreResourceType["PLATFORM_ACCESS_GRANTS"] = "platformAccessGrants";
88
+ /**
89
+ * The APPLICATION-WIDE sibling of {@link CoreResourceType.PLATFORM_ACCESS_GRANTS}.
90
+ *
91
+ * Same lifecycle, same vocabulary, same expiry control — a DIFFERENT scope, and the scope is the
92
+ * whole reason it is a second resource rather than a field on the first. A platform access grant
93
+ * is an ORGANIZATIONS-scoped row addressed at `/organizations/{organizationId}/…`, because the
94
+ * tenant it names is the party that sees, approves and revokes it. An application-wide elevation
95
+ * names NO tenant, so there is nothing for that route to carry and nobody for the Lockbox posture
96
+ * to ask.
97
+ *
98
+ * Its approval is therefore the TWO-PERSON RULE: a second platform administrator, never the
99
+ * requester. `.claude/rules/administrative-continuity-floors.md` — "a second factor authenticates
100
+ * a session; only a second signature constrains an authenticated operator". Customer approval is
101
+ * the industry ceiling (Lockbox, Access Approval) and is structurally unavailable here, so a
102
+ * second signature is the strongest control that exists for this act.
103
+ */
104
+ CoreResourceType["APPLICATION_ACCESS_GRANTS"] = "applicationAccessGrants";
88
105
  CoreResourceType["ORGANIZATION_NOTIFICATIONS"] = "organizationNotifications";
89
106
  CoreResourceType["ORGANIZATION_FEATURES"] = "organizationFeatures";
90
107
  CoreResourceType["USER_FEATURES"] = "userFeatures";
@@ -93,6 +110,14 @@ export var CoreResourceType;
93
110
  CoreResourceType["ORGANIZATION_UNIT_MEMBERS"] = "organizationUnitMembers";
94
111
  CoreResourceType["ORG_API_KEYS"] = "organizationApiKeys";
95
112
  CoreResourceType["OAUTH_CLIENTS_ORGANIZATION"] = "organizationOAuthClients";
113
+ /**
114
+ * An organization's OWN credential toward a third-party provider — its Slack workspace token,
115
+ * its CRM API key. Distinct from the deployment's `process.env` secret, which is one value for
116
+ * every tenant in the application, and distinct from a user's delegated OAuth grant (#333),
117
+ * which has a different owner and a different revocation.
118
+ */
119
+ CoreResourceType["ORG_PROVIDER_CREDENTIALS"] = "organizationProviderCredentials";
120
+ CoreResourceType["USER_PROVIDER_CREDENTIALS"] = "userProviderCredentials";
96
121
  CoreResourceType["ORGANIZATION_SCIM_TOKENS"] = "organizationScimTokens";
97
122
  CoreResourceType["ORGANIZATION_SCIM_PROVISIONING_CONFIG"] = "organizationScimProvisioningConfig";
98
123
  // SSO Resources (Phase H-SSO)
@@ -134,6 +159,35 @@ export var CoreResourceType;
134
159
  CoreResourceType["REFERRALS"] = "referrals";
135
160
  // Audit and Compliance Resources
136
161
  CoreResourceType["AUDIT_LOGS"] = "auditLogs";
162
+ /**
163
+ * The APPLICATION-scoped door onto the SAME audit rows `AUDIT_LOGS` serves.
164
+ *
165
+ * `AUDIT_LOGS` is organization-scoped: its only route is
166
+ * `/organizations/{organizationId}/audit-logs`, so it can only ever return rows carrying that
167
+ * tenant. But a security event is frequently application-scoped BY NATURE — `logUserLogin` takes
168
+ * `organizationId` as OPTIONAL because at login no organization is selected, and the same holds
169
+ * for session eviction, token refresh and application-wide authentication-policy changes.
170
+ * Measured on a dogfood application (#317): 94 of 127 rows carried no organization and were
171
+ * therefore reachable through no API at all.
172
+ *
173
+ * This type is that missing door, and it is a SEPARATE type rather than a second route on
174
+ * `AUDIT_LOGS` because the URL combinator forbids the alternative: `generateParentCombinations`
175
+ * puts every `isPrimaryScope` and every `REQUIRES_CONTEXT` parent into EVERY combination, so
176
+ * routing `AUDIT_LOGS`' application edge would rewrite its organization route to
177
+ * `/applications/{applicationId}/organizations/{organizationId}/audit-logs` and break every
178
+ * existing consumer. A sibling type with a single application parent takes the route it needs and
179
+ * leaves the organization door untouched.
180
+ *
181
+ * Both types address ONE row set through `RESOURCE_SHARED_PERSISTENCE_COLLECTION_ALIASES` — the
182
+ * mechanism `USER_SELF` already uses to address `USERS`' rows. Two doors, one record set: the
183
+ * organization door stays tenant-filtered, this one is `APP_ADMIN_SUPER_ADMIN`-only, and a read
184
+ * here that touches a tenant-attributed row emits `CROSS_TENANT_ADMINISTRATIVE_ACCESS`, once per
185
+ * tenant reached. That emission is NOT inherited: `authorizeOrganizations`, where the event is
186
+ * otherwise raised, runs only for ORGANIZATIONS-scoped resources. Each read variant here declares
187
+ * `admitsCrossTenantPlatformAdministration`, and that declaration is what enrols the read in the
188
+ * trail (`security/authorizations/cross-tenant-read-observation.backend.ts`).
189
+ */
190
+ CoreResourceType["APPLICATION_AUDIT_LOGS"] = "applicationAuditLogs";
137
191
  // Notification Badges Resources — polymorphic dual-scope (USER + ORG).
138
192
  // Each scope owns its own collection and its own access-control surface:
139
193
  // - USER variant: the user themselves reads/lists their badges; CREATE/UPDATE
@@ -150,6 +204,17 @@ export var CoreResourceType;
150
204
  CoreResourceType["APPLICATION_WEBHOOK_CONFIG"] = "applicationWebhookConfig";
151
205
  CoreResourceType["ORGANIZATION_M2M_WEBHOOK_DELIVERY_LOG"] = "organizationM2mWebhookDeliveryLog";
152
206
  CoreResourceType["APPLICATION_M2M_WEBHOOK_DELIVERY_LOG"] = "applicationM2mWebhookDeliveryLog";
207
+ // There is NO email equivalent of these two, and that is a DECISION rather than an oversight
208
+ // (#412, 2026-09-08). A sent email leaves log lines and nothing else — no resource, no delivery
209
+ // record — so "did this customer receive it?" is answered with the email provider's own tooling,
210
+ // never with Wildo. The asymmetry with these webhook logs is what makes the absence look
211
+ // accidental, which is why it is written down HERE as well as at the email service.
212
+ //
213
+ // The cost is not the table. A persisted email record carries retention policy, privacy
214
+ // classification, subject-export and erasure obligations FOR MESSAGE CONTENT — a new per-user
215
+ // personal-data store, for an answer a vendor already gives. A metadata-only variant (recipient,
216
+ // template, timestamp, provider id; no body) was available and also declined, because it is the
217
+ // same set of obligations over a smaller payload.
153
218
  // File Management Resources
154
219
  CoreResourceType["FILES"] = "files";
155
220
  // Queue/Job Resources (internal, repository-only)
@@ -327,6 +392,7 @@ export const coreResourceShared_FieldIdentifier = {
327
392
  [CoreResourceType.ORGANIZATION_PROFILES]: 'organizationProfileId',
328
393
  [CoreResourceType.ORGANIZATION_PREFERENCES]: 'organizationPreferencesId',
329
394
  [CoreResourceType.PLATFORM_ACCESS_GRANTS]: 'platformAccessGrantId',
395
+ [CoreResourceType.APPLICATION_ACCESS_GRANTS]: 'applicationAccessGrantId',
330
396
  [CoreResourceType.ORGANIZATION_NOTIFICATIONS]: 'organizationNotificationsId',
331
397
  [CoreResourceType.ORGANIZATION_FEATURES]: 'organizationFeaturesId',
332
398
  [CoreResourceType.USER_FEATURES]: 'userFeaturesId',
@@ -334,6 +400,8 @@ export const coreResourceShared_FieldIdentifier = {
334
400
  [CoreResourceType.ORGANIZATION_UNIT_MEMBERS]: 'organizationUnitMemberId',
335
401
  [CoreResourceType.ORG_API_KEYS]: 'orgApiKeyId',
336
402
  [CoreResourceType.OAUTH_CLIENTS_ORGANIZATION]: 'orgOAuthClientId',
403
+ [CoreResourceType.ORG_PROVIDER_CREDENTIALS]: 'orgProviderCredentialId',
404
+ [CoreResourceType.USER_PROVIDER_CREDENTIALS]: 'userProviderCredentialId',
337
405
  [CoreResourceType.ORGANIZATION_SCIM_TOKENS]: 'organizationScimTokenId',
338
406
  [CoreResourceType.ORGANIZATION_SCIM_PROVISIONING_CONFIG]: 'organizationScimProvisioningConfigId',
339
407
  [CoreResourceType.APPLICATION_API_KEYS]: 'appApiKeyId',
@@ -365,6 +433,7 @@ export const coreResourceShared_FieldIdentifier = {
365
433
  [CoreResourceType.PROMOTIONS]: 'promotionId',
366
434
  [CoreResourceType.REFERRALS]: 'referralId',
367
435
  [CoreResourceType.AUDIT_LOGS]: 'auditLogId',
436
+ [CoreResourceType.APPLICATION_AUDIT_LOGS]: 'applicationAuditLogId',
368
437
  // Notification Badges — polymorphic dual-scope variants
369
438
  [CoreResourceType.USER_NOTIFICATION_BADGES]: 'userNotificationBadgeId',
370
439
  [CoreResourceType.ORGANIZATION_NOTIFICATION_BADGES]: 'organizationNotificationBadgeId',