@wildo-ai/saas-models 1.1.1 → 1.1.2

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 (292) hide show
  1. package/dist/esm/applications/applications-context.schemas.d.ts +2 -0
  2. package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
  3. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts +1 -1
  4. package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
  5. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js +36 -0
  6. package/dist/esm/billing/billing-account.shared.resources-config.schemas.js.map +1 -1
  7. package/dist/esm/billing/billing-account.shared.schemas.d.ts.map +1 -1
  8. package/dist/esm/billing/billing-account.shared.schemas.js +8 -1
  9. package/dist/esm/billing/billing-account.shared.schemas.js.map +1 -1
  10. package/dist/esm/billing/billing-types.shared.schemas.d.ts +2 -2
  11. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts +1 -1
  12. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
  13. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js +39 -0
  14. package/dist/esm/billing/credit-pool.shared.resources-config.schemas.js.map +1 -1
  15. package/dist/esm/billing/credit-pool.shared.schemas.d.ts +6 -6
  16. package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
  17. package/dist/esm/billing/credit-pool.shared.schemas.js +8 -4
  18. package/dist/esm/billing/credit-pool.shared.schemas.js.map +1 -1
  19. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts +1 -1
  20. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
  21. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js +35 -0
  22. package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.js.map +1 -1
  23. package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
  24. package/dist/esm/billing/invoice-ref.shared.schemas.js +8 -3
  25. package/dist/esm/billing/invoice-ref.shared.schemas.js.map +1 -1
  26. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
  27. package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
  28. package/dist/esm/billing/subscription.shared.resources-config.schemas.js +39 -0
  29. package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
  30. package/dist/esm/billing/subscription.shared.schemas.d.ts +4 -4
  31. package/dist/esm/billing/subscription.shared.schemas.d.ts.map +1 -1
  32. package/dist/esm/billing/subscription.shared.schemas.js +6 -2
  33. package/dist/esm/billing/subscription.shared.schemas.js.map +1 -1
  34. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts +1 -1
  35. package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.map +1 -1
  36. package/dist/esm/billing/usage-record.shared.resources-config.schemas.js +39 -0
  37. package/dist/esm/billing/usage-record.shared.resources-config.schemas.js.map +1 -1
  38. package/dist/esm/billing/usage-record.shared.schemas.d.ts +4 -4
  39. package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
  40. package/dist/esm/billing/usage-record.shared.schemas.js +7 -3
  41. package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
  42. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
  43. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js +35 -2
  44. package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.js.map +1 -1
  45. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +61 -0
  46. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
  47. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +58 -0
  48. package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
  49. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
  50. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +14 -0
  51. package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
  52. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts +49 -0
  53. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
  54. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js +124 -1
  55. package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.js.map +1 -1
  56. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts +11 -3
  57. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
  58. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js +11 -3
  59. package/dist/esm/compliance/privacy/impersonalization.shared.schemas.js.map +1 -1
  60. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +93 -0
  61. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -0
  62. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +116 -0
  63. package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -0
  64. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts +67 -12
  65. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
  66. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js +95 -8
  67. package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.js.map +1 -1
  68. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +21 -1
  69. package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
  70. package/dist/esm/compliance/privacy/redaction.shared.schemas.js +20 -0
  71. package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
  72. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +2 -0
  73. package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
  74. package/dist/esm/config/app-configuration-shared.shared.schemas.js +29 -0
  75. package/dist/esm/config/app-configuration-shared.shared.schemas.js.map +1 -1
  76. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts +33 -0
  77. package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
  78. package/dist/esm/config/frontend/navigation.shared.schemas.js +32 -0
  79. package/dist/esm/config/frontend/navigation.shared.schemas.js.map +1 -1
  80. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +12 -1
  81. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
  82. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +12 -1
  83. package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
  84. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +13 -0
  85. package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
  86. package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
  87. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +6 -6
  88. package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
  89. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +26 -6
  90. package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
  91. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
  92. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +0 -2
  93. package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
  94. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +1 -0
  95. package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
  96. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +4 -3
  97. package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
  98. package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -3
  99. package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
  100. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts +1 -1
  101. package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
  102. package/dist/esm/features/user-features.shared.resources-config.schemas.js +48 -0
  103. package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
  104. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +144 -0
  105. package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -0
  106. package/dist/esm/files/file-upload-grant.shared.schemas.js +136 -0
  107. package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -0
  108. package/dist/esm/files/files.shared.schemas.d.ts +45 -4
  109. package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
  110. package/dist/esm/files/files.shared.schemas.js +48 -4
  111. package/dist/esm/files/files.shared.schemas.js.map +1 -1
  112. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts +1 -1
  113. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
  114. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js +33 -0
  115. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.js.map +1 -1
  116. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
  117. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js +6 -2
  118. package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.js.map +1 -1
  119. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts +1 -1
  120. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
  121. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js +53 -0
  122. package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.js.map +1 -1
  123. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts +1 -1
  124. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.d.ts.map +1 -1
  125. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js +43 -0
  126. package/dist/esm/flows-actors/flows-actors-execution.shared.resources-config.schemas.js.map +1 -1
  127. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
  128. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +8 -3
  129. package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
  130. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts +1 -1
  131. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.d.ts.map +1 -1
  132. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js +41 -0
  133. package/dist/esm/flows-actors/flows-actors-task.shared.resources-config.schemas.js.map +1 -1
  134. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts +0 -7
  135. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.map +1 -1
  136. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js +23 -13
  137. package/dist/esm/flows-actors/flows-actors-task.shared.schemas.js.map +1 -1
  138. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts +1 -1
  139. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
  140. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js +51 -0
  141. package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.js.map +1 -1
  142. package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.map +1 -1
  143. package/dist/esm/guidance/guidance-state.shared.schemas.js +8 -2
  144. package/dist/esm/guidance/guidance-state.shared.schemas.js.map +1 -1
  145. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts +1 -1
  146. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
  147. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js +51 -0
  148. package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.js.map +1 -1
  149. package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
  150. package/dist/esm/guidance/lifecycle-state.shared.schemas.js +28 -3
  151. package/dist/esm/guidance/lifecycle-state.shared.schemas.js.map +1 -1
  152. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +1 -1
  153. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
  154. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js +51 -0
  155. package/dist/esm/guidance/progression-state.shared.resources-config.schemas.js.map +1 -1
  156. package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
  157. package/dist/esm/guidance/progression-state.shared.schemas.js +18 -4
  158. package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
  159. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +37 -3
  160. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
  161. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +29 -3
  162. package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
  163. package/dist/esm/index.d.ts +6 -0
  164. package/dist/esm/index.d.ts.map +1 -1
  165. package/dist/esm/index.js +6 -0
  166. package/dist/esm/index.js.map +1 -1
  167. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts +70 -0
  168. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.d.ts.map +1 -0
  169. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js +71 -0
  170. package/dist/esm/notifications/m2m/m2m-webhook-delivery-contract.shared.js.map +1 -0
  171. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts +1 -1
  172. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
  173. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js +36 -0
  174. package/dist/esm/notifications/notification-badges.shared.resources-config.schemas.js.map +1 -1
  175. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts +1 -1
  176. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
  177. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js +44 -0
  178. package/dist/esm/organizations/organization-members.shared.resources-config.schemas.js.map +1 -1
  179. package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
  180. package/dist/esm/organizations/organization-members.shared.schemas.js +15 -4
  181. package/dist/esm/organizations/organization-members.shared.schemas.js.map +1 -1
  182. package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
  183. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -10
  184. package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
  185. package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
  186. package/dist/esm/queue/jobs.shared.resources-config.schemas.js +17 -0
  187. package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
  188. package/dist/esm/requests/websocket.shared.schemas.d.ts +59 -0
  189. package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
  190. package/dist/esm/requests/websocket.shared.schemas.js +103 -0
  191. package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
  192. package/dist/esm/resources/collection-query-parameters.shared.d.ts +22 -0
  193. package/dist/esm/resources/collection-query-parameters.shared.d.ts.map +1 -0
  194. package/dist/esm/resources/collection-query-parameters.shared.js +22 -0
  195. package/dist/esm/resources/collection-query-parameters.shared.js.map +1 -0
  196. package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
  197. package/dist/esm/resources/resources-config.shared.factory.js +86 -13
  198. package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
  199. package/dist/esm/resources/resources-config.shared.schemas.d.ts +162 -41
  200. package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
  201. package/dist/esm/resources/resources-config.shared.schemas.js +109 -20
  202. package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
  203. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
  204. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js +21 -6
  205. package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.js.map +1 -1
  206. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +57 -0
  207. package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
  208. package/dist/esm/security/authentications/authentication.shared.schemas.js +64 -0
  209. package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
  210. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts +17 -1
  211. package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
  212. package/dist/esm/security/authentications/consumable-token.shared.schemas.js +16 -0
  213. package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
  214. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts +28 -0
  215. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.d.ts.map +1 -0
  216. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js +28 -0
  217. package/dist/esm/security/authentications/mfa-backup-code-contract.shared.js.map +1 -0
  218. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts +21 -0
  219. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -0
  220. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js +21 -0
  221. package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -0
  222. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts +1 -1
  223. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
  224. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +43 -0
  225. package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
  226. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +0 -8
  227. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
  228. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +13 -4
  229. package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
  230. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts +16 -1
  231. package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
  232. package/dist/esm/security/authorizations/roles.shared.schemas.js +16 -1
  233. package/dist/esm/security/authorizations/roles.shared.schemas.js.map +1 -1
  234. package/dist/esm/security/authorizations/roles.shared.utils.d.ts +54 -0
  235. package/dist/esm/security/authorizations/roles.shared.utils.d.ts.map +1 -1
  236. package/dist/esm/security/authorizations/roles.shared.utils.js +59 -0
  237. package/dist/esm/security/authorizations/roles.shared.utils.js.map +1 -1
  238. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +61 -0
  239. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
  240. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +13 -1
  241. package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
  242. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts +1 -1
  243. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.d.ts.map +1 -1
  244. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js +35 -0
  245. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.resources-config.schemas.js.map +1 -1
  246. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
  247. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +7 -1
  248. package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
  249. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts +1 -1
  250. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
  251. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js +34 -0
  252. package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.js.map +1 -1
  253. package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
  254. package/dist/esm/users/inbound-contacts.shared.schemas.js +7 -4
  255. package/dist/esm/users/inbound-contacts.shared.schemas.js.map +1 -1
  256. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts +1 -1
  257. package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
  258. package/dist/esm/users/user-credentials.shared.resources-config.schemas.js +37 -0
  259. package/dist/esm/users/user-credentials.shared.resources-config.schemas.js.map +1 -1
  260. package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
  261. package/dist/esm/users/user-credentials.shared.schemas.js +17 -2
  262. package/dist/esm/users/user-credentials.shared.schemas.js.map +1 -1
  263. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts +1 -1
  264. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
  265. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js +36 -0
  266. package/dist/esm/users/user-identity-links.shared.resources-config.schemas.js.map +1 -1
  267. package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
  268. package/dist/esm/users/user-identity-links.shared.schemas.js +15 -5
  269. package/dist/esm/users/user-identity-links.shared.schemas.js.map +1 -1
  270. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +1 -1
  271. package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  272. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js +53 -0
  273. package/dist/esm/users/user-preferences.shared.resources-config.schemas.js.map +1 -1
  274. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts +1 -1
  275. package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  276. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js +62 -0
  277. package/dist/esm/users/user-profiles.shared.resources-config.schemas.js.map +1 -1
  278. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +1 -1
  279. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
  280. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js +53 -0
  281. package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.js.map +1 -1
  282. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts +1 -1
  283. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
  284. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js +62 -0
  285. package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.js.map +1 -1
  286. package/dist/esm/users/users.shared.schemas.d.ts +19 -0
  287. package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
  288. package/dist/esm/users/users.shared.schemas.js +41 -16
  289. package/dist/esm/users/users.shared.schemas.js.map +1 -1
  290. package/dist/tsconfig.build.tsbuildinfo +1 -1
  291. package/package.json +5 -6
  292. package/dist/esm/.builder.pid +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.shared.schemas.js","sourceRoot":"","sources":["../../../../../src/config/frontend/navigation.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Navigation — Configuration Schemas\n *\n * Zone-first, operation-driven navigation configuration model.\n * Decomposes navigation into four independent axes:\n *\n * 1. **Meaning** (input signals) — contextual facts at navigation time (source zone, operation,\n * cardinality, viewport, depth). NOT configured — these are inputs to resolution.\n * 2. **Transition** (verb) — HOW content arrives: push, replace, split, overlay, inplace, promote.\n * This is the primary thing that gets configured per zone.\n * 3. **Placement** (zones) — WHERE content lives: primary, secondary, companion, overlay.\n * Zones are structural layout areas AND source context for resolution.\n * 4. **Appearance** (visual) — HOW content renders in its slot: panel, drawer, dialog, sheet.\n * Only meaningful for split and overlay transitions.\n *\n * Key design decisions:\n * - Zones own their complete behavior (no global defaults + override pattern)\n * - Operations are transition keys; cardinality drives appearance only\n * - Embedding (tabs/sections within a parent) is view composition, not navigation\n * - `contentModel` (single/tabbed) is orthogonal to transitions\n *\n * @see _code_archive/docs-archive/navigation/navigation-v3-reflection.md\n */\n\nimport { z } from 'zod';\nimport { ViewportBreakpoint, DisplayDirection } from '@wildo-ai/zod-decorators';\nimport { CoreResourceOperation } from '../../resources/resources.shared.core.definitions';\n\n\n// ════════════════════════════════════════════════════════════════\n// Enums\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Navigation transition verbs — HOW content arrives at its destination.\n *\n * These are the six fundamental navigation actions. Every user-triggered\n * navigation event resolves to exactly one of these verbs. The source zone's\n * `transitions` map determines which verb fires for each operation.\n *\n * Four zone-level transitions: `push`, `replace`, `split`, `overlay`\n * Two cross-context transitions: `inplace` (element-level), `promote` (escape to primary)\n *\n * `push` behavior depends on the zone's `contentModel`:\n * - In `single` zones: stack-based (new content on top, back pops)\n * - In `tabbed` zones: opens a new tab (or activates existing for same resource)\n */\nexport enum NavigationTransition {\n /**\n * Content added to the zone's stack (single) or as a new tab (tabbed).\n * Back navigation pops the stack or switches to the previous tab.\n * URL adds a new path segment.\n */\n PUSH = 'push',\n /**\n * Content replaces the current content in the zone. No stack entry — the previous\n * content is gone from the zone's state (but remains in browser history).\n * URL replaces the current segment.\n */\n REPLACE = 'replace',\n /**\n * Content opens in an adjacent zone (secondary or companion).\n * Creates a side-by-side layout. The source zone's content remains visible.\n * Back navigation un-splits (closes the adjacent zone).\n * URL adds a split segment.\n */\n SPLIT = 'split',\n /**\n * Content opens in a floating layer above the entire layout (dialog, sheet, or drawer).\n * The underlying layout remains visible but non-interactive.\n * Back navigation or Escape dismisses the overlay.\n * URL adds an overlay param/hash.\n */\n OVERLAY = 'overlay',\n /**\n * Element-level transformation within the current view. A specific item in a\n * list/section transforms from one mode to another (read → edit); a CREATE\n * materializes a new element beside the existing ones. The parent view stays,\n * the zone stack is unchanged, and surrounding items remain visible.\n *\n * Fundamentally different from `replace` (which swaps the entire zone content).\n * `inplace` operates at the element level, not the zone level.\n *\n * No lifecycle modifiers (`persistent`/`ephemeral`) are valid on `inplace`.\n * No appearance to configure — the element transforms within its existing slot.\n *\n * **It is the one transition that does not place content in a zone**, which is\n * why the controller hands it to the element-level host\n * (`InPlaceOperationContext`) instead of resolving a target zone for it. That\n * host is provided by the COLLECTION the element belongs to, so a transition\n * resolving to `inplace` on a surface with no collection above it — a detail\n * page, a breadcrumb, a picker — degrades to an OVERLAY.\n *\n * **It is TRANSIENT: no URL, and a reload returns the view to rest.** Earlier\n * revisions of this comment promised a query param (`?editing=<childId>` /\n * `?creating=<resourceType>`) and none was ever written. It is not written now\n * either, and that is a decision rather than an omission: an inline row-edit is\n * a momentary state of a listing, not a place — no comparable admin framework\n * deep-links one, and anything that should survive a reload or a back button\n * wants `push`. `ResourceOperationActionPresentation.INLINE`, the per-operation\n * tier that selects the same host, is transient for the same reason.\n *\n * @example\n * // Click \"edit\" on a child in parent's inline section → item transforms to edit form\n * transitions: { [CoreResourceOperation.UPDATE]: NavigationTransition.INPLACE }\n *\n * // Click \"add\" in a relationship section → create form appears inline in the list\n * transitions: { [CoreResourceOperation.CREATE]: NavigationTransition.INPLACE }\n */\n INPLACE = 'inplace',\n /**\n * Escape the current context and open content at primary scope.\n * Abandons the current context: overlays close, companion/secondary dismiss.\n * The promoted content becomes the primary zone's top content.\n *\n * Use case: a link within an overlay should open as a full primary view,\n * or a nested detail in a companion zone should \"pop out\" to primary.\n *\n * Fundamentally different from `push` (which stays in the current zone) and\n * from `replace` (which replaces content within the same zone). `promote`\n * crosses zones and always targets primary.\n *\n * No lifecycle modifiers (`persistent`/`ephemeral`) are valid on `promote`.\n * No appearance to configure — content fills primary (same as push/replace).\n *\n * URL serialization: full URL change (promoted resource becomes the primary route).\n *\n * @example\n * // From an overlay, a link should open as primary (close overlay, show in primary)\n * transitions: { [CoreResourceOperation.READ]: NavigationTransition.PROMOTE }\n */\n PROMOTE = 'promote',\n}\n\n/**\n * Named layout zones — configurable structural areas WHERE content lives.\n *\n * Zones serve four purposes:\n * 1. **Structural** — which physical areas exist in the layout (declared in config)\n * 2. **Source context** — the same operation resolves differently FROM primary vs FROM secondary\n * 3. **Responsive** — each zone carries its own collapse behavior per viewport\n * 4. **Content model** — each zone independently manages single-stack or tabbed content\n *\n * Note: `overlay` is NOT a named zone — it's an implicit layer always available.\n * Overlay is a runtime destination, not a configurable zone. See `NavigationZone`\n * in the frontend runtime types for the full set including overlay.\n */\nexport enum NavigationZoneName {\n /** Main content area. Lists, root-level reads, primary workspace. Always exists. */\n PRIMARY = 'primary',\n /**\n * First adjacent zone. Detail content in list-detail patterns.\n * Only exists if declared in config. Appears when a `split` transition targets it.\n * Typical use: showing item details alongside a list.\n */\n SECONDARY = 'secondary',\n /**\n * Persistent supplementary content. Reference panels, docs, notes, threads.\n * Only exists if declared in config. Usually hidden by default (`defaultVisible: false`).\n * Activated by `split` with `persistent: true` or explicit user toggle.\n * Typical use: Slack thread panel, VS Code terminal, documentation sidebar.\n */\n COMPANION = 'companion',\n}\n\n/**\n * How a zone manages multiple items. Orthogonal to transitions.\n *\n * The transition says \"content arrives\" — the content model says\n * \"how does the zone accommodate it.\" Any zone can use any content model,\n * regardless of which transitions it supports.\n */\nexport enum NavigationZoneContentModel {\n /**\n * Navigation stack: new content pushes on top, previous preserved underneath.\n * Only one item visible at a time. Back navigation pops the stack.\n * `replace` replaces the top without adding to the stack.\n * This is the default for all zones.\n */\n SINGLE = 'single',\n /**\n * Parallel tabs: `push` creates a new tab (or activates existing for the same resource).\n * Tab bar is visible, showing all open tabs. No depth stack within tabs.\n * `replace` replaces the active tab's content. Close is an explicit action (not back).\n * When no tabs remain, `onEmpty` behavior applies.\n */\n TABBED = 'tabbed',\n}\n\n/**\n * Responsive collapse behavior when viewport shrinks below a zone's breakpoint.\n *\n * Only applies to secondary and companion zones. Primary never collapses.\n * When viewport grows back past the breakpoint, collapsed content migrates\n * back to its original zone (content is preserved).\n */\nexport enum ResponsiveCollapseMode {\n /**\n * Zone hides. Its content joins primary's navigation stack.\n * The user sees the content in-context within primary.\n * Back navigation pops back to primary's previous content.\n */\n PUSH = 'push',\n /**\n * Zone hides. Its content opens as an overlay on top of primary.\n * The user sees the content as a floating sheet/dialog.\n * Dismiss returns to the underlying primary content.\n */\n OVERLAY = 'overlay',\n}\n\n/**\n * What happens when a zone's last content is dismissed.\n * Only meaningful for secondary and companion zones (primary never empties,\n * overlay auto-dismisses by definition).\n */\nexport enum ZoneEmptyBehavior {\n /**\n * Zone hides, adjacent zones expand to fill the space.\n * Example: closing the last detail → layout returns to list-only.\n * This is the default for all non-primary zones.\n */\n COLLAPSE = 'collapse',\n /**\n * Zone stays visible with an empty-state placeholder.\n * Example: \"Select an item to view details\" message. Keeps layout stable.\n * Useful when the user frequently toggles between items.\n */\n EMPTY_STATE = 'emptyState',\n}\n\n/**\n * Visual presentation for overlay transitions.\n * Determines how floating content renders above the layout.\n */\nexport enum OverlayAppearance {\n /**\n * Centered modal dialog with backdrop.\n * Best for focused tasks: create forms, confirmations, destructive actions.\n * Blocks underlying content visually. Escape or backdrop click dismisses.\n */\n DIALOG = 'dialog',\n /**\n * Side or bottom drawer panel that slides in from an edge.\n * Best for contextual content that benefits from seeing the underlying layout.\n * Less disruptive than dialog. Common for detail views on mobile.\n */\n SHEET = 'sheet',\n /**\n * Vaul-backed mobile drawer.\n * Use when the navigation resolver should choose a drawer directly rather\n * than relying on a dialog appearance plus mobileShape policy.\n */\n DRAWER = 'drawer',\n}\n\n/**\n * Visual presentation for split transitions.\n * Determines how adjacent zone content renders alongside the source zone.\n */\nexport enum SplitAppearance {\n /**\n * Standard vertical side panel.\n * Content appears beside the source zone with a resizable divider.\n * Most common for list-detail patterns.\n */\n PANEL = 'panel',\n /**\n * Horizontal drawer (bottom panel).\n * Content appears below the source zone.\n * Used for companion panels like terminals, output logs, reference docs.\n */\n DRAWER = 'drawer',\n}\n\n// ════════════════════════════════════════════════════════════════\n// ViewportDiscriminated — Generic responsive override pattern\n// ════════════════════════════════════════════════════════════════\n\n/**\n * A value that is either a plain `T` (applies at all viewports) or a\n * viewport-keyed partial record for per-breakpoint control.\n *\n * This pattern is used throughout the navigation config for responsive properties:\n * `responsiveCollapse`, `appearance`, `contentSectionConfig`, `transition`.\n *\n * @example\n * // Plain value — same everywhere\n * responsiveCollapse: ResponsiveCollapseMode.PUSH\n *\n * // Viewport-discriminated — different per breakpoint\n * responsiveCollapse: { [ViewportBreakpoint.VERT_TABLET]: ResponsiveCollapseMode.PUSH, [ViewportBreakpoint.MOBILE]: ResponsiveCollapseMode.OVERLAY }\n *\n * // Overlay appearance — sheet on tablet, drawer on mobile\n * overlay: { [ViewportBreakpoint.VERT_TABLET]: OverlayAppearance.SHEET, [ViewportBreakpoint.MOBILE]: OverlayAppearance.DRAWER }\n */\nexport type ViewportDiscriminated<T> = T | Partial<Record<ViewportBreakpoint, T>>;\n\n/**\n * Zod schema factory for `ViewportDiscriminated<T>`.\n *\n * Produces a union: the plain inner schema OR a record keyed by `ViewportBreakpoint`\n * with inner schema values. The record must have at least one key.\n *\n * @param innerSchema - Zod schema for the value type at each breakpoint.\n */\nexport function viewportDiscriminatedSchema<T extends z.ZodType>(innerSchema: T) {\n return z.union([\n innerSchema,\n z.partialRecord(z.enum(ViewportBreakpoint), innerSchema).refine(\n (obj) => Object.keys(obj).length > 0,\n { message: 'Viewport-discriminated object must have at least one breakpoint key' },\n ),\n ]);\n}\n\n\n// ════════════════════════════════════════════════════════════════\n// Transition Config\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Extended transition with lifecycle modifiers.\n *\n * Most transitions are simple verbs (just the enum value). The object form\n * adds lifecycle semantics for two specific patterns:\n *\n * - **Companion pattern**: `{ transition: NavigationTransition.SPLIT, persistent: true }`\n * The split zone persists when the source zone's content changes.\n * Without `persistent`, a split zone would clear when primary navigates away.\n *\n * - **Inspect pattern**: `{ transition: NavigationTransition.OVERLAY, ephemeral: true }`\n * The overlay auto-closes when the source zone's stack changes.\n * Without `ephemeral`, overlays stay open until explicitly dismissed.\n *\n * Semantic constraints (enforced by `.refine()`):\n * - `persistent` is only valid on `split` transitions\n * - `ephemeral` is only valid on `overlay` transitions\n * - `persistent` and `ephemeral` are mutually exclusive\n * - `inplace` and `promote` do not accept any modifier (they are always simple verbs)\n */\nexport const TransitionObjectSchema = z.object({\n /** The transition verb. */\n transition: z.enum(NavigationTransition),\n /**\n * When `true`, the split zone persists when the source zone navigates away.\n * Only valid on `split` transitions. Targets the companion zone specifically\n * (rather than the default adjacent zone resolution).\n *\n * Example: Slack thread panel stays open when switching channels.\n */\n persistent: z.boolean().optional(),\n /**\n * When `true`, the overlay auto-closes when the source zone's stack changes.\n * Only valid on `overlay` transitions.\n *\n * Example: Quick-inspect preview that dismisses when the user clicks another item.\n */\n ephemeral: z.boolean().optional(),\n}).refine(\n (obj) => {\n if (obj.persistent && obj.transition !== NavigationTransition.SPLIT) return false;\n if (obj.ephemeral && obj.transition !== NavigationTransition.OVERLAY) return false;\n if (obj.persistent && obj.ephemeral) return false;\n return true;\n },\n { message: 'persistent is only valid on split; ephemeral is only valid on overlay; they are mutually exclusive' },\n);\nexport type TransitionObject = z.infer<typeof TransitionObjectSchema>;\n\n/**\n * A transition configuration: either a simple verb string or an object with modifiers.\n *\n * @example\n * // Simple verb\n * transitions: { read: NavigationTransition.SPLIT, create: NavigationTransition.OVERLAY }\n *\n * // Object with lifecycle modifier\n * transitions: { read: { transition: NavigationTransition.SPLIT, persistent: true } }\n */\nexport const TransitionConfigSchema = z.union([\n z.enum(NavigationTransition),\n TransitionObjectSchema,\n]);\nexport type TransitionConfig = z.infer<typeof TransitionConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Zone Configuration\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Operation → transition mapping for a zone.\n *\n * Partial record — only operations that the zone handles need entries.\n * Missing operations fall back to the framework's hardcoded defaults.\n *\n * Keys are `CoreResourceOperation` values such as `read`, `list`, `create`,\n * `update`, `delete`, and `search`.\n *\n * @example\n * transitions: {\n * read: NavigationTransition.SPLIT, // click item → split to secondary\n * list: NavigationTransition.REPLACE, // \"View all\" → replace primary\n * create: NavigationTransition.OVERLAY, // new item → dialog\n * update: NavigationTransition.INPLACE, // edit → transform element inline\n * delete: NavigationTransition.OVERLAY, // confirm → dialog\n * search: NavigationTransition.PUSH, // advanced search → full-surface route\n * }\n *\n * // From an overlay, promote a link to primary view\n * transitions: {\n * read: NavigationTransition.PROMOTE, // link in overlay → escape to primary\n * }\n */\n/** Partial record — only operations that the zone handles need entries. Missing operations fall back to framework defaults. */\nexport const ZoneTransitionsSchema = z.partialRecord(\n z.enum(CoreResourceOperation),\n TransitionConfigSchema,\n) as unknown as z.ZodType<Partial<Record<CoreResourceOperation, TransitionConfig>>>;\nexport type ZoneTransitions = Partial<Record<CoreResourceOperation, TransitionConfig>>;\n\n/**\n * Transition → visual appearance for a zone. Values are viewport-discriminated.\n *\n * Only `split` and `overlay` transitions have meaningful appearance choices.\n * `push`, `replace`, `inplace`, and `promote` have no appearance to configure:\n * - `push`/`replace` fill the zone\n * - `inplace` transforms an element within the current view\n * - `promote` fills primary (same as push/replace)\n *\n * @example\n * appearance: {\n * split: SplitAppearance.PANEL, // always side panel\n * overlay: { [ViewportBreakpoint.VERT_TABLET]: OverlayAppearance.SHEET, [ViewportBreakpoint.MOBILE]: OverlayAppearance.DRAWER }, // sheet on tablet, drawer on mobile\n * }\n */\nexport const ZoneAppearanceSchema = z.object({\n /** How split content renders. Default: `SplitAppearance.PANEL` (vertical side panel). */\n split: viewportDiscriminatedSchema(z.enum(SplitAppearance)).optional(),\n /** How overlay content renders. Default: `OverlayAppearance.DIALOG` (centered modal). */\n overlay: viewportDiscriminatedSchema(z.enum(OverlayAppearance)).optional(),\n});\nexport type ZoneAppearance = z.infer<typeof ZoneAppearanceSchema>;\n\n/**\n * Full zone configuration.\n *\n * Each declared zone in the layout owns its complete behavior:\n * which transition fires for each operation, how content appears,\n * and how the zone responds to viewport changes.\n *\n * Note: `minWidth`, `maxWidth`, `defaultVisible`, `onEmpty`,\n * and `responsiveCollapse` are only meaningful for secondary and companion zones.\n * Primary never collapses, never empties, and takes remaining space.\n * Setting these on primary has no effect.\n */\nexport const ZoneConfigSchema = z.object({\n /**\n * How this zone manages multiple items.\n * - `NavigationZoneContentModel.SINGLE` (default): stack-based navigation. One item visible, back pops.\n * - `NavigationZoneContentModel.TABBED`: parallel tabs. Tab bar visible, multiple items accessible.\n * @default NavigationZoneContentModel.SINGLE\n */\n contentModel: z.enum(NavigationZoneContentModel).default(NavigationZoneContentModel.SINGLE),\n\n /** Operation → transition mapping. Defines what happens for each user action in this zone. */\n transitions: ZoneTransitionsSchema,\n\n /** Transition → visual appearance. Only split and overlay have appearance choices. */\n appearance: ZoneAppearanceSchema.optional(),\n\n /**\n * Minimum pixel width when resizing. Constrains how far this side of the\n * split divider can be dragged. Only meaningful for secondary and companion zones.\n * Works in conjunction with `SplitConfigSchema.resizable`.\n */\n minWidth: z.number().positive().optional(),\n\n /**\n * Maximum pixel width when resizing. Constrains how far this side of the\n * split divider can be dragged. Only meaningful for secondary and companion zones.\n * Works in conjunction with `SplitConfigSchema.resizable`.\n */\n maxWidth: z.number().positive().optional(),\n\n /**\n * Whether this zone is visible on first render (before any transition targets it).\n * - Primary: always visible (this field is ignored).\n * - Secondary: defaults to `true` when `split.autoSplit` is `true`, `false` otherwise.\n * - Companion: defaults to `false` (hidden until a `split` transition targets it or user toggles).\n */\n defaultVisible: z.boolean().optional(),\n\n /**\n * What happens when this zone's last content is dismissed (stack empty, last tab closed).\n * - `ZoneEmptyBehavior.COLLAPSE` (default): zone hides, adjacent zones expand to fill.\n * - `ZoneEmptyBehavior.EMPTY_STATE`: zone stays visible with placeholder (\"Select an item to view details\").\n * Only meaningful for secondary and companion zones. Primary never empties.\n */\n onEmpty: z.enum(ZoneEmptyBehavior).optional(),\n\n /**\n * Responsive collapse rules: what happens when viewport shrinks below the zone's breakpoint.\n * Accepts a plain `ResponsiveCollapseMode` (all breakpoints) or viewport-discriminated object.\n * Only meaningful for secondary and companion zones. Primary never collapses.\n *\n * When viewport grows back past the breakpoint, collapsed content migrates back\n * to its original zone (content is preserved).\n *\n * @example\n * responsiveCollapse: ResponsiveCollapseMode.PUSH // always push into primary\n * responsiveCollapse: { [ViewportBreakpoint.VERT_TABLET]: ResponsiveCollapseMode.PUSH, [ViewportBreakpoint.MOBILE]: ResponsiveCollapseMode.OVERLAY } // tablet: push, mobile: overlay\n */\n responsiveCollapse: viewportDiscriminatedSchema(z.enum(ResponsiveCollapseMode)).optional(),\n});\nexport type ZoneConfig = z.infer<typeof ZoneConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// App-Level & From-Overlay Configuration\n// ════════════════════════════════════════════════════════════════\n\n/**\n * App-level navigation configuration: from OUTSIDE the zone system.\n *\n * Covers navigation triggered by sidebar clicks, command palette selections,\n * hotkey shortcuts, toast actions, and notification clicks.\n *\n * App-level navigation causes a **layout reset**: primary content is replaced,\n * secondary and companion zones are cleared. This is fundamentally different\n * from zone-level navigation where the source zone's content persists.\n *\n * @example\n * appLevel: {\n * transitions: {\n * list: NavigationTransition.REPLACE, // sidebar \"Projects\" → replace primary, clear others\n * read: NavigationTransition.REPLACE, // command palette \"Go to X\" → replace primary\n * create: NavigationTransition.OVERLAY, // quick action \"New X\" → dialog\n * search: NavigationTransition.REPLACE, // command/menu search surface → replace primary\n * },\n * appearance: { overlay: OverlayAppearance.DIALOG },\n * }\n */\nexport const AppLevelConfigSchema = z.object({\n /** Operation → transition mapping for app-level navigation. */\n transitions: ZoneTransitionsSchema,\n /** Appearance overrides for app-level transitions. */\n appearance: ZoneAppearanceSchema.optional(),\n});\nexport type AppLevelConfig = z.infer<typeof AppLevelConfigSchema>;\n\n/**\n * Navigation from within an overlay (dialog, sheet, or drawer).\n *\n * When already in an overlay, transitions behave differently to avoid\n * nesting overlays. Typically all operations `push` within the overlay's\n * own stack instead of opening new overlays.\n *\n * No appearance config — the content is already inside an overlay.\n *\n * @example\n * fromOverlay: {\n * transitions: {\n * read: NavigationTransition.PUSH, // push within overlay — don't nest modals\n * list: NavigationTransition.PUSH,\n * create: NavigationTransition.PUSH,\n * search: NavigationTransition.PUSH,\n * },\n * }\n */\nexport const FromOverlayConfigSchema = z.object({\n /** Operation → transition mapping when navigating from within an overlay. */\n transitions: ZoneTransitionsSchema,\n});\nexport type FromOverlayConfig = z.infer<typeof FromOverlayConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Split Geometry\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Companion-specific split geometry.\n * Controls how the companion zone is sized and positioned relative to the main content area.\n */\nexport const CompanionSplitConfigSchema = z.object({\n /**\n * Main-area-to-companion size ratio.\n * @example [70, 30] — companion takes 30% of available space\n * @default [70, 30]\n */\n ratio: z.tuple([z.number(), z.number()]).default([70, 30]),\n /**\n * How the companion is positioned relative to the main area.\n * - `DisplayDirection.VERTICAL`: companion on the side (left/right)\n * - `DisplayDirection.HORIZONTAL`: companion below (bottom panel, e.g. VS Code terminal)\n * @default DisplayDirection.VERTICAL\n */\n orientation: z.enum(DisplayDirection).default(DisplayDirection.VERTICAL),\n /**\n * Whether the companion split boundary is user-draggable.\n * When `true`, a draggable divider appears between the main area and the companion zone.\n * Per-side drag constraints use `ZoneConfig.minWidth`/`maxWidth` on the companion zone.\n * @default false\n */\n resizable: z.boolean().default(false),\n});\nexport type CompanionSplitConfig = z.infer<typeof CompanionSplitConfigSchema>;\n\n/**\n * Top-level split geometry — describes the physical relationship between zones.\n *\n * This is a top-level config (not per-zone) because it describes the INTER-zone\n * layout: how much space each zone gets, and the split direction.\n *\n * @example\n * split: {\n * autoSplit: true, // LIST pre-splits when primary.read = NavigationTransition.SPLIT\n * ratio: [40, 60], // 40% primary, 60% secondary\n * orientation: DisplayDirection.VERTICAL, // side-by-side\n * resizable: true, // divider is draggable\n * companion: {\n * ratio: [70, 30], // companion takes 30%\n * orientation: DisplayDirection.HORIZONTAL, // bottom panel\n * resizable: true,\n * },\n * }\n */\nexport const SplitConfigSchema = z.object({\n /**\n * Whether the primary zone pre-splits on initial load.\n * When `true` and `primary.transitions.read === NavigationTransition.SPLIT`, the secondary zone\n * appears immediately with the first list item selected (or empty state).\n * @default false\n */\n autoSplit: z.boolean().default(false),\n /**\n * Primary-to-secondary width/height ratio. Defines the initial proportion.\n * When `resizable` is `true`, user drag overrides this (persisted to localStorage).\n * @example [40, 60] — primary gets 40%, secondary gets 60%\n * @default [50, 50]\n */\n ratio: z.tuple([z.number(), z.number()]).default([50, 50]),\n /**\n * Split direction between primary and secondary.\n * - `DisplayDirection.VERTICAL` (default): side-by-side (most common for list-detail)\n * - `DisplayDirection.HORIZONTAL`: top-bottom (less common)\n * @default DisplayDirection.VERTICAL\n */\n orientation: z.enum(DisplayDirection).default(DisplayDirection.VERTICAL),\n /**\n * Whether the primary↔secondary split boundary is user-draggable.\n * When `true`, a draggable divider appears between primary and secondary zones.\n * Per-side drag constraints use `ZoneConfig.minWidth`/`maxWidth` on each zone.\n * @default false\n */\n resizable: z.boolean().default(false),\n /** Companion zone split geometry. Only relevant if companion zone is declared. */\n companion: CompanionSplitConfigSchema.optional(),\n});\nexport type SplitConfig = z.infer<typeof SplitConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Viewport Override Block\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Global viewport override — applies across ALL zones at a given breakpoint.\n *\n * Use for sweeping mobile/tablet overrides that affect the entire app.\n * For per-zone responsive behavior, use `ZoneConfig.responsiveCollapse` and\n * viewport-discriminated appearance values instead.\n *\n * @example\n * // In NavigationLayout:\n * [ViewportBreakpoint.MOBILE]: {\n * transitions: {\n * read: NavigationTransition.PUSH, // mobile: no splits, everything pushes\n * create: { transition: NavigationTransition.OVERLAY, ephemeral: true }, // mobile: create opens as an inspect-style ephemeral overlay\n * },\n * }\n */\nexport const ViewportOverrideSchema = z.object({\n /** Operation → transition overrides at this viewport. Merged over zone defaults. */\n transitions: (z.partialRecord(\n z.enum(CoreResourceOperation),\n TransitionConfigSchema,\n ) as unknown as z.ZodType<Partial<Record<CoreResourceOperation, TransitionConfig>>>).optional(),\n});\nexport type ViewportOverride = z.infer<typeof ViewportOverrideSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// NavigationLayout — Top-Level App Configuration\n// ════════════════════════════════════════════════════════════════\n\n/**\n * @wildo_source:part:start saas.models.navigation.layout facet:layer:shared facet:family:navigation-config\n *\n * The complete navigation layout configuration for an application.\n *\n * This is the single configuration object that defines the entire navigation\n * behavior. It specifies which zones exist, how each zone handles operations,\n * how zones are sized relative to each other, and global overrides.\n *\n * Resolution order (from highest to lowest priority):\n * 1. Per-operation frontend override (`operation.operationFrontendConfig.navigationOverrides`)\n * 2. Per-relationship override (`display.inParentNavigation.transition`)\n * 3. Global viewport override (`ViewportBreakpoint.MOBILE` / `ViewportBreakpoint.VERT_TABLET` blocks)\n * 4. Source context `transitions[operation]` + `appearance[transition]`\n * 5. Framework hardcoded fallback\n *\n * @example\n * const layout: NavigationLayout = {\n * zones: {\n * primary: { transitions: { read: NavigationTransition.SPLIT, create: NavigationTransition.OVERLAY, update: NavigationTransition.INPLACE } },\n * secondary: { transitions: { read: NavigationTransition.PUSH }, onEmpty: ZoneEmptyBehavior.COLLAPSE },\n * },\n * appLevel: { transitions: { list: NavigationTransition.REPLACE, create: NavigationTransition.OVERLAY } },\n * fromOverlay: { transitions: { read: NavigationTransition.PROMOTE } },\n * split: { autoSplit: true, ratio: [40, 60] },\n * maxDepth: 2,\n * };\n */\n/**\n * WHICH LAYER OWNS THE BACK AFFORDANCE.\n *\n * Two layers can render a back control for the same navigation stack: the app\n * SHELL (the menubar's hosted navigation control) and the current SURFACE (a\n * resource/view header, beside the icon + title + breadcrumb). Both mount the\n * same component, so without an explicit owner an app that hosts the shell\n * control gets TWO back arrows on every pushed page — one floating in the bar\n * with no context, one attached to the thing it goes back from.\n *\n * This is deliberately a POLICY rather than a per-surface flag: \"who owns this\n * chrome\" is one application-wide decision, and expressing it as an owner makes\n * the duplication unrepresentable instead of asking every surface to remember\n * to suppress itself.\n */\nexport enum NavigationBackAffordanceOwner {\n /**\n * The current surface's own header owns it — the back control sits beside the\n * surface's icon/title/breadcrumb, so it reads as \"back from THIS\". The shell\n * control renders nothing even when hosted. Default: it keeps the affordance\n * attached to its context, and matches the shell staying free of a lone,\n * context-free arrow.\n */\n SURFACE = 'surface',\n /**\n * The app shell's navigation control owns it — one fixed back control in the\n * menubar (the Notion-style top-left placement). Surface headers render none.\n * Requires the shell to actually host `NAVIGATION_CONTROL`; if it does not,\n * the application has no back affordance at all.\n */\n SHELL = 'shell',\n /**\n * BOTH layers render one. An explicit opt-in for layouts where the two\n * genuinely differ — e.g. a multi-zone shell whose bar control pops the\n * focused zone while each zone's header pops its own stack. Chosen\n * deliberately; never a default.\n */\n BOTH = 'both',\n}\n\n/** Default owner when a layout declares none — see {@link NavigationBackAffordanceOwner.SURFACE}. */\nexport const DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER: NavigationBackAffordanceOwner = NavigationBackAffordanceOwner.SURFACE;\n\n/**\n * Does `owner` grant the SHELL (menubar navigation control) a back affordance?\n * Shared by both render sites so the two can never disagree about one policy.\n */\nexport function navigationBackAffordanceAdmitsShell(owner: NavigationBackAffordanceOwner | undefined): boolean {\n const resolved = owner ?? DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER;\n return resolved === NavigationBackAffordanceOwner.SHELL || resolved === NavigationBackAffordanceOwner.BOTH;\n}\n\n/** Does `owner` grant the current SURFACE's header a back affordance? */\nexport function navigationBackAffordanceAdmitsSurface(owner: NavigationBackAffordanceOwner | undefined): boolean {\n const resolved = owner ?? DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER;\n return resolved === NavigationBackAffordanceOwner.SURFACE || resolved === NavigationBackAffordanceOwner.BOTH;\n}\n\nexport const NavigationLayoutSchema = z.object({\n /**\n * Zone declarations. Primary is required, secondary and companion are optional.\n * Undeclared zones cannot be targeted by transitions — `NavigationTransition.SPLIT` in a layout\n * without secondary will escalate to overlay.\n */\n zones: z.object({\n /** Primary zone — always exists. Main content area (lists, root reads). */\n primary: ZoneConfigSchema,\n /** Secondary zone — optional. First adjacent zone for detail content. */\n secondary: ZoneConfigSchema.optional(),\n /** Companion zone — optional. Persistent supplementary content. */\n companion: ZoneConfigSchema.optional(),\n }),\n /**\n * How navigation from the app shell (sidebar, command palette, hotkey) behaves.\n * Causes a layout reset when targeting primary.\n */\n appLevel: AppLevelConfigSchema.optional(),\n /**\n * How navigation within an overlay behaves.\n * Prevents overlay nesting — typically everything pushes within the overlay stack.\n */\n fromOverlay: FromOverlayConfigSchema.optional(),\n /** Split geometry: ratios, orientations, autoSplit. */\n split: SplitConfigSchema.optional(),\n /**\n * Maximum push depth before the framework escalates to overlay.\n * When a zone's stack depth reaches `maxDepth`, the next `push` opens an overlay instead.\n * Prevents infinitely deep navigation stacks. Per-relationship `maxDepth` can override.\n */\n maxDepth: z.number().int().positive().optional(),\n\n /**\n * Which layer renders the back control — see {@link NavigationBackAffordanceOwner}.\n * Omitted means {@link DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER} (the surface's\n * own header), which is what keeps a shell that hosts `NAVIGATION_CONTROL`\n * from rendering a second, context-free back arrow beside every page's own.\n */\n backAffordanceOwner: z.enum(NavigationBackAffordanceOwner).optional(),\n\n /**\n * Mobile viewport override — applies across all zones when viewport is `<md` (< 768px).\n * Use for sweeping mobile behavior changes (e.g., all splits become pushes).\n */\n [ViewportBreakpoint.MOBILE]: ViewportOverrideSchema.optional(),\n /**\n * Tablet viewport override — applies across all zones when viewport is `<lg` (768–1023px).\n * Use for tablet-specific behavior changes.\n */\n [ViewportBreakpoint.VERT_TABLET]: ViewportOverrideSchema.optional(),\n});\nexport type NavigationLayout = z.infer<typeof NavigationLayoutSchema>;\n/** @wildo_source:part:end saas.models.navigation.layout */\n\n// ════════════════════════════════════════════════════════════════\n// Per-Resource Operation Override\n// ════════════════════════════════════════════════════════════════\n\n// DELETED — NavigationOperationOverrideSchema and NavigationOperationOverride\n// Transferred to @wildo-ai/saas-frontend-lib (resources.frontend.schemas)\n"]}
1
+ {"version":3,"file":"navigation.shared.schemas.js","sourceRoot":"","sources":["../../../../../src/config/frontend/navigation.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Navigation — Configuration Schemas\n *\n * Zone-first, operation-driven navigation configuration model.\n * Decomposes navigation into four independent axes:\n *\n * 1. **Meaning** (input signals) — contextual facts at navigation time (source zone, operation,\n * cardinality, viewport, depth). NOT configured — these are inputs to resolution.\n * 2. **Transition** (verb) — HOW content arrives: push, replace, split, overlay, inplace, promote.\n * This is the primary thing that gets configured per zone.\n * 3. **Placement** (zones) — WHERE content lives: primary, secondary, companion, overlay.\n * Zones are structural layout areas AND source context for resolution.\n * 4. **Appearance** (visual) — HOW content renders in its slot: panel, drawer, dialog, sheet.\n * Only meaningful for split and overlay transitions.\n *\n * Key design decisions:\n * - Zones own their complete behavior (no global defaults + override pattern)\n * - Operations are transition keys; cardinality drives appearance only\n * - Embedding (tabs/sections within a parent) is view composition, not navigation\n * - `contentModel` (single/tabbed) is orthogonal to transitions\n *\n * @see _code_archive/docs-archive/navigation/navigation-v3-reflection.md\n */\n\nimport { z } from 'zod';\nimport { ViewportBreakpoint, DisplayDirection } from '@wildo-ai/zod-decorators';\nimport { CoreResourceOperation } from '../../resources/resources.shared.core.definitions';\n\n\n// ════════════════════════════════════════════════════════════════\n// Enums\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Navigation transition verbs — HOW content arrives at its destination.\n *\n * These are the six fundamental navigation actions. Every user-triggered\n * navigation event resolves to exactly one of these verbs. The source zone's\n * `transitions` map determines which verb fires for each operation.\n *\n * Four zone-level transitions: `push`, `replace`, `split`, `overlay`\n * Two cross-context transitions: `inplace` (element-level), `promote` (escape to primary)\n *\n * `push` behavior depends on the zone's `contentModel`:\n * - In `single` zones: stack-based (new content on top, back pops)\n * - In `tabbed` zones: opens a new tab (or activates existing for same resource)\n *\n * @wildo_source:part:start saas.models.navigation.transition-vocabulary facet:layer:shared facet:family:navigation-config\n */\nexport enum NavigationTransition {\n /**\n * Content added to the zone's stack (single) or as a new tab (tabbed).\n * Back navigation pops the stack or switches to the previous tab.\n * URL adds a new path segment.\n */\n PUSH = 'push',\n /**\n * Content replaces the current content in the zone. No stack entry — the previous\n * content is gone from the zone's state (but remains in browser history).\n * URL replaces the current segment.\n */\n REPLACE = 'replace',\n /**\n * Content opens in an adjacent zone (secondary or companion).\n * Creates a side-by-side layout. The source zone's content remains visible.\n * Back navigation un-splits (closes the adjacent zone).\n * URL adds a split segment.\n */\n SPLIT = 'split',\n /**\n * Content opens in a floating layer above the entire layout (dialog, sheet, or drawer).\n * The underlying layout remains visible but non-interactive.\n * Back navigation or Escape dismisses the overlay.\n * URL adds an overlay param/hash.\n */\n OVERLAY = 'overlay',\n /**\n * Element-level transformation within the current view. A specific item in a\n * list/section transforms from one mode to another (read → edit); a CREATE\n * materializes a new element beside the existing ones. The parent view stays,\n * the zone stack is unchanged, and surrounding items remain visible.\n *\n * Fundamentally different from `replace` (which swaps the entire zone content).\n * `inplace` operates at the element level, not the zone level.\n *\n * No lifecycle modifiers (`persistent`/`ephemeral`) are valid on `inplace`.\n * No appearance to configure — the element transforms within its existing slot.\n *\n * **It is the one transition that does not place content in a zone**, which is\n * why the controller hands it to the element-level host\n * (`InPlaceOperationContext`) instead of resolving a target zone for it. That\n * host is provided by the COLLECTION the element belongs to, so a transition\n * resolving to `inplace` on a surface with no collection above it — a detail\n * page, a breadcrumb, a picker — degrades to an OVERLAY.\n *\n * **It is TRANSIENT: no URL, and a reload returns the view to rest.** Earlier\n * revisions of this comment promised a query param (`?editing=<childId>` /\n * `?creating=<resourceType>`) and none was ever written. It is not written now\n * either, and that is a decision rather than an omission: an inline row-edit is\n * a momentary state of a listing, not a place — no comparable admin framework\n * deep-links one, and anything that should survive a reload or a back button\n * wants `push`. `ResourceOperationActionPresentation.INLINE`, the per-operation\n * tier that selects the same host, is transient for the same reason.\n *\n * @example\n * // Click \"edit\" on a child in parent's inline section → item transforms to edit form\n * transitions: { [CoreResourceOperation.UPDATE]: NavigationTransition.INPLACE }\n *\n * // Click \"add\" in a relationship section → create form appears inline in the list\n * transitions: { [CoreResourceOperation.CREATE]: NavigationTransition.INPLACE }\n */\n INPLACE = 'inplace',\n /**\n * Escape the current context and open content at primary scope.\n * Abandons the current context: overlays close, companion/secondary dismiss.\n * The promoted content becomes the primary zone's top content.\n *\n * Use case: a link within an overlay should open as a full primary view,\n * or a nested detail in a companion zone should \"pop out\" to primary.\n *\n * Fundamentally different from `push` (which stays in the current zone) and\n * from `replace` (which replaces content within the same zone). `promote`\n * crosses zones and always targets primary.\n *\n * No lifecycle modifiers (`persistent`/`ephemeral`) are valid on `promote`.\n * No appearance to configure — content fills primary (same as push/replace).\n *\n * URL serialization: full URL change (promoted resource becomes the primary route).\n *\n * @example\n * // From an overlay, a link should open as primary (close overlay, show in primary)\n * transitions: { [CoreResourceOperation.READ]: NavigationTransition.PROMOTE }\n */\n PROMOTE = 'promote',\n}\n/** @wildo_source:part:end saas.models.navigation.transition-vocabulary */\n\n/**\n * Named layout zones — configurable structural areas WHERE content lives.\n *\n * Zones serve four purposes:\n * 1. **Structural** — which physical areas exist in the layout (declared in config)\n * 2. **Source context** — the same operation resolves differently FROM primary vs FROM secondary\n * 3. **Responsive** — each zone carries its own collapse behavior per viewport\n * 4. **Content model** — each zone independently manages single-stack or tabbed content\n *\n * Note: `overlay` is NOT a named zone — it's an implicit layer always available.\n * Overlay is a runtime destination, not a configurable zone. See `NavigationZone`\n * in the frontend runtime types for the full set including overlay.\n *\n * @wildo_source:part:start saas.models.navigation.surface-vocabulary facet:layer:shared facet:family:navigation-config\n */\nexport enum NavigationZoneName {\n /** Main content area. Lists, root-level reads, primary workspace. Always exists. */\n PRIMARY = 'primary',\n /**\n * First adjacent zone. Detail content in list-detail patterns.\n * Only exists if declared in config. Appears when a `split` transition targets it.\n * Typical use: showing item details alongside a list.\n */\n SECONDARY = 'secondary',\n /**\n * Persistent supplementary content. Reference panels, docs, notes, threads.\n * Only exists if declared in config. Usually hidden by default (`defaultVisible: false`).\n * Activated by `split` with `persistent: true` or explicit user toggle.\n * Typical use: Slack thread panel, VS Code terminal, documentation sidebar.\n */\n COMPANION = 'companion',\n}\n\n/**\n * How a zone manages multiple items. Orthogonal to transitions.\n *\n * The transition says \"content arrives\" — the content model says\n * \"how does the zone accommodate it.\" Any zone can use any content model,\n * regardless of which transitions it supports.\n */\nexport enum NavigationZoneContentModel {\n /**\n * Navigation stack: new content pushes on top, previous preserved underneath.\n * Only one item visible at a time. Back navigation pops the stack.\n * `replace` replaces the top without adding to the stack.\n * This is the default for all zones.\n */\n SINGLE = 'single',\n /**\n * Parallel tabs: `push` creates a new tab (or activates existing for the same resource).\n * Tab bar is visible, showing all open tabs. No depth stack within tabs.\n * `replace` replaces the active tab's content. Close is an explicit action (not back).\n * When no tabs remain, `onEmpty` behavior applies.\n */\n TABBED = 'tabbed',\n}\n\n/**\n * Responsive collapse behavior when viewport shrinks below a zone's breakpoint.\n *\n * Only applies to secondary and companion zones. Primary never collapses.\n * When viewport grows back past the breakpoint, collapsed content migrates\n * back to its original zone (content is preserved).\n */\nexport enum ResponsiveCollapseMode {\n /**\n * Zone hides. Its content joins primary's navigation stack.\n * The user sees the content in-context within primary.\n * Back navigation pops back to primary's previous content.\n */\n PUSH = 'push',\n /**\n * Zone hides. Its content opens as an overlay on top of primary.\n * The user sees the content as a floating sheet/dialog.\n * Dismiss returns to the underlying primary content.\n */\n OVERLAY = 'overlay',\n}\n/** @wildo_source:part:end saas.models.navigation.surface-vocabulary */\n\n/**\n * @wildo_source:part:start saas.models.navigation.zone-declaration facet:layer:shared facet:family:navigation-config\n *\n * What happens when a zone's last content is dismissed.\n * Only meaningful for secondary and companion zones (primary never empties,\n * overlay auto-dismisses by definition).\n */\nexport enum ZoneEmptyBehavior {\n /**\n * Zone hides, adjacent zones expand to fill the space.\n * Example: closing the last detail → layout returns to list-only.\n * This is the default for all non-primary zones.\n */\n COLLAPSE = 'collapse',\n /**\n * Zone stays visible with an empty-state placeholder.\n * Example: \"Select an item to view details\" message. Keeps layout stable.\n * Useful when the user frequently toggles between items.\n */\n EMPTY_STATE = 'emptyState',\n}\n/** @wildo_source:part:end saas.models.navigation.zone-declaration */\n\n/**\n * @wildo_source:part:start saas.models.navigation.surface-vocabulary facet:layer:shared facet:family:navigation-config\n *\n * Visual presentation for overlay transitions.\n * Determines how floating content renders above the layout.\n */\nexport enum OverlayAppearance {\n /**\n * Centered modal dialog with backdrop.\n * Best for focused tasks: create forms, confirmations, destructive actions.\n * Blocks underlying content visually. Escape or backdrop click dismisses.\n */\n DIALOG = 'dialog',\n /**\n * Side or bottom drawer panel that slides in from an edge.\n * Best for contextual content that benefits from seeing the underlying layout.\n * Less disruptive than dialog. Common for detail views on mobile.\n */\n SHEET = 'sheet',\n /**\n * Vaul-backed mobile drawer.\n * Use when the navigation resolver should choose a drawer directly rather\n * than relying on a dialog appearance plus mobileShape policy.\n */\n DRAWER = 'drawer',\n}\n\n/**\n * Visual presentation for split transitions.\n * Determines how adjacent zone content renders alongside the source zone.\n */\nexport enum SplitAppearance {\n /**\n * Standard vertical side panel.\n * Content appears beside the source zone with a resizable divider.\n * Most common for list-detail patterns.\n */\n PANEL = 'panel',\n /**\n * Horizontal drawer (bottom panel).\n * Content appears below the source zone.\n * Used for companion panels like terminals, output logs, reference docs.\n */\n DRAWER = 'drawer',\n}\n/** @wildo_source:part:end saas.models.navigation.surface-vocabulary */\n\n// ════════════════════════════════════════════════════════════════\n// ViewportDiscriminated — Generic responsive override pattern\n// ════════════════════════════════════════════════════════════════\n\n/**\n * A value that is either a plain `T` (applies at all viewports) or a\n * viewport-keyed partial record for per-breakpoint control.\n *\n * This pattern is used throughout the navigation config for responsive properties:\n * `responsiveCollapse`, `appearance`, `contentSectionConfig`, `transition`.\n *\n * @example\n * // Plain value — same everywhere\n * responsiveCollapse: ResponsiveCollapseMode.PUSH\n *\n * // Viewport-discriminated — different per breakpoint\n * responsiveCollapse: { [ViewportBreakpoint.VERT_TABLET]: ResponsiveCollapseMode.PUSH, [ViewportBreakpoint.MOBILE]: ResponsiveCollapseMode.OVERLAY }\n *\n * // Overlay appearance — sheet on tablet, drawer on mobile\n * overlay: { [ViewportBreakpoint.VERT_TABLET]: OverlayAppearance.SHEET, [ViewportBreakpoint.MOBILE]: OverlayAppearance.DRAWER }\n */\nexport type ViewportDiscriminated<T> = T | Partial<Record<ViewportBreakpoint, T>>;\n\n/**\n * Zod schema factory for `ViewportDiscriminated<T>`.\n *\n * Produces a union: the plain inner schema OR a record keyed by `ViewportBreakpoint`\n * with inner schema values. The record must have at least one key.\n *\n * @param innerSchema - Zod schema for the value type at each breakpoint.\n */\nexport function viewportDiscriminatedSchema<T extends z.ZodType>(innerSchema: T) {\n return z.union([\n innerSchema,\n z.partialRecord(z.enum(ViewportBreakpoint), innerSchema).refine(\n (obj) => Object.keys(obj).length > 0,\n { message: 'Viewport-discriminated object must have at least one breakpoint key' },\n ),\n ]);\n}\n\n\n// ════════════════════════════════════════════════════════════════\n// Transition Config\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Extended transition with lifecycle modifiers.\n *\n * Most transitions are simple verbs (just the enum value). The object form\n * adds lifecycle semantics for two specific patterns:\n *\n * - **Companion pattern**: `{ transition: NavigationTransition.SPLIT, persistent: true }`\n * The split zone persists when the source zone's content changes.\n * Without `persistent`, a split zone would clear when primary navigates away.\n *\n * - **Inspect pattern**: `{ transition: NavigationTransition.OVERLAY, ephemeral: true }`\n * The overlay auto-closes when the source zone's stack changes.\n * Without `ephemeral`, overlays stay open until explicitly dismissed.\n *\n * Semantic constraints (enforced by `.refine()`):\n * - `persistent` is only valid on `split` transitions\n * - `ephemeral` is only valid on `overlay` transitions\n * - `persistent` and `ephemeral` are mutually exclusive\n * - `inplace` and `promote` do not accept any modifier (they are always simple verbs)\n */\nexport const TransitionObjectSchema = z.object({\n /** The transition verb. */\n transition: z.enum(NavigationTransition),\n /**\n * When `true`, the split zone persists when the source zone navigates away.\n * Only valid on `split` transitions. Targets the companion zone specifically\n * (rather than the default adjacent zone resolution).\n *\n * Example: Slack thread panel stays open when switching channels.\n */\n persistent: z.boolean().optional(),\n /**\n * When `true`, the overlay auto-closes when the source zone's stack changes.\n * Only valid on `overlay` transitions.\n *\n * Example: Quick-inspect preview that dismisses when the user clicks another item.\n */\n ephemeral: z.boolean().optional(),\n}).refine(\n (obj) => {\n if (obj.persistent && obj.transition !== NavigationTransition.SPLIT) return false;\n if (obj.ephemeral && obj.transition !== NavigationTransition.OVERLAY) return false;\n if (obj.persistent && obj.ephemeral) return false;\n return true;\n },\n { message: 'persistent is only valid on split; ephemeral is only valid on overlay; they are mutually exclusive' },\n);\nexport type TransitionObject = z.infer<typeof TransitionObjectSchema>;\n\n/**\n * A transition configuration: either a simple verb string or an object with modifiers.\n *\n * @example\n * // Simple verb\n * transitions: { read: NavigationTransition.SPLIT, create: NavigationTransition.OVERLAY }\n *\n * // Object with lifecycle modifier\n * transitions: { read: { transition: NavigationTransition.SPLIT, persistent: true } }\n */\nexport const TransitionConfigSchema = z.union([\n z.enum(NavigationTransition),\n TransitionObjectSchema,\n]);\nexport type TransitionConfig = z.infer<typeof TransitionConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Zone Configuration\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Operation → transition mapping for a zone.\n *\n * Partial record — only operations that the zone handles need entries.\n * Missing operations fall back to the framework's hardcoded defaults.\n *\n * Keys are `CoreResourceOperation` values such as `read`, `list`, `create`,\n * `update`, `delete`, and `search`.\n *\n * @example\n * transitions: {\n * read: NavigationTransition.SPLIT, // click item → split to secondary\n * list: NavigationTransition.REPLACE, // \"View all\" → replace primary\n * create: NavigationTransition.OVERLAY, // new item → dialog\n * update: NavigationTransition.INPLACE, // edit → transform element inline\n * delete: NavigationTransition.OVERLAY, // confirm → dialog\n * search: NavigationTransition.PUSH, // advanced search → full-surface route\n * }\n *\n * // From an overlay, promote a link to primary view\n * transitions: {\n * read: NavigationTransition.PROMOTE, // link in overlay → escape to primary\n * }\n */\n/** Partial record — only operations that the zone handles need entries. Missing operations fall back to framework defaults. */\nexport const ZoneTransitionsSchema = z.partialRecord(\n z.enum(CoreResourceOperation),\n TransitionConfigSchema,\n) as unknown as z.ZodType<Partial<Record<CoreResourceOperation, TransitionConfig>>>;\nexport type ZoneTransitions = Partial<Record<CoreResourceOperation, TransitionConfig>>;\n\n/**\n * Transition → visual appearance for a zone. Values are viewport-discriminated.\n *\n * Only `split` and `overlay` transitions have meaningful appearance choices.\n * `push`, `replace`, `inplace`, and `promote` have no appearance to configure:\n * - `push`/`replace` fill the zone\n * - `inplace` transforms an element within the current view\n * - `promote` fills primary (same as push/replace)\n *\n * @example\n * appearance: {\n * split: SplitAppearance.PANEL, // always side panel\n * overlay: { [ViewportBreakpoint.VERT_TABLET]: OverlayAppearance.SHEET, [ViewportBreakpoint.MOBILE]: OverlayAppearance.DRAWER }, // sheet on tablet, drawer on mobile\n * }\n */\nexport const ZoneAppearanceSchema = z.object({\n /** How split content renders. Default: `SplitAppearance.PANEL` (vertical side panel). */\n split: viewportDiscriminatedSchema(z.enum(SplitAppearance)).optional(),\n /** How overlay content renders. Default: `OverlayAppearance.DIALOG` (centered modal). */\n overlay: viewportDiscriminatedSchema(z.enum(OverlayAppearance)).optional(),\n});\nexport type ZoneAppearance = z.infer<typeof ZoneAppearanceSchema>;\n\n/**\n * @wildo_source:part:start saas.models.navigation.zone-declaration facet:layer:shared facet:family:navigation-config\n *\n * How much of its zone a DESTINATION's content occupies.\n *\n * The primary zone caps and centres its content at `var(--content-max-width, 80rem)` and gives it no\n * definite-height ancestor. That is correct for almost everything a zone hosts — a form, a list, a\n * settings page stretched across a 2560px monitor is unreadable — and wrong for content whose whole\n * value is the space it occupies. Until this enum existed there was no way to tell the two apart, so\n * a canvas had to hand-roll a viewport fraction (`h-[70vh]`), which sizes against the WINDOW rather\n * than the container and therefore ignores whatever chrome sits above it.\n *\n * Declared per DESTINATION rather than per zone: the same primary zone hosts a list that wants the\n * cap, a detail page that caps itself, and a graph that wants neither.\n *\n * Width and height are separable on purpose. A wide data table wants the cap gone and its natural\n * height; collapsing both into one boolean would merge two meanings, and two independent booleans\n * would make \"full height, still capped at 80rem\" representable — a combination nothing wants and\n * someone would eventually author by accident.\n */\n\n/**\n * Full zone configuration.\n *\n * Each declared zone in the layout owns its complete behavior:\n * which transition fires for each operation, how content appears,\n * and how the zone responds to viewport changes.\n *\n * Note: `minWidth`, `maxWidth`, `defaultVisible`, `onEmpty`,\n * and `responsiveCollapse` are only meaningful for secondary and companion zones.\n * Primary never collapses, never empties, and takes remaining space.\n * Setting these on primary has no effect.\n */\nexport const ZoneConfigSchema = z.object({\n /**\n * How this zone manages multiple items.\n * - `NavigationZoneContentModel.SINGLE` (default): stack-based navigation. One item visible, back pops.\n * - `NavigationZoneContentModel.TABBED`: parallel tabs. Tab bar visible, multiple items accessible.\n * @default NavigationZoneContentModel.SINGLE\n */\n contentModel: z.enum(NavigationZoneContentModel).default(NavigationZoneContentModel.SINGLE),\n\n /** Operation → transition mapping. Defines what happens for each user action in this zone. */\n transitions: ZoneTransitionsSchema,\n\n /** Transition → visual appearance. Only split and overlay have appearance choices. */\n appearance: ZoneAppearanceSchema.optional(),\n\n /**\n * Minimum pixel width when resizing. Constrains how far this side of the\n * split divider can be dragged. Only meaningful for secondary and companion zones.\n * Works in conjunction with `SplitConfigSchema.resizable`.\n */\n minWidth: z.number().positive().optional(),\n\n /**\n * Maximum pixel width when resizing. Constrains how far this side of the\n * split divider can be dragged. Only meaningful for secondary and companion zones.\n * Works in conjunction with `SplitConfigSchema.resizable`.\n */\n maxWidth: z.number().positive().optional(),\n\n /**\n * Whether this zone is visible on first render (before any transition targets it).\n * - Primary: always visible (this field is ignored).\n * - Secondary: defaults to `true` when `split.autoSplit` is `true`, `false` otherwise.\n * - Companion: defaults to `false` (hidden until a `split` transition targets it or user toggles).\n */\n defaultVisible: z.boolean().optional(),\n\n /**\n * What happens when this zone's last content is dismissed (stack empty, last tab closed).\n * - `ZoneEmptyBehavior.COLLAPSE` (default): zone hides, adjacent zones expand to fill.\n * - `ZoneEmptyBehavior.EMPTY_STATE`: zone stays visible with placeholder (\"Select an item to view details\").\n * Only meaningful for secondary and companion zones. Primary never empties.\n */\n onEmpty: z.enum(ZoneEmptyBehavior).optional(),\n\n /**\n * Responsive collapse rules: what happens when viewport shrinks below the zone's breakpoint.\n * Accepts a plain `ResponsiveCollapseMode` (all breakpoints) or viewport-discriminated object.\n * Only meaningful for secondary and companion zones. Primary never collapses.\n *\n * When viewport grows back past the breakpoint, collapsed content migrates back\n * to its original zone (content is preserved).\n *\n * @example\n * responsiveCollapse: ResponsiveCollapseMode.PUSH // always push into primary\n * responsiveCollapse: { [ViewportBreakpoint.VERT_TABLET]: ResponsiveCollapseMode.PUSH, [ViewportBreakpoint.MOBILE]: ResponsiveCollapseMode.OVERLAY } // tablet: push, mobile: overlay\n */\n responsiveCollapse: viewportDiscriminatedSchema(z.enum(ResponsiveCollapseMode)).optional(),\n});\nexport type ZoneConfig = z.infer<typeof ZoneConfigSchema>;\n/** @wildo_source:part:end saas.models.navigation.zone-declaration */\n\n\n// ════════════════════════════════════════════════════════════════\n// App-Level & From-Overlay Configuration\n// ════════════════════════════════════════════════════════════════\n\n/**\n * App-level navigation configuration: from OUTSIDE the zone system.\n *\n * Covers navigation triggered by sidebar clicks, command palette selections,\n * hotkey shortcuts, toast actions, and notification clicks.\n *\n * App-level navigation causes a **layout reset**: primary content is replaced,\n * secondary and companion zones are cleared. This is fundamentally different\n * from zone-level navigation where the source zone's content persists.\n *\n * @example\n * appLevel: {\n * transitions: {\n * list: NavigationTransition.REPLACE, // sidebar \"Projects\" → replace primary, clear others\n * read: NavigationTransition.REPLACE, // command palette \"Go to X\" → replace primary\n * create: NavigationTransition.OVERLAY, // quick action \"New X\" → dialog\n * search: NavigationTransition.REPLACE, // command/menu search surface → replace primary\n * },\n * appearance: { overlay: OverlayAppearance.DIALOG },\n * }\n */\nexport const AppLevelConfigSchema = z.object({\n /** Operation → transition mapping for app-level navigation. */\n transitions: ZoneTransitionsSchema,\n /** Appearance overrides for app-level transitions. */\n appearance: ZoneAppearanceSchema.optional(),\n});\nexport type AppLevelConfig = z.infer<typeof AppLevelConfigSchema>;\n\n/**\n * Navigation from within an overlay (dialog, sheet, or drawer).\n *\n * When already in an overlay, transitions behave differently to avoid\n * nesting overlays. Typically all operations `push` within the overlay's\n * own stack instead of opening new overlays.\n *\n * No appearance config — the content is already inside an overlay.\n *\n * @example\n * fromOverlay: {\n * transitions: {\n * read: NavigationTransition.PUSH, // push within overlay — don't nest modals\n * list: NavigationTransition.PUSH,\n * create: NavigationTransition.PUSH,\n * search: NavigationTransition.PUSH,\n * },\n * }\n */\nexport const FromOverlayConfigSchema = z.object({\n /** Operation → transition mapping when navigating from within an overlay. */\n transitions: ZoneTransitionsSchema,\n});\nexport type FromOverlayConfig = z.infer<typeof FromOverlayConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Split Geometry\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Companion-specific split geometry.\n * Controls how the companion zone is sized and positioned relative to the main content area.\n */\nexport const CompanionSplitConfigSchema = z.object({\n /**\n * Main-area-to-companion size ratio.\n * @example [70, 30] — companion takes 30% of available space\n * @default [70, 30]\n */\n ratio: z.tuple([z.number(), z.number()]).default([70, 30]),\n /**\n * How the companion is positioned relative to the main area.\n * - `DisplayDirection.VERTICAL`: companion on the side (left/right)\n * - `DisplayDirection.HORIZONTAL`: companion below (bottom panel, e.g. VS Code terminal)\n * @default DisplayDirection.VERTICAL\n */\n orientation: z.enum(DisplayDirection).default(DisplayDirection.VERTICAL),\n /**\n * Whether the companion split boundary is user-draggable.\n * When `true`, a draggable divider appears between the main area and the companion zone.\n * Per-side drag constraints use `ZoneConfig.minWidth`/`maxWidth` on the companion zone.\n * @default false\n */\n resizable: z.boolean().default(false),\n});\nexport type CompanionSplitConfig = z.infer<typeof CompanionSplitConfigSchema>;\n\n/**\n * Top-level split geometry — describes the physical relationship between zones.\n *\n * This is a top-level config (not per-zone) because it describes the INTER-zone\n * layout: how much space each zone gets, and the split direction.\n *\n * @example\n * split: {\n * autoSplit: true, // LIST pre-splits when primary.read = NavigationTransition.SPLIT\n * ratio: [40, 60], // 40% primary, 60% secondary\n * orientation: DisplayDirection.VERTICAL, // side-by-side\n * resizable: true, // divider is draggable\n * companion: {\n * ratio: [70, 30], // companion takes 30%\n * orientation: DisplayDirection.HORIZONTAL, // bottom panel\n * resizable: true,\n * },\n * }\n */\nexport const SplitConfigSchema = z.object({\n /**\n * Whether the primary zone pre-splits on initial load.\n * When `true` and `primary.transitions.read === NavigationTransition.SPLIT`, the secondary zone\n * appears immediately with the first list item selected (or empty state).\n * @default false\n */\n autoSplit: z.boolean().default(false),\n /**\n * Primary-to-secondary width/height ratio. Defines the initial proportion.\n * When `resizable` is `true`, user drag overrides this (persisted to localStorage).\n * @example [40, 60] — primary gets 40%, secondary gets 60%\n * @default [50, 50]\n */\n ratio: z.tuple([z.number(), z.number()]).default([50, 50]),\n /**\n * Split direction between primary and secondary.\n * - `DisplayDirection.VERTICAL` (default): side-by-side (most common for list-detail)\n * - `DisplayDirection.HORIZONTAL`: top-bottom (less common)\n * @default DisplayDirection.VERTICAL\n */\n orientation: z.enum(DisplayDirection).default(DisplayDirection.VERTICAL),\n /**\n * Whether the primary↔secondary split boundary is user-draggable.\n * When `true`, a draggable divider appears between primary and secondary zones.\n * Per-side drag constraints use `ZoneConfig.minWidth`/`maxWidth` on each zone.\n * @default false\n */\n resizable: z.boolean().default(false),\n /** Companion zone split geometry. Only relevant if companion zone is declared. */\n companion: CompanionSplitConfigSchema.optional(),\n});\nexport type SplitConfig = z.infer<typeof SplitConfigSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Viewport Override Block\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Global viewport override — applies across ALL zones at a given breakpoint.\n *\n * Use for sweeping mobile/tablet overrides that affect the entire app.\n * For per-zone responsive behavior, use `ZoneConfig.responsiveCollapse` and\n * viewport-discriminated appearance values instead.\n *\n * @example\n * // In NavigationLayout:\n * [ViewportBreakpoint.MOBILE]: {\n * transitions: {\n * read: NavigationTransition.PUSH, // mobile: no splits, everything pushes\n * create: { transition: NavigationTransition.OVERLAY, ephemeral: true }, // mobile: create opens as an inspect-style ephemeral overlay\n * },\n * }\n */\nexport const ViewportOverrideSchema = z.object({\n /** Operation → transition overrides at this viewport. Merged over zone defaults. */\n transitions: (z.partialRecord(\n z.enum(CoreResourceOperation),\n TransitionConfigSchema,\n ) as unknown as z.ZodType<Partial<Record<CoreResourceOperation, TransitionConfig>>>).optional(),\n});\nexport type ViewportOverride = z.infer<typeof ViewportOverrideSchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// NavigationLayout — Top-Level App Configuration\n// ════════════════════════════════════════════════════════════════\n\n/**\n * @wildo_source:part:start saas.models.navigation.layout facet:layer:shared facet:family:navigation-config\n *\n * The complete navigation layout configuration for an application.\n *\n * This is the single configuration object that defines the entire navigation\n * behavior. It specifies which zones exist, how each zone handles operations,\n * how zones are sized relative to each other, and global overrides.\n *\n * Resolution order (from highest to lowest priority):\n * 1. Per-operation frontend override (`operation.operationFrontendConfig.navigationOverrides`)\n * 2. Per-relationship override (`display.inParentNavigation.transition`)\n * 3. Global viewport override (`ViewportBreakpoint.MOBILE` / `ViewportBreakpoint.VERT_TABLET` blocks)\n * 4. Source context `transitions[operation]` + `appearance[transition]`\n * 5. Framework hardcoded fallback\n *\n * @example\n * const layout: NavigationLayout = {\n * zones: {\n * primary: { transitions: { read: NavigationTransition.SPLIT, create: NavigationTransition.OVERLAY, update: NavigationTransition.INPLACE } },\n * secondary: { transitions: { read: NavigationTransition.PUSH }, onEmpty: ZoneEmptyBehavior.COLLAPSE },\n * },\n * appLevel: { transitions: { list: NavigationTransition.REPLACE, create: NavigationTransition.OVERLAY } },\n * fromOverlay: { transitions: { read: NavigationTransition.PROMOTE } },\n * split: { autoSplit: true, ratio: [40, 60] },\n * maxDepth: 2,\n * };\n */\n/**\n * WHICH LAYER OWNS THE BACK AFFORDANCE.\n *\n * Two layers can render a back control for the same navigation stack: the app\n * SHELL (the menubar's hosted navigation control) and the current SURFACE (a\n * resource/view header, beside the icon + title + breadcrumb). Both mount the\n * same component, so without an explicit owner an app that hosts the shell\n * control gets TWO back arrows on every pushed page — one floating in the bar\n * with no context, one attached to the thing it goes back from.\n *\n * This is deliberately a POLICY rather than a per-surface flag: \"who owns this\n * chrome\" is one application-wide decision, and expressing it as an owner makes\n * the duplication unrepresentable instead of asking every surface to remember\n * to suppress itself.\n */\nexport enum NavigationBackAffordanceOwner {\n /**\n * The current surface's own header owns it — the back control sits beside the\n * surface's icon/title/breadcrumb, so it reads as \"back from THIS\". The shell\n * control renders nothing even when hosted. Default: it keeps the affordance\n * attached to its context, and matches the shell staying free of a lone,\n * context-free arrow.\n */\n SURFACE = 'surface',\n /**\n * The app shell's navigation control owns it — one fixed back control in the\n * menubar (the Notion-style top-left placement). Surface headers render none.\n * Requires the shell to actually host `NAVIGATION_CONTROL`; if it does not,\n * the application has no back affordance at all.\n */\n SHELL = 'shell',\n /**\n * BOTH layers render one. An explicit opt-in for layouts where the two\n * genuinely differ — e.g. a multi-zone shell whose bar control pops the\n * focused zone while each zone's header pops its own stack. Chosen\n * deliberately; never a default.\n */\n BOTH = 'both',\n}\n\n/** Default owner when a layout declares none — see {@link NavigationBackAffordanceOwner.SURFACE}. */\nexport const DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER: NavigationBackAffordanceOwner = NavigationBackAffordanceOwner.SURFACE;\n\n/**\n * Does `owner` grant the SHELL (menubar navigation control) a back affordance?\n * Shared by both render sites so the two can never disagree about one policy.\n */\nexport function navigationBackAffordanceAdmitsShell(owner: NavigationBackAffordanceOwner | undefined): boolean {\n const resolved = owner ?? DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER;\n return resolved === NavigationBackAffordanceOwner.SHELL || resolved === NavigationBackAffordanceOwner.BOTH;\n}\n\n/** Does `owner` grant the current SURFACE's header a back affordance? */\nexport function navigationBackAffordanceAdmitsSurface(owner: NavigationBackAffordanceOwner | undefined): boolean {\n const resolved = owner ?? DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER;\n return resolved === NavigationBackAffordanceOwner.SURFACE || resolved === NavigationBackAffordanceOwner.BOTH;\n}\n\nexport const NavigationLayoutSchema = z.object({\n /**\n * Zone declarations. Primary is required, secondary and companion are optional.\n * Undeclared zones cannot be targeted by transitions — `NavigationTransition.SPLIT` in a layout\n * without secondary will escalate to overlay.\n */\n zones: z.object({\n /** Primary zone — always exists. Main content area (lists, root reads). */\n primary: ZoneConfigSchema,\n /** Secondary zone — optional. First adjacent zone for detail content. */\n secondary: ZoneConfigSchema.optional(),\n /** Companion zone — optional. Persistent supplementary content. */\n companion: ZoneConfigSchema.optional(),\n }),\n /**\n * How navigation from the app shell (sidebar, command palette, hotkey) behaves.\n * Causes a layout reset when targeting primary.\n */\n appLevel: AppLevelConfigSchema.optional(),\n /**\n * How navigation within an overlay behaves.\n * Prevents overlay nesting — typically everything pushes within the overlay stack.\n */\n fromOverlay: FromOverlayConfigSchema.optional(),\n /** Split geometry: ratios, orientations, autoSplit. */\n split: SplitConfigSchema.optional(),\n /**\n * Maximum push depth before the framework escalates to overlay.\n * When a zone's stack depth reaches `maxDepth`, the next `push` opens an overlay instead.\n * Prevents infinitely deep navigation stacks. Per-relationship `maxDepth` can override.\n */\n maxDepth: z.number().int().positive().optional(),\n\n /**\n * Which layer renders the back control — see {@link NavigationBackAffordanceOwner}.\n * Omitted means {@link DEFAULT_NAVIGATION_BACK_AFFORDANCE_OWNER} (the surface's\n * own header), which is what keeps a shell that hosts `NAVIGATION_CONTROL`\n * from rendering a second, context-free back arrow beside every page's own.\n */\n backAffordanceOwner: z.enum(NavigationBackAffordanceOwner).optional(),\n\n /**\n * Mobile viewport override — applies across all zones when viewport is `<md` (< 768px).\n * Use for sweeping mobile behavior changes (e.g., all splits become pushes).\n */\n [ViewportBreakpoint.MOBILE]: ViewportOverrideSchema.optional(),\n /**\n * Tablet viewport override — applies across all zones when viewport is `<lg` (768–1023px).\n * Use for tablet-specific behavior changes.\n */\n [ViewportBreakpoint.VERT_TABLET]: ViewportOverrideSchema.optional(),\n});\nexport type NavigationLayout = z.infer<typeof NavigationLayoutSchema>;\n/** @wildo_source:part:end saas.models.navigation.layout */\n\n// ════════════════════════════════════════════════════════════════\n// Per-Resource Operation Override\n// ════════════════════════════════════════════════════════════════\n\n// DELETED — NavigationOperationOverrideSchema and NavigationOperationOverride\n// Transferred to @wildo-ai/saas-frontend-lib (resources.frontend.schemas)\n"]}
@@ -172,6 +172,14 @@ export declare enum ErrorCustomMessageReference {
172
172
  CONSUMABLE_TOKEN_NOT_ACCEPTED_FOR_OPERATION = "consumable_token_not_accepted_for_operation",
173
173
  CONSUMABLE_TOKEN_RACE_CONDITION = "consumable_token_race_condition",
174
174
  CONSUMABLE_TOKEN_FILE_SHARING_DISABLED = "consumable_token_file_sharing_disabled",
175
+ /** An upload grant was presented on an upload route it was not minted for (other resource, field, operation kind, or row). */
176
+ FILE_UPLOAD_GRANT_TARGET_MISMATCH = "file_upload_grant_target_mismatch",
177
+ /** A grant was requested with a lifetime above the engine ceiling; refused, never clamped. */
178
+ FILE_UPLOAD_GRANT_DURATION_EXCEEDS_MAX = "file_upload_grant_duration_exceeds_max",
179
+ /** The caller's execution type may not mint a grant: a grant may not mint a grant, and an anonymous session has no subject to attribute the file to. */
180
+ FILE_UPLOAD_GRANT_MINTER_NOT_ELIGIBLE = "file_upload_grant_minter_not_eligible",
181
+ /** No upload grant matches the presented value (never says whether one existed). */
182
+ FILE_UPLOAD_GRANT_NOT_FOUND = "file_upload_grant_not_found",
175
183
  /** W7.3b: ADDITIVE policy requires x-consumable-token header alongside JWT/API-key auth. */
176
184
  ADDITIVE_TOKEN_REQUIRED = "additive_token_required",
177
185
  /** revocation-B1: requested one-off session `expiresIn` exceeds this user type's max-duration cap. */
@@ -510,7 +518,10 @@ export declare enum ErrorCustomMessageReference {
510
518
  /** File cannot move to the requested status from its current state. */
511
519
  FILE_INVALID_STATUS_TRANSITION = "file_invalid_status_transition",
512
520
  /** File must be in UPLOADED status before it can be linked to a resource. */
513
- FILE_NOT_IN_UPLOADED_STATUS = "file_not_in_uploaded_status",
521
+ /** The file's status is not one from which it may be linked (`FILE_LINKABLE_STATUSES`); the context carries the status and the admitted set. */
522
+ FILE_NOT_LINKABLE = "file_not_linkable",
523
+ /** The file's antivirus scan is still in flight; linking is refused until it lands `CLEAN`. Retryable — the file is not wrong, only not yet known to be safe. */
524
+ FILE_SCAN_IN_PROGRESS = "file_scan_in_progress",
514
525
  /** File is already linked to a different resource. */
515
526
  FILE_ALREADY_LINKED = "file_already_linked",
516
527
  /** File has already been deleted. */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.custom-message-ref.shared.definitions.d.ts","sourceRoot":"","sources":["../../../../src/errors/errors.custom-message-ref.shared.definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.custom-message-ref.shared.definitions.d.ts","sourceRoot":"","sources":["../../../../src/errors/errors.custom-message-ref.shared.definitions.ts"],"names":[],"mappings":"AAGA,oBAAY,2BAA2B;IACrC,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAG/B,qCAAqC,0CAA0C;IAC/E,+BAA+B,oCAAoC;IAEnE,+BAA+B,oCAAoC;IACnE,2CAA2C,gDAAgD;IAE3F,oCAAoC,yCAAyC;IAC7E,yCAAyC,8CAA8C;IACvF,sCAAsC,2CAA2C;IACjF,qCAAqC,0CAA0C;IAE/E,6BAA6B,kCAAkC;IAG/D,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,4BAA4B,iCAAiC;IAC7D,gCAAgC,qCAAqC;IACrE,wBAAwB,6BAA6B;IAErD,kCAAkC,uCAAuC;IACzE,sCAAsC,2CAA2C;IACjF,4BAA4B,iCAAiC;IAC7D,iCAAiC,sCAAsC;IACvE,mCAAmC,wCAAwC;IAC3E,uCAAuC,4CAA4C;IAEnF,uCAAuC,4CAA4C;IAEnF,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,6BAA6B,kCAAkC;IAE/D,uBAAuB,4BAA4B;IACnD,sBAAsB,2BAA2B;IACjD,2BAA2B,gCAAgC;IAE3D,sCAAsC,2CAA2C;IACjF,8BAA8B,mCAAmC;IACjE,gCAAgC,qCAAqC;IAErE,wCAAwC,6CAA6C;IACrF,sCAAsC,2CAA2C;IAEjF,gDAAgD,qDAAqD;IAErG,qCAAqC,0CAA0C;IAC/E,uCAAuC,4CAA4C;IAEnF,iCAAiC,sCAAsC;IAEvE,uCAAuC,4CAA4C;IACnF,sCAAsC,2CAA2C;IACjF,gCAAgC,qCAAqC;IAErE,gCAAgC,qCAAqC;IACrE,gCAAgC,qCAAqC;IACrE,4BAA4B,iCAAiC;IAC7D,mCAAmC,wCAAwC;IAE3E,kBAAkB,uBAAuB;IACzC,uBAAuB,4BAA4B;IACnD,2BAA2B,gCAAgC;IAC3D,wBAAwB,6BAA6B;IACrD,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAE7C,mBAAmB,wBAAwB;IAE3C,wDAAwD,6DAA6D;IACrH,iBAAiB,sBAAsB;IACvC,uBAAuB,4BAA4B;IACnD,2CAA2C,gDAAgD;IAC3F,6CAA6C,kDAAkD;IAC/F,iDAAiD,sDAAsD;IACvG,6BAA6B,kCAAkC;IAC/D,+BAA+B,oCAAoC;IACnE,qCAAqC,0CAA0C;IAE/E,8BAA8B,mCAAmC;IACjE,6BAA6B,kCAAkC;IAE/D,4BAA4B,iCAAiC;IAE7D,yCAAyC,8CAA8C;IAEvF,oCAAoC,yCAAyC;IAC7E,yCAAyC,8CAA8C;IACvF,wCAAwC,6CAA6C;IAErF,0BAA0B,+BAA+B;IACzD,0BAA0B,+BAA+B;IAEzD,+BAA+B,oCAAoC;IAEnE,6BAA6B,kCAAkC;IAC/D,8BAA8B,mCAAmC;IAEjE,kCAAkC,uCAAuC;IACzE,yCAAyC,8CAA8C;IACvF,uCAAuC,4CAA4C;IAGnF,8BAA8B,mCAAmC;IACjE,8BAA8B,mCAAmC;IACjE,6BAA6B,kCAAkC;IAC/D,2BAA2B,gCAAgC;IAC3D,4FAA4F;IAC5F,2BAA2B,gCAAgC;IAC3D,6BAA6B,kCAAkC;IAC/D,mCAAmC,wCAAwC;IAC3E,oHAAoH;IACpH,+BAA+B,oCAAoC;IACnE,mGAAmG;IACnG,iCAAiC,sCAAsC;IACvE,8BAA8B,mCAAmC;IACjE,wGAAwG;IACxG,gBAAgB,qBAAqB;IACrC,8GAA8G;IAC9G,qBAAqB,0BAA0B;IAE/C,8BAA8B,mCAAmC;IACjE,iCAAiC,sCAAsC;IAIvE,0CAA0C,+CAA+C;IAGzF,0CAA0C,+CAA+C;IACzF,+CAA+C,oDAAoD;IACnG,+CAA+C,oDAAoD;IAGnG,qCAAqC,0CAA0C;IAC/E,4CAA4C,iDAAiD;IAC7F,0CAA0C,+CAA+C;IACzF,yCAAyC,8CAA8C;IACvF,uCAAuC,4CAA4C;IACnF,0CAA0C,+CAA+C;IACzF,iCAAiC,sCAAsC;IACvE,4CAA4C,iDAAiD;IAG7F,yBAAyB,8BAA8B;IAGvD,6BAA6B,kCAAkC;IAC/D,4CAA4C,iDAAiD;IAC7F,kCAAkC,uCAAuC;IAGzE,mCAAmC,wCAAwC;IAC3E,gCAAgC,qCAAqC;IACrE,8BAA8B,mCAAmC;IAGjE,2BAA2B,gCAAgC;IAC3D,gBAAgB,qBAAqB;IAGrC,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,+BAA+B,oCAAoC;IAEnE,+GAA+G;IAC/G,oCAAoC,yCAAyC;IAG7E,uBAAuB,4BAA4B;IACnD,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,2BAA2B,gCAAgC;IAE3D,oBAAoB,yBAAyB;IAC7C,WAAW,gBAAgB;IAC3B,wBAAwB,6BAA6B;IACrD,iBAAiB,sBAAsB;IACvC,qBAAqB,0BAA0B;IAC/C,0BAA0B,+BAA+B;IACzD,4BAA4B,iCAAiC;IAC7D,aAAa,kBAAkB;IAC/B,qBAAqB,0BAA0B;IAC/C,aAAa,kBAAkB;IAE/B,+BAA+B,oCAAoC;IACnE,+BAA+B,oCAAoC;IACnE,0BAA0B,+BAA+B;IAEzD,4BAA4B,iCAAiC;IAC7D,6BAA6B,kCAAkC;IAC/D,uBAAuB,4BAA4B;IAGnD,qBAAqB,0BAA0B;IAC/C,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAG7C,0BAA0B,+BAA+B;IACzD,wBAAwB,6BAA6B;IACrD,iCAAiC,sCAAsC;IACvE,wBAAwB,6BAA6B;IACrD,8BAA8B,mCAAmC;IACjE,iCAAiC,sCAAsC;IACvE,2CAA2C,gDAAgD;IAC3F,+BAA+B,oCAAoC;IACnE,sCAAsC,2CAA2C;IACjF,8HAA8H;IAC9H,iCAAiC,sCAAsC;IACvE,8FAA8F;IAC9F,sCAAsC,2CAA2C;IACjF,wJAAwJ;IACxJ,qCAAqC,0CAA0C;IAC/E,oFAAoF;IACpF,2BAA2B,gCAAgC;IAC3D,4FAA4F;IAC5F,uBAAuB,4BAA4B;IACnD,sGAAsG;IACtG,oCAAoC,yCAAyC;IAG7E,sJAAsJ;IACtJ,kCAAkC,uCAAuC;IACzE,oJAAoJ;IACpJ,4CAA4C,iDAAiD;IAC7F;;;;;;;;;;;;;;OAcG;IACH,0BAA0B,+BAA+B;IACzD,wFAAwF;IACxF,kCAAkC,uCAAuC;IACzE,0HAA0H;IAC1H,uCAAuC,4CAA4C;IACnF,iGAAiG;IACjG,qBAAqB,0BAA0B;IAC/C,+FAA+F;IAC/F,4BAA4B,iCAAiC;IAC7D,oTAAoT;IACpT,uBAAuB,4BAA4B;IACnD,4DAA4D;IAC5D,8BAA8B,mCAAmC;IACjE,+FAA+F;IAC/F,mBAAmB,wBAAwB;IAC3C,uEAAuE;IACvE,8BAA8B,mCAAmC;IAGjE,wEAAwE;IACxE,oCAAoC,yCAAyC;IAC7E,kEAAkE;IAClE,kCAAkC,uCAAuC;IACzE,gFAAgF;IAChF,gCAAgC,qCAAqC;IACrE,mFAAmF;IACnF,uCAAuC,4CAA4C;IACnF,yFAAyF;IACzF,2BAA2B,gCAAgC;IAC3D,uDAAuD;IACvD,+BAA+B,oCAAoC;IACnE,iDAAiD;IACjD,8BAA8B,mCAAmC;IACjE,6EAA6E;IAC7E,+BAA+B,oCAAoC;IACnE,4DAA4D;IAC5D,qCAAqC,0CAA0C;IAC/E,mEAAmE;IACnE,8BAA8B,mCAAmC;IACjE;;;;;;OAMG;IACH,oCAAoC,yCAAyC;IAG7E,0EAA0E;IAC1E,4BAA4B,iCAAiC;IAC7D,sDAAsD;IACtD,gBAAgB,qBAAqB;IACrC,iEAAiE;IACjE,yBAAyB,8BAA8B;IACvD,6CAA6C;IAC7C,qBAAqB,0BAA0B;IAC/C,wEAAwE;IACxE,4BAA4B,iCAAiC;IAG7D,yCAAyC;IACzC,iBAAiB,sBAAsB;IACvC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,gCAAgC,qCAAqC;IACrE;;;;;;;;;;OAUG;IACH,+BAA+B,oCAAoC;IACnE;;;;;;OAMG;IACH,0BAA0B,+BAA+B;IACzD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,mCAAmC,wCAAwC;IAC3E;;;;;;;;;;;OAWG;IACH,6BAA6B,kCAAkC;IAC/D;;;;;;;;;OASG;IACH,wBAAwB,6BAA6B;IACrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB,4BAA4B;IACnD,+DAA+D;IAC/D,gCAAgC,qCAAqC;IAGrE,qDAAqD;IACrD,yBAAyB,8BAA8B;IAGvD,uBAAuB,4BAA4B;IACnD,yBAAyB,8BAA8B;IACvD,4BAA4B,iCAAiC;IAC7D,8BAA8B,mCAAmC;IACjE,8BAA8B,mCAAmC;IACjE,gCAAgC,qCAAqC;IACrE,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IACnD,4BAA4B,iCAAiC;IAC7D,0BAA0B,+BAA+B;IACzD,iCAAiC,sCAAsC;IACvE,0BAA0B,+BAA+B;IACzD,6BAA6B,kCAAkC;IAC/D,6BAA6B,kCAAkC;IAC/D,kCAAkC,uCAAuC;IACzE,2BAA2B,gCAAgC;IAC3D,4BAA4B,iCAAiC;IAC7D,6BAA6B,kCAAkC;IAC/D,yBAAyB,8BAA8B;IACvD,8BAA8B,mCAAmC;IACjE;;;;;;;;;;OAUG;IACH,8BAA8B,mCAAmC;IACjE,yBAAyB,8BAA8B;IACvD;;;;;;;;;;;OAWG;IACH,8BAA8B,mCAAmC;IAGjE,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,YAAY,iBAAiB;IAC7B,wBAAwB,6BAA6B;IACrD,iBAAiB,sBAAsB;IACvC,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,2BAA2B,gCAAgC;IAC3D,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,qBAAqB,0BAA0B;IAC/C,yBAAyB,8BAA8B;IACvD,2BAA2B,gCAAgC;IAC3D,0BAA0B,+BAA+B;IACzD,8BAA8B,mCAAmC;IACjE,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IACrC,yBAAyB,8BAA8B;IACvD,wHAAwH;IACxH,kBAAkB,uBAAuB;IAGzC,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,gCAAgC,qCAAqC;IACrE,+BAA+B,oCAAoC;IACnE,qCAAqC,0CAA0C;IAC/E,8BAA8B,mCAAmC;IACjE,oIAAoI;IACpI,yBAAyB,8BAA8B;IACvD,2JAA2J;IAC3J,4BAA4B,iCAAiC;IAC7D,4GAA4G;IAC5G,0BAA0B,+BAA+B;IACzD,yGAAyG;IACzG,sCAAsC,2CAA2C;IAGjF,iFAAiF;IACjF,0BAA0B,+BAA+B;IACzD,qEAAqE;IACrE,wBAAwB,6BAA6B;IACrD,8EAA8E;IAC9E,6BAA6B,kCAAkC;IAC/D,8DAA8D;IAC9D,oCAAoC,yCAAyC;IAC7E,4EAA4E;IAC5E,2BAA2B,gCAAgC;IAC3D,4FAA4F;IAC5F,wBAAwB,6BAA6B;IACrD,qFAAqF;IACrF,gCAAgC,qCAAqC;IACrE,kFAAkF;IAClF,iCAAiC,sCAAsC;IACvE,iEAAiE;IACjE,uBAAuB,4BAA4B;IACnD,0CAA0C;IAC1C,gBAAgB,qBAAqB;IACrC,2CAA2C;IAC3C,iBAAiB,sBAAsB;IACvC,yCAAyC;IACzC,eAAe,oBAAoB;IACnC,6CAA6C;IAC7C,kBAAkB,uBAAuB;IACzC,0CAA0C;IAC1C,gBAAgB,qBAAqB;IACrC,qEAAqE;IACrE,iCAAiC,sCAAsC;IAGvE,kHAAkH;IAClH,mCAAmC,wCAAwC;IAC3E,2EAA2E;IAC3E,wBAAwB,6BAA6B;IACrD,iEAAiE;IACjE,wBAAwB,6BAA6B;IAGrD,8FAA8F;IAC9F,2CAA2C,gDAAgD;IAC3F,uFAAuF;IACvF,0CAA0C,+CAA+C;IACzF,gEAAgE;IAChE,0BAA0B,+BAA+B;IACzD,mEAAmE;IACnE,yBAAyB,8BAA8B;IACvD,8EAA8E;IAC9E,wBAAwB,6BAA6B;IACrD,sEAAsE;IACtE,0BAA0B,+BAA+B;IACzD,kFAAkF;IAClF,2CAA2C,gDAAgD;IAC3F,6FAA6F;IAC7F,4BAA4B,iCAAiC;IAG7D,8DAA8D;IAC9D,cAAc,mBAAmB;IACjC,uEAAuE;IACvE,8BAA8B,mCAAmC;IACjE,6EAA6E;IAC7E,gJAAgJ;IAChJ,iBAAiB,sBAAsB;IACvC,iKAAiK;IACjK,qBAAqB,0BAA0B;IAC/C,sDAAsD;IACtD,mBAAmB,wBAAwB;IAC3C,qCAAqC;IACrC,oBAAoB,yBAAyB;IAC7C,8CAA8C;IAC9C,kBAAkB,uBAAuB;IACzC,+DAA+D;IAC/D,4BAA4B,iCAAiC;IAC7D,sEAAsE;IACtE,0BAA0B,+BAA+B;IACzD,uDAAuD;IACvD,yBAAyB,8BAA8B;IACvD,8CAA8C;IAC9C,0BAA0B,+BAA+B;IACzD,kDAAkD;IAClD,mBAAmB,wBAAwB;IAC3C,+EAA+E;IAC/E,mBAAmB,wBAAwB;IAC3C,6EAA6E;IAC7E,iCAAiC,sCAAsC;IACvE,wFAAwF;IACxF,0BAA0B,+BAA+B;IACzD,gGAAgG;IAChG,wBAAwB,6BAA6B;IACrD,oGAAoG;IACpG,4BAA4B,iCAAiC;IAC7D,4EAA4E;IAC5E,iCAAiC,sCAAsC;IACvE,kFAAkF;IAClF,sBAAsB,2BAA2B;IACjD,yGAAyG;IACzG,6BAA6B,kCAAkC;IAC/D,yEAAyE;IACzE,6BAA6B,kCAAkC;IAC/D,6EAA6E;IAC7E,4BAA4B,iCAAiC;IAC7D,kEAAkE;IAClE,qCAAqC,0CAA0C;IAC/E;;;;;;;;OAQG;IACH,2BAA2B,gCAAgC;IAC3D,4DAA4D;IAC5D,yBAAyB,8BAA8B;IACvD,gDAAgD;IAChD,0BAA0B,+BAA+B;IACzD,yEAAyE;IACzE,mCAAmC,wCAAwC;IAC3E,0DAA0D;IAC1D,wBAAwB,6BAA6B;IACrD,kFAAkF;IAClF,0BAA0B,+BAA+B;IACzD,qEAAqE;IACrE,4BAA4B,iCAAiC;IAE7D,mFAAmF;IACnF,mCAAmC,wCAAwC;CAC5E"}
@@ -187,6 +187,14 @@ export var ErrorCustomMessageReference;
187
187
  ErrorCustomMessageReference["CONSUMABLE_TOKEN_NOT_ACCEPTED_FOR_OPERATION"] = "consumable_token_not_accepted_for_operation";
188
188
  ErrorCustomMessageReference["CONSUMABLE_TOKEN_RACE_CONDITION"] = "consumable_token_race_condition";
189
189
  ErrorCustomMessageReference["CONSUMABLE_TOKEN_FILE_SHARING_DISABLED"] = "consumable_token_file_sharing_disabled";
190
+ /** An upload grant was presented on an upload route it was not minted for (other resource, field, operation kind, or row). */
191
+ ErrorCustomMessageReference["FILE_UPLOAD_GRANT_TARGET_MISMATCH"] = "file_upload_grant_target_mismatch";
192
+ /** A grant was requested with a lifetime above the engine ceiling; refused, never clamped. */
193
+ ErrorCustomMessageReference["FILE_UPLOAD_GRANT_DURATION_EXCEEDS_MAX"] = "file_upload_grant_duration_exceeds_max";
194
+ /** The caller's execution type may not mint a grant: a grant may not mint a grant, and an anonymous session has no subject to attribute the file to. */
195
+ ErrorCustomMessageReference["FILE_UPLOAD_GRANT_MINTER_NOT_ELIGIBLE"] = "file_upload_grant_minter_not_eligible";
196
+ /** No upload grant matches the presented value (never says whether one existed). */
197
+ ErrorCustomMessageReference["FILE_UPLOAD_GRANT_NOT_FOUND"] = "file_upload_grant_not_found";
190
198
  /** W7.3b: ADDITIVE policy requires x-consumable-token header alongside JWT/API-key auth. */
191
199
  ErrorCustomMessageReference["ADDITIVE_TOKEN_REQUIRED"] = "additive_token_required";
192
200
  /** revocation-B1: requested one-off session `expiresIn` exceeds this user type's max-duration cap. */
@@ -537,7 +545,10 @@ export var ErrorCustomMessageReference;
537
545
  /** File cannot move to the requested status from its current state. */
538
546
  ErrorCustomMessageReference["FILE_INVALID_STATUS_TRANSITION"] = "file_invalid_status_transition";
539
547
  /** File must be in UPLOADED status before it can be linked to a resource. */
540
- ErrorCustomMessageReference["FILE_NOT_IN_UPLOADED_STATUS"] = "file_not_in_uploaded_status";
548
+ /** The file's status is not one from which it may be linked (`FILE_LINKABLE_STATUSES`); the context carries the status and the admitted set. */
549
+ ErrorCustomMessageReference["FILE_NOT_LINKABLE"] = "file_not_linkable";
550
+ /** The file's antivirus scan is still in flight; linking is refused until it lands `CLEAN`. Retryable — the file is not wrong, only not yet known to be safe. */
551
+ ErrorCustomMessageReference["FILE_SCAN_IN_PROGRESS"] = "file_scan_in_progress";
541
552
  /** File is already linked to a different resource. */
542
553
  ErrorCustomMessageReference["FILE_ALREADY_LINKED"] = "file_already_linked";
543
554
  /** File has already been deleted. */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.custom-message-ref.shared.definitions.js","sourceRoot":"","sources":["../../../../src/errors/errors.custom-message-ref.shared.definitions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,2BAmpBX;AAnpBD,WAAY,2BAA2B;IACrC,kDAAmB,CAAA;IACnB,gDAAiB,CAAA;IACjB,kDAAmB,CAAA;IACnB,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,wDAAyB,CAAA;IACzB,sDAAuB,CAAA;IACvB,oDAAqB,CAAA;IACrB,wDAAyB,CAAA;IACzB,oDAAqB,CAAA;IACrB,oDAAqB,CAAA;IACrB,oEAAqC,CAAA;IACrC,kDAAmB,CAAA;IACnB,wEAAyC,CAAA;IACzC,0EAA2C,CAAA;IAC3C,8DAA+B,CAAA;IAC/B,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAE/B,oCAAoC;IACpC,8GAA+E,CAAA;IAC/E,kGAAmE,CAAA;IAEnE,kGAAmE,CAAA;IACnE,0HAA2F,CAAA;IAE3F,4GAA6E,CAAA;IAC7E,sHAAuF,CAAA;IACvF,gHAAiF,CAAA;IACjF,8GAA+E,CAAA;IAE/E,8FAA+D,CAAA;IAE/D,yBAAyB;IACzB,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,4FAA6D,CAAA;IAC7D,oGAAqE,CAAA;IACrE,oFAAqD,CAAA;IAErD,wGAAyE,CAAA;IACzE,gHAAiF,CAAA;IACjF,4FAA6D,CAAA;IAC7D,sGAAuE,CAAA;IACvE,0GAA2E,CAAA;IAC3E,kHAAmF,CAAA;IAEnF,kHAAmF,CAAA;IAEnF,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,8FAA+D,CAAA;IAE/D,kFAAmD,CAAA;IACnD,gFAAiD,CAAA;IACjD,0FAA2D,CAAA;IAE3D,gHAAiF,CAAA;IACjF,gGAAiE,CAAA;IACjE,oGAAqE,CAAA;IAErE,oHAAqF,CAAA;IACrF,gHAAiF,CAAA;IAEjF,oIAAqG,CAAA;IAErG,8GAA+E,CAAA;IAC/E,kHAAmF,CAAA;IAEnF,sGAAuE,CAAA;IAEvE,kHAAmF,CAAA;IACnF,gHAAiF,CAAA;IACjF,oGAAqE,CAAA;IAErE,oGAAqE,CAAA;IACrE,oGAAqE,CAAA;IACrE,4FAA6D,CAAA;IAC7D,0GAA2E,CAAA;IAE3E,wEAAyC,CAAA;IACzC,kFAAmD,CAAA;IACnD,0FAA2D,CAAA;IAC3D,oFAAqD,CAAA;IACrD,sEAAuC,CAAA;IACvC,sEAAuC,CAAA;IACvC,0EAA2C,CAAA;IAC3C,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAE7C,0EAA2C,CAAA;IAE3C,oJAAqH,CAAA;IACrH,sEAAuC,CAAA;IACvC,kFAAmD,CAAA;IACnD,0HAA2F,CAAA;IAC3F,8HAA+F,CAAA;IAC/F,sIAAuG,CAAA;IACvG,8FAA+D,CAAA;IAC/D,kGAAmE,CAAA;IACnE,8GAA+E,CAAA;IAE/E,gGAAiE,CAAA;IACjE,8FAA+D,CAAA;IAE/D,4FAA6D,CAAA;IAE7D,sHAAuF,CAAA;IAEvF,4GAA6E,CAAA;IAC7E,sHAAuF,CAAA;IACvF,oHAAqF,CAAA;IAErF,wFAAyD,CAAA;IACzD,wFAAyD,CAAA;IAEzD,kGAAmE,CAAA;IAEnE,8FAA+D,CAAA;IAC/D,gGAAiE,CAAA;IAEjE,wGAAyE,CAAA;IACzE,sHAAuF,CAAA;IACvF,kHAAmF,CAAA;IAEnF,kDAAkD;IAClD,gGAAiE,CAAA;IACjE,gGAAiE,CAAA;IACjE,8FAA+D,CAAA;IAC/D,0FAA2D,CAAA;IAC3D,4FAA4F;IAC5F,0FAA2D,CAAA;IAC3D,8FAA+D,CAAA;IAC/D,0GAA2E,CAAA;IAC3E,oHAAoH;IACpH,kGAAmE,CAAA;IACnE,mGAAmG;IACnG,sGAAuE,CAAA;IACvE,gGAAiE,CAAA;IACjE,wGAAwG;IACxG,oEAAqC,CAAA;IACrC,8GAA8G;IAC9G,8EAA+C,CAAA;IAE/C,gGAAiE,CAAA;IACjE,sGAAuE,CAAA;IAGvE,uBAAuB;IACvB,wHAAyF,CAAA;IAEzF,6BAA6B;IAC7B,wHAAyF,CAAA;IACzF,kIAAmG,CAAA;IACnG,kIAAmG,CAAA;IAEnG,qCAAqC;IACrC,8GAA+E,CAAA;IAC/E,4HAA6F,CAAA;IAC7F,wHAAyF,CAAA;IACzF,sHAAuF,CAAA;IACvF,kHAAmF,CAAA;IACnF,wHAAyF,CAAA;IACzF,sGAAuE,CAAA;IACvE,4HAA6F,CAAA;IAE7F,iFAAiF;IACjF,sFAAuD,CAAA;IAEvD,8CAA8C;IAC9C,8FAA+D,CAAA;IAC/D,4HAA6F,CAAA;IAC7F,wGAAyE,CAAA;IAEzE,+BAA+B;IAC/B,0GAA2E,CAAA;IAC3E,oGAAqE,CAAA;IACrE,gGAAiE,CAAA;IAEjE,6BAA6B;IAC7B,0FAA2D,CAAA;IAC3D,oEAAqC,CAAA;IAErC,0BAA0B;IAC1B,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,kGAAmE,CAAA;IAEnE,+GAA+G;IAC/G,4GAA6E,CAAA;IAE7E,mBAAmB;IACnB,kFAAmD,CAAA;IACnD,4EAA6C,CAAA;IAC7C,4EAA6C,CAAA;IAC7C,4EAA6C,CAAA;IAC7C,0FAA2D,CAAA;IAE3D,4EAA6C,CAAA;IAC7C,0DAA2B,CAAA;IAC3B,oFAAqD,CAAA;IACrD,sEAAuC,CAAA;IACvC,8EAA+C,CAAA;IAC/C,wFAAyD,CAAA;IACzD,4FAA6D,CAAA;IAC7D,8DAA+B,CAAA;IAC/B,8EAA+C,CAAA;IAC/C,8DAA+B,CAAA;IAE/B,kGAAmE,CAAA;IACnE,kGAAmE,CAAA;IACnE,wFAAyD,CAAA;IAEzD,4FAA6D,CAAA;IAC7D,8FAA+D,CAAA;IAC/D,kFAAmD,CAAA;IAEnD,wBAAwB;IACxB,8EAA+C,CAAA;IAC/C,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAE7C,0BAA0B;IAC1B,wFAAyD,CAAA;IACzD,oFAAqD,CAAA;IACrD,sGAAuE,CAAA;IACvE,oFAAqD,CAAA;IACrD,gGAAiE,CAAA;IACjE,sGAAuE,CAAA;IACvE,0HAA2F,CAAA;IAC3F,kGAAmE,CAAA;IACnE,gHAAiF,CAAA;IACjF,4FAA4F;IAC5F,kFAAmD,CAAA;IACnD,sGAAsG;IACtG,4GAA6E,CAAA;IAE7E,8DAA8D;IAC9D,sJAAsJ;IACtJ,wGAAyE,CAAA;IACzE,oJAAoJ;IACpJ,4HAA6F,CAAA;IAC7F;;;;;;;;;;;;;;OAcG;IACH,wFAAyD,CAAA;IACzD,wFAAwF;IACxF,wGAAyE,CAAA;IACzE,0HAA0H;IAC1H,kHAAmF,CAAA;IACnF,iGAAiG;IACjG,8EAA+C,CAAA;IAC/C,+FAA+F;IAC/F,4FAA6D,CAAA;IAC7D,oTAAoT;IACpT,kFAAmD,CAAA;IACnD,4DAA4D;IAC5D,gGAAiE,CAAA;IACjE,+FAA+F;IAC/F,0EAA2C,CAAA;IAC3C,uEAAuE;IACvE,gGAAiE,CAAA;IAEjE,sFAAsF;IACtF,wEAAwE;IACxE,4GAA6E,CAAA;IAC7E,kEAAkE;IAClE,wGAAyE,CAAA;IACzE,gFAAgF;IAChF,oGAAqE,CAAA;IACrE,mFAAmF;IACnF,kHAAmF,CAAA;IACnF,yFAAyF;IACzF,0FAA2D,CAAA;IAC3D,uDAAuD;IACvD,kGAAmE,CAAA;IACnE,iDAAiD;IACjD,gGAAiE,CAAA;IACjE,6EAA6E;IAC7E,kGAAmE,CAAA;IACnE,4DAA4D;IAC5D,8GAA+E,CAAA;IAC/E,mEAAmE;IACnE,gGAAiE,CAAA;IACjE;;;;;;OAMG;IACH,4GAA6E,CAAA;IAE7E,kCAAkC;IAClC,0EAA0E;IAC1E,4FAA6D,CAAA;IAC7D,sDAAsD;IACtD,oEAAqC,CAAA;IACrC,iEAAiE;IACjE,sFAAuD,CAAA;IACvD,6CAA6C;IAC7C,8EAA+C,CAAA;IAC/C,wEAAwE;IACxE,4FAA6D,CAAA;IAE7D,mDAAmD;IACnD,yCAAyC;IACzC,sEAAuC,CAAA;IACvC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,oGAAqE,CAAA;IACrE;;;;;;;;;;OAUG;IACH,kGAAmE,CAAA;IACnE;;;;;;OAMG;IACH,wFAAyD,CAAA;IACzD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,0GAA2E,CAAA;IAC3E;;;;;;;;;;;OAWG;IACH,8FAA+D,CAAA;IAC/D;;;;;;;;;OASG;IACH,oFAAqD,CAAA;IACrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kFAAmD,CAAA;IACnD,+DAA+D;IAC/D,oGAAqE,CAAA;IAErE,iCAAiC;IACjC,qDAAqD;IACrD,sFAAuD,CAAA;IAEvD,iBAAiB;IACjB,kFAAmD,CAAA;IACnD,sFAAuD,CAAA;IACvD,4FAA6D,CAAA;IAC7D,gGAAiE,CAAA;IACjE,gGAAiE,CAAA;IACjE,oGAAqE,CAAA;IACrE,sFAAuD,CAAA;IACvD,sFAAuD,CAAA;IACvD,kFAAmD,CAAA;IACnD,4FAA6D,CAAA;IAC7D,wFAAyD,CAAA;IACzD,sGAAuE,CAAA;IACvE,wFAAyD,CAAA;IACzD,8FAA+D,CAAA;IAC/D,8FAA+D,CAAA;IAC/D,wGAAyE,CAAA;IACzE,0FAA2D,CAAA;IAC3D,4FAA6D,CAAA;IAC7D,8FAA+D,CAAA;IAC/D,sFAAuD,CAAA;IACvD,gGAAiE,CAAA;IACjE;;;;;;;;;;OAUG;IACH,gGAAiE,CAAA;IACjE,sFAAuD,CAAA;IACvD;;;;;;;;;;;OAWG;IACH,gGAAiE,CAAA;IAEjE,uCAAuC;IACvC,gFAAiD,CAAA;IACjD,gFAAiD,CAAA;IACjD,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAC7C,4DAA6B,CAAA;IAC7B,oFAAqD,CAAA;IACrD,sEAAuC,CAAA;IACvC,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAC7C,0FAA2D,CAAA;IAC3D,8EAA+C,CAAA;IAC/C,4EAA6C,CAAA;IAC7C,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,8EAA+C,CAAA;IAC/C,sFAAuD,CAAA;IACvD,0FAA2D,CAAA;IAC3D,wFAAyD,CAAA;IACzD,gGAAiE,CAAA;IACjE,wEAAyC,CAAA;IACzC,oEAAqC,CAAA;IACrC,sFAAuD,CAAA;IACvD,wHAAwH;IACxH,wEAAyC,CAAA;IAEzC,6BAA6B;IAC7B,kEAAmC,CAAA;IACnC,0EAA2C,CAAA;IAC3C,oGAAqE,CAAA;IACrE,kGAAmE,CAAA;IACnE,8GAA+E,CAAA;IAC/E,gGAAiE,CAAA;IACjE,oIAAoI;IACpI,sFAAuD,CAAA;IACvD,2JAA2J;IAC3J,4FAA6D,CAAA;IAC7D,4GAA4G;IAC5G,wFAAyD,CAAA;IACzD,yGAAyG;IACzG,gHAAiF,CAAA;IAEjF,8CAA8C;IAC9C,iFAAiF;IACjF,wFAAyD,CAAA;IACzD,qEAAqE;IACrE,oFAAqD,CAAA;IACrD,8EAA8E;IAC9E,8FAA+D,CAAA;IAC/D,8DAA8D;IAC9D,4GAA6E,CAAA;IAC7E,4EAA4E;IAC5E,0FAA2D,CAAA;IAC3D,4FAA4F;IAC5F,oFAAqD,CAAA;IACrD,qFAAqF;IACrF,oGAAqE,CAAA;IACrE,kFAAkF;IAClF,sGAAuE,CAAA;IACvE,iEAAiE;IACjE,kFAAmD,CAAA;IACnD,0CAA0C;IAC1C,oEAAqC,CAAA;IACrC,2CAA2C;IAC3C,sEAAuC,CAAA;IACvC,yCAAyC;IACzC,kEAAmC,CAAA;IACnC,6CAA6C;IAC7C,wEAAyC,CAAA;IACzC,0CAA0C;IAC1C,oEAAqC,CAAA;IACrC,qEAAqE;IACrE,sGAAuE,CAAA;IAEvE,4CAA4C;IAC5C,kHAAkH;IAClH,0GAA2E,CAAA;IAC3E,2EAA2E;IAC3E,oFAAqD,CAAA;IACrD,iEAAiE;IACjE,oFAAqD,CAAA;IAErD,uDAAuD;IACvD,8FAA8F;IAC9F,0HAA2F,CAAA;IAC3F,uFAAuF;IACvF,wHAAyF,CAAA;IACzF,gEAAgE;IAChE,wFAAyD,CAAA;IACzD,mEAAmE;IACnE,sFAAuD,CAAA;IACvD,8EAA8E;IAC9E,oFAAqD,CAAA;IACrD,sEAAsE;IACtE,wFAAyD,CAAA;IACzD,kFAAkF;IAClF,0HAA2F,CAAA;IAC3F,6FAA6F;IAC7F,4FAA6D,CAAA;IAE7D,wCAAwC;IACxC,8DAA8D;IAC9D,gEAAiC,CAAA;IACjC,uEAAuE;IACvE,gGAAiE,CAAA;IACjE,6EAA6E;IAC7E,0FAA2D,CAAA;IAC3D,sDAAsD;IACtD,0EAA2C,CAAA;IAC3C,qCAAqC;IACrC,4EAA6C,CAAA;IAC7C,8CAA8C;IAC9C,wEAAyC,CAAA;IACzC,+DAA+D;IAC/D,4FAA6D,CAAA;IAC7D,sEAAsE;IACtE,wFAAyD,CAAA;IACzD,uDAAuD;IACvD,sFAAuD,CAAA;IACvD,8CAA8C;IAC9C,wFAAyD,CAAA;IACzD,kDAAkD;IAClD,0EAA2C,CAAA;IAC3C,+EAA+E;IAC/E,0EAA2C,CAAA;IAC3C,6EAA6E;IAC7E,sGAAuE,CAAA;IACvE,wFAAwF;IACxF,wFAAyD,CAAA;IACzD,gGAAgG;IAChG,oFAAqD,CAAA;IACrD,oGAAoG;IACpG,4FAA6D,CAAA;IAC7D,4EAA4E;IAC5E,sGAAuE,CAAA;IACvE,kFAAkF;IAClF,gFAAiD,CAAA;IACjD,yGAAyG;IACzG,8FAA+D,CAAA;IAC/D,yEAAyE;IACzE,8FAA+D,CAAA;IAC/D,6EAA6E;IAC7E,4FAA6D,CAAA;IAC7D,kEAAkE;IAClE,8GAA+E,CAAA;IAC/E;;;;;;;;OAQG;IACH,0FAA2D,CAAA;IAC3D,4DAA4D;IAC5D,sFAAuD,CAAA;IACvD,gDAAgD;IAChD,wFAAyD,CAAA;IACzD,yEAAyE;IACzE,0GAA2E,CAAA;IAC3E,0DAA0D;IAC1D,oFAAqD,CAAA;IACrD,kFAAkF;IAClF,wFAAyD,CAAA;IACzD,qEAAqE;IACrE,4FAA6D,CAAA;IAE7D,mFAAmF;IACnF,0GAA2E,CAAA;AAC7E,CAAC,EAnpBW,2BAA2B,KAA3B,2BAA2B,QAmpBtC","sourcesContent":["\n\n\nexport enum ErrorCustomMessageReference {\n DEFAULT = 'default',\n CUSTOM = 'custom',\n NETWORK = 'network',\n AUTHENTICATION = 'authentication',\n AUTHORIZATION = 'authorization',\n VALIDATION = 'validation',\n NOT_FOUND = 'not_found',\n CONFLICT = 'conflict',\n RATE_LIMIT = 'rate_limit',\n INTERNAL = 'internal',\n DATABASE = 'database',\n EXTERNAL_SERVICE = 'external_service',\n UNKNOWN = 'unknown',\n UNCAUGHT_EXCEPTION = 'uncaught_exception',\n UNHANDLED_REJECTION = 'unhandled_rejection',\n BUSINESS_RULE = 'business_rule',\n INFRASTRUCTURE = 'infrastructure',\n CONFIGURATION = 'configuration',\n \n // Service-specific error references\n CONTROLLER_RESOURCE_VALIDATION_FAILED = 'controller_resource_validation_failed',\n CONTROLLER_RESOURCE_BUILD_ERROR = 'controller_resource_build_error',\n \n REPOSITORIES_REGISTRY_NOT_FOUND = 'repositories_registry_not_found',\n REPOSITORIES_REGISTRY_INITIALIZATION_FAILED = 'repositories_registry_initialization_failed',\n \n REPOSITORY_RESOURCE_OPERATION_FAILED = 'repository_resource_operation_failed',\n REPOSITORY_RESOURCE_SEARCH_NOT_CONFIGURED = 'repository_resource_search_not_configured',\n REPOSITORY_RESOURCE_SEARCH_NOT_ENABLED = 'repository_resource_search_not_enabled',\n REPOSITORY_RESOURCE_VALIDATION_FAILED = 'repository_resource_validation_failed',\n \n RESOURCE_ID_VALIDATION_FAILED = 'resource_id_validation_failed',\n \n // File validation errors\n FILE_ID_VALIDATION_FAILED = 'file_id_validation_failed',\n APP_ID_VALIDATION_FAILED = 'app_id_validation_failed',\n FILENAME_SANITIZATION_FAILED = 'filename_sanitization_failed',\n CONTENT_LENGTH_VALIDATION_FAILED = 'content_length_validation_failed',\n STREAM_VALIDATION_FAILED = 'stream_validation_failed',\n \n SERVICE_RESOURCE_VALIDATION_FAILED = 'service_resource_validation_failed',\n SERVICE_RESOURCE_TRANSFORMATION_FAILED = 'service_resource_transformation_failed',\n SERVICE_RESOURCE_BUILD_ERROR = 'service_resource_build_error',\n SERVICE_RESOURCE_OPERATION_FAILED = 'service_resource_operation_failed',\n SERVICE_RESOURCE_OPERATION_DISABLED = 'service_resource_operation_disabled',\n SERVICE_RESOURCE_REGISTRY_NOT_AVAILABLE = 'service_resource_registry_not_available',\n \n SERVICES_REGISTRY_INITIALIZATION_FAILED = 'services_registry_initialization_failed',\n \n MONGODB_CONNECTION_FAILED = 'mongodb_connection_failed',\n MONGODB_OPERATION_FAILED = 'mongodb_operation_failed',\n MONGODB_INITIALIZATION_FAILED = 'mongodb_initialization_failed',\n \n REDIS_CONNECTION_FAILED = 'redis_connection_failed',\n REDIS_OPERATION_FAILED = 'redis_operation_failed',\n REDIS_INITIALIZATION_FAILED = 'redis_initialization_failed',\n \n ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED = 'zod_converter_schema_conversion_failed',\n ZOD_CONVERTER_UNSUPPORTED_TYPE = 'zod_converter_unsupported_type',\n ZOD_CONVERTER_MODEL_BUILD_FAILED = 'zod_converter_model_build_failed',\n \n RESOURCES_REGISTRY_INITIALIZATION_FAILED = 'resources_registry_initialization_failed',\n RESOURCES_REGISTRY_REGISTRATION_FAILED = 'resources_registry_registration_failed',\n \n EXTERNAL_PROVIDER_REGISTRY_INITIALIZATION_FAILED = 'external_provider_registry_initialization_failed',\n \n EXECUTION_CONTEXT_SEALED_MODIFICATION = 'execution_context_sealed_modification',\n EXECUTION_CONTEXT_INITIALIZATION_FAILED = 'execution_context_initialization_failed',\n \n HTTP_SERVER_INITIALIZATION_FAILED = 'http_server_initialization_failed',\n \n START_APPLICATION_INITIALIZATION_FAILED = 'start_application_initialization_failed',\n START_APPLICATION_CONFIGURATION_FAILED = 'start_application_configuration_failed',\n START_APPLICATION_STARTUP_FAILED = 'start_application_startup_failed',\n \n AUTHORIZATIONS_MISSING_INITIATOR = 'authorizations_missing_initiator',\n AUTHORIZATIONS_VALIDATION_FAILED = 'authorizations_validation_failed',\n AUTHORIZATIONS_ACCESS_DENIED = 'authorizations_access_denied',\n AUTHORIZATIONS_NO_OPERATION_CONTEXT = 'authorizations_no_operation_context',\n\n JWT_SIGNING_FAILED = 'jwt_signing_failed',\n JWT_VERIFICATION_FAILED = 'jwt_verification_failed',\n JWT_TOKEN_GENERATION_FAILED = 'jwt_token_generation_failed',\n JWT_TOKEN_PARSING_FAILED = 'jwt_token_parsing_failed',\n JWT_TOKEN_EXPIRED = 'jwt_token_expired',\n JWT_TOKEN_INVALID = 'jwt_token_invalid',\n JWT_TOKEN_NOT_FOUND = 'jwt_token_not_found',\n JWT_TOKEN_NOT_VERIFIED = 'jwt_token_not_verified',\n JWT_TOKEN_NOT_SIGNED = 'jwt_token_not_signed',\n\n PLATFORM_HTTP_ERROR = 'platform_http_error',\n\n RESOURCE_OPERATION_CUSTOM_IMPLEMENTATION_NOT_IMPLEMENTED = 'resource_operation_custom_implementation_not_implemented',\n SERVICE_NOT_FOUND = 'service_not_found',\n SERVICE_CREATION_FAILED = 'service_creation_failed',\n RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND = 'resources_registry_operation_path_not_found',\n RESOURCES_REGISTRY_FIELD_IDENTIFIER_NOT_FOUND = 'resources_registry_field_identifier_not_found',\n RESOURCES_REGISTRY_RELATIONSHIP_VALIDATION_FAILED = 'resources_registry_relationship_validation_failed',\n CONTROLLER_RESOURCE_NOT_FOUND = 'controller_resource_not_found',\n CONTROLLER_CUSTOM_NAME_CONFLICT = 'controller_custom_name_conflict',\n CONTROLLER_RESOURCE_ID_MUST_BE_UNIQUE = 'controller_resource_id_must_be_unique',\n\n AUTHENTICATION_API_KEY_INVALID = 'authentication_api_key_invalid',\n AUTHENTICATION_API_KEY_FAILED = 'authentication_api_key_failed',\n\n AUTHENTICATION_INVALID_TOKEN = 'authentication_invalid_token',\n\n AUTHENTICATION_NO_AUTHENTICATION_PROVIDED = 'authentication_no_authentication_provided',\n\n API_CALL_INITIATOR_PARAMETER_MISSING = 'api_call_initiator_parameter_missing',\n API_CALL_INITIATOR_PARAMETER_INCONSISTENT = 'api_call_initiator_parameter_inconsistent',\n API_CALL_INITIATOR_PARAMETER_UNSUPPORTED = 'api_call_initiator_parameter_unsupported',\n\n API_ORG_KEY_WITHOUT_ORG_ID = 'api_org_key_without_org_id',\n API_ORG_KEY_WRONG_RESOURCE = 'api_org_key_wrong_resource',\n\n AUTHENTICATION_JWT_TOKEN_FAILED = 'authentication_jwt_token_failed',\n\n AUTHENTICATION_USER_NOT_FOUND = 'authentication_user_not_found',\n AUTHENTICATION_USER_NOT_ACTIVE = 'authentication_user_not_active',\n\n AUTHENTICATION_USER_NOT_AUTHORIZED = 'authentication_user_not_authorized',\n AUTHENTICATION_USER_CREDENTIALS_NOT_FOUND = 'authentication_user_credentials_not_found',\n AUTHENTICATION_USER_CREDENTIALS_INVALID = 'authentication_user_credentials_invalid',\n\n // Authentication session and flow specific errors\n AUTHENTICATION_SESSION_INVALID = 'authentication_session_invalid',\n AUTHENTICATION_SESSION_EXPIRED = 'authentication_session_expired',\n AUTHENTICATION_ACCOUNT_LOCKED = 'authentication_account_locked',\n AUTHENTICATION_MFA_REQUIRED = 'authentication_mfa_required',\n /** M14: SSO required for this org — password login grace period exhausted or not allowed */\n AUTHENTICATION_SSO_REQUIRED = 'authentication_sso_required',\n AUTHENTICATION_EMAIL_REQUIRED = 'authentication_email_required',\n AUTHENTICATION_METHOD_NOT_SUPPORTED = 'authentication_method_not_supported',\n /** W2.2: Password has expired per passwordPolicy.expiryDays. User must change password before tokens are issued. */\n AUTHENTICATION_PASSWORD_EXPIRED = 'authentication_password_expired',\n /** W3.1b: User's userTypes[] does not include the resolved activeUserType for this application. */\n AUTHENTICATION_USER_TYPE_MISMATCH = 'authentication_user_type_mismatch',\n AUTHENTICATION_NOT_IMPLEMENTED = 'authentication_not_implemented',\n /** W7.1: Operation requires re-authentication (step-up auth). Frontend should prompt re-auth dialog. */\n STEP_UP_REQUIRED = 'step_up_required',\n /** W7.2: Cross-organization SSO access is disabled. User already has enterprise SSO link from another org. */\n CROSS_ORG_SSO_BLOCKED = 'cross_org_sso_blocked',\n\n APP_CONFIGURATION_UNAUTHORIZED = 'app_configuration_unauthorized',\n APP_CONFIGURATION_NOT_INITIALIZED = 'app_configuration_not_initialized',\n\n \n // Frontend form errors\n FRONTEND_FORM_READ_OPERATION_NOT_AVAILABLE = 'frontend_form_read_operation_not_available',\n \n // Frontend navigation errors\n FRONTEND_NAVIGATION_INVALID_URL_PARAMETERS = 'frontend_navigation_invalid_url_parameters',\n FRONTEND_NAVIGATION_MISSING_REQUIRED_PARAMETERS = 'frontend_navigation_missing_required_parameters',\n FRONTEND_NAVIGATION_UNRESOLVED_ROUTE_PARAMETERS = 'frontend_navigation_unresolved_route_parameters',\n\n // Frontend resource operation errors\n FRONTEND_RESOURCE_OPERATION_NOT_FOUND = 'frontend_resource_operation_not_found',\n FRONTEND_RESOURCE_UNSUPPORTED_OPERATION_TYPE = 'frontend_resource_unsupported_operation_type',\n FRONTEND_RESOURCE_SEARCH_OPERATION_INVALID = 'frontend_resource_search_operation_invalid',\n FRONTEND_RESOURCE_UNSUPPORTED_HTTP_METHOD = 'frontend_resource_unsupported_http_method',\n FRONTEND_RESOURCE_NO_ENDPOINT_AVAILABLE = 'frontend_resource_no_endpoint_available',\n FRONTEND_RESOURCE_NO_ROUTE_PATHS_AVAILABLE = 'frontend_resource_no_route_paths_available',\n FRONTEND_RESOURCE_NO_CALLBACK_URL = 'frontend_resource_no_callback_url',\n FRONTEND_RESOURCE_RESPONSE_VALIDATION_FAILED = 'frontend_resource_response_validation_failed',\n\n // FK/PK resolution errors (shared: used by both frontend and backend registries)\n REGISTRY_FK_MAP_COLLISION = 'registry_fk_map_collision',\n\n // FK/PK resolution errors (frontend-specific)\n FRONTEND_FK_RESOLUTION_FAILED = 'frontend_fk_resolution_failed',\n FRONTEND_RESOURCE_FIELD_IDENTIFIER_NOT_FOUND = 'frontend_resource_field_identifier_not_found',\n FRONTEND_RESOURCES_NOT_INITIALIZED = 'frontend_resources_not_initialized',\n\n // Schema Family Builder errors\n SCHEMA_FAMILY_INVALID_DISCRIMINATOR = 'schema_family_invalid_discriminator',\n SCHEMA_FAMILY_UNACCOUNTED_VALUES = 'schema_family_unaccounted_values',\n SCHEMA_FAMILY_DUPLICATE_VALUES = 'schema_family_duplicate_values',\n\n // Database constraint errors\n UNIQUE_CONSTRAINT_VIOLATION = 'unique_constraint_violation',\n VERSION_CONFLICT = 'version_conflict',\n\n // Field validation errors\n VALIDATE_FIELD_NOT_UNIQUE = 'validate_field_not_unique',\n VALIDATE_FIELD_NOT_FOUND = 'validate_field_not_found',\n VALIDATE_FIELD_NOT_UNIQUE_FIELD = 'validate_field_not_unique_field',\n\n /** Password does not meet policy; context.violations contains i18n label keys (PasswordPolicyViolationCode) */\n VALIDATION_PASSWORD_POLICY_VIOLATION = 'validation_password_policy_violation',\n\n // Queue/Job errors\n QUEUE_CONNECTION_FAILED = 'queue_connection_failed',\n QUEUE_PUBLISH_FAILED = 'queue_publish_failed',\n QUEUE_CONSUME_FAILED = 'queue_consume_failed',\n QUEUE_CHANNEL_CLOSED = 'queue_channel_closed',\n QUEUE_INITIALIZATION_FAILED = 'queue_initialization_failed',\n \n JOB_EXECUTION_FAILED = 'job_execution_failed',\n JOB_TIMEOUT = 'job_timeout',\n JOB_MAX_RETRIES_EXCEEDED = 'job_max_retries_exceeded',\n JOB_DEAD_LETTERED = 'job_dead_lettered',\n JOB_PAYLOAD_TOO_LARGE = 'job_payload_too_large',\n JOB_PAYLOAD_STORAGE_FAILED = 'job_payload_storage_failed',\n JOB_PAYLOAD_RETRIEVAL_FAILED = 'job_payload_retrieval_failed',\n JOB_NOT_FOUND = 'job_not_found',\n JOB_ALREADY_PROCESSED = 'job_already_processed',\n JOB_CANCELLED = 'job_cancelled',\n \n JOB_SCHEDULED_SIGNATURE_INVALID = 'job_scheduled_signature_invalid',\n JOB_SCHEDULED_SIGNATURE_EXPIRED = 'job_scheduled_signature_expired',\n JOB_SCHEDULED_UNAUTHORIZED = 'job_scheduled_unauthorized',\n \n JOB_OPERATION_PATH_NOT_FOUND = 'job_operation_path_not_found',\n JOB_EXECUTION_CONTEXT_INVALID = 'job_execution_context_invalid',\n JOB_BATCH_REF_NOT_FOUND = 'job_batch_ref_not_found',\n\n // Feature gating errors\n FEATURE_NOT_AVAILABLE = 'feature_not_available',\n FEATURE_LIMIT_EXCEEDED = 'feature_limit_exceeded',\n INSUFFICIENT_CREDITS = 'insufficient_credits',\n\n // Consumable Token errors\n CONSUMABLE_TOKEN_NOT_FOUND = 'consumable_token_not_found',\n CONSUMABLE_TOKEN_EXPIRED = 'consumable_token_expired',\n CONSUMABLE_TOKEN_ALREADY_CONSUMED = 'consumable_token_already_consumed',\n CONSUMABLE_TOKEN_REVOKED = 'consumable_token_revoked',\n CONSUMABLE_TOKEN_TYPE_MISMATCH = 'consumable_token_type_mismatch',\n CONSUMABLE_TOKEN_CONTEXT_MISMATCH = 'consumable_token_context_mismatch',\n CONSUMABLE_TOKEN_NOT_ACCEPTED_FOR_OPERATION = 'consumable_token_not_accepted_for_operation',\n CONSUMABLE_TOKEN_RACE_CONDITION = 'consumable_token_race_condition',\n CONSUMABLE_TOKEN_FILE_SHARING_DISABLED = 'consumable_token_file_sharing_disabled',\n /** W7.3b: ADDITIVE policy requires x-consumable-token header alongside JWT/API-key auth. */\n ADDITIVE_TOKEN_REQUIRED = 'additive_token_required',\n /** revocation-B1: requested one-off session `expiresIn` exceeds this user type's max-duration cap. */\n ONE_OFF_SESSION_DURATION_EXCEEDS_MAX = 'one_off_session_duration_exceeds_max',\n\n // Invitation acceptance / registration errors (user-directed)\n /** Transient failure verifying the invitation's organization during accept; the single-use token is NOT consumed, so the invitee can safely retry. */\n INVITATION_ORG_VERIFICATION_FAILED = 'invitation_org_verification_failed',\n /** The organization is directory-managed (SCIM): no local credential (password/passkey/magic-link) can be set. The invitee must sign in via SSO. */\n AUTHENTICATION_SCIM_LOCAL_CREDENTIAL_BLOCKED = 'authentication_scim_local_credential_blocked',\n /**\n * The invitation link cannot be used: it is unrecognised, has expired, was already used, or the\n * invitation itself is no longer active. Ask the inviting administrator to send a new invitation.\n *\n * DELIBERATELY UNIFORM across every cause (unrecognised / expired / already-consumed token, wrong\n * token type, missing invitation reference, non-INVITED or orphaned membership, or a revoke that\n * raced the accept). All three PUBLIC token-based endpoints (`getInvitationInfo`,\n * `acceptInvitation`, `rejectInvitation`) throw THIS single reference — and all throw\n * `ErrorType.AUTHENTICATION` — so a token holder cannot distinguish \"unrecognised token\" from\n * \"recognised-but-superseded invite\". A `customMessageReference` is a top-level field that SURVIVES\n * error sanitization (unlike `context.message`), so a per-cause sibling WOULD be client-visible and\n * would re-open that oracle: do NOT add one for those endpoints. The granular cause belongs in the\n * backend logs. (Authenticated, ownership-gated in-app paths may use granular references — they are\n * gated by userId, not token possession, so they leak nothing.)\n */\n INVITATION_NO_LONGER_VALID = 'invitation_no_longer_valid',\n /** The invitation is addressed to a different account than the authenticated caller. */\n INVITATION_NOT_ADDRESSED_TO_CALLER = 'invitation_not_addressed_to_caller',\n /** The invitee already has an account: accept without setting a password, then sign in with the existing login method. */\n INVITATION_EXISTING_ACCOUNT_NO_PASSWORD = 'invitation_existing_account_no_password',\n /** Self-service registration is disabled for this application / frontend service / user type. */\n REGISTRATION_DISABLED = 'registration_disabled',\n /** Registration is by invitation only; a valid invitation is required to create an account. */\n REGISTRATION_INVITATION_ONLY = 'registration_invitation_only',\n /** Registration for this user type is admin-provisioned only: accounts are created by an administrator, so there is no self-service sign-up or invitation-accept path. Distinct from REGISTRATION_DISABLED (registration off entirely) and REGISTRATION_INVITATION_ONLY (self-complete via an invitation token). */\n REGISTRATION_ADMIN_ONLY = 'registration_admin_only',\n /** A password is required to complete this registration. */\n REGISTRATION_PASSWORD_REQUIRED = 'registration_password_required',\n /** Registration could not be completed due to a transient server error; the user may retry. */\n REGISTRATION_FAILED = 'registration_failed',\n /** The account exists but cannot be activated in its current state. */\n ACCOUNT_ACTIVATION_NOT_ALLOWED = 'account_activation_not_allowed',\n\n // Auth / session flow errors (user-directed) — added with the i18n-bypass remediation\n /** A first authentication factor must be completed before this step. */\n AUTHENTICATION_FIRST_FACTOR_REQUIRED = 'authentication_first_factor_required',\n /** Magic-link authentication is disabled for this application. */\n AUTHENTICATION_MAGIC_LINK_DISABLED = 'authentication_magic_link_disabled',\n /** No verified phone number is available for SMS one-time-passcode delivery. */\n AUTHENTICATION_NO_VERIFIED_PHONE = 'authentication_no_verified_phone',\n /** The current session state does not allow completing organization onboarding. */\n AUTHENTICATION_ONBOARDING_STATE_INVALID = 'authentication_onboarding_state_invalid',\n /** The session was lost after magic-link verification; the user must restart sign-in. */\n AUTHENTICATION_SESSION_LOST = 'authentication_session_lost',\n /** The session carries no associated email address. */\n AUTHENTICATION_SESSION_NO_EMAIL = 'authentication_session_no_email',\n /** The session carries no associated user id. */\n AUTHENTICATION_SESSION_NO_USER = 'authentication_session_no_user',\n /** SMS one-time-passcode authentication is disabled for this application. */\n AUTHENTICATION_SMS_OTP_DISABLED = 'authentication_sms_otp_disabled',\n /** The refresh-token cookie is missing from the request. */\n AUTHENTICATION_REFRESH_TOKEN_REQUIRED = 'authentication_refresh_token_required',\n /** The userId in the URL does not match the authenticated user. */\n AUTHORIZATION_USER_ID_MISMATCH = 'authorization_user_id_mismatch',\n /**\n * The scope in the URL (e.g. `/organizations/{id}/…`) does not match the authenticated MACHINE\n * token's bound scope. Symmetric with {@link AUTHORIZATION_USER_ID_MISMATCH} for the machine arm:\n * a machine token is bound to exactly one org/app, so a URL naming a different scope is rejected —\n * this prevents the token's context map (URL-derived) from scoping a query to a different tenant\n * than the token authorizes.\n */\n AUTHORIZATION_MACHINE_SCOPE_MISMATCH = 'authorization_machine_scope_mismatch',\n\n // MFA flow errors (user-directed)\n /** The current session state does not allow completing MFA enrollment. */\n MFA_ENROLLMENT_STATE_INVALID = 'mfa_enrollment_state_invalid',\n /** No MFA method is enrolled for this account yet. */\n MFA_NOT_ENROLLED = 'mfa_not_enrolled',\n /** A TOTP authenticator is already enrolled for this account. */\n MFA_TOTP_ALREADY_ENROLLED = 'mfa_totp_already_enrolled',\n /** The provided TOTP code did not verify. */\n MFA_TOTP_CODE_INVALID = 'mfa_totp_code_invalid',\n /** No pending TOTP setup exists; enrollment must be initiated first. */\n MFA_TOTP_SETUP_NOT_INITIATED = 'mfa_totp_setup_not_initiated',\n\n // Config / request-contract errors (user-directed)\n /** The organization name is required. */\n ORG_NAME_REQUIRED = 'org_name_required',\n /**\n * An organization unit cannot be deleted because child units still hang off it.\n *\n * Emitted as `ErrorType.CONFLICT` (409). CONFLICT is one of the few error types that expose\n * `context` to the client, so the blocking dependent is surfaced by name — `blockingChildUnitId`\n * when a child unit blocks, `blockingUnitMemberId` when a member assignment does. TWO distinct\n * dependents share this one code; branch on the context key, not on the message.\n *\n * Unlike every other `ORGANIZATIONS` child, the unit tree's self-edge\n * (`ORGANIZATION_UNITS -> ORGANIZATION_UNITS` on `parentUnitId`) declares NO `onParentDelete`\n * cascade, so deleting an interior node would strand its whole subtree behind a dangling\n * `parentUnitId` and a stale materialized `path`.\n *\n * MOVE is the remedy to point a client at: it re-parents a child onto another node and rewrites\n * the materialized `path` of its whole subtree in one transaction. (Deleting the subtree\n * bottom-up also works, leaf by leaf.) Since `parentUnitId` became `.excludeFromUpdate()` in the\n * same pass that implemented MOVE, MOVE is the ONLY way to re-home a branch — so do not describe\n * a plain update as an alternative.\n *\n * ⚠️ Direct per-unit DELETE only. Deleting the whole ORGANIZATION is a different path: that\n * cascade IS enabled and removes every unit of the tenant at once (every unit carries the\n * tenant's `organizationId`), and it runs at the repository level, so this guard is correctly\n * not consulted there.\n */\n ORGANIZATION_UNIT_HAS_DEPENDENTS = 'organization_unit_has_dependents',\n /**\n * A MOVE names a destination inside the moved unit's own subtree — one of its descendants, or the\n * unit itself. Either detaches the branch into a cycle: a node below its own descendant has no\n * route back to the root.\n *\n * Distinct from {@link ORGANIZATION_UNIT_CONFLICT}: this one names the re-parenting operation, so\n * an API client can branch on \"the destination is illegal\" without re-deriving it from a generic\n * update conflict. Distinct from {@link ORGANIZATION_UNIT_CODE_EXISTS}, which a MOVE can also\n * raise: there the destination is legal and the unit's own `code` is what collides, so renaming\n * the unit is a remedy that picking another destination is not.\n */\n ORGANIZATION_UNIT_MOVE_CONFLICT = 'organization_unit_move_conflict',\n /**\n * An archive/restore is not a legal transition from the node's current state — already archived;\n * not archived; or a restore whose parent branch is still archived.\n *\n * Sibling-code collisions are NOT reported here; they carry\n * {@link ORGANIZATION_UNIT_CODE_EXISTS}, which names the taken value.\n */\n ORGANIZATION_UNIT_CONFLICT = 'organization_unit_conflict',\n /**\n * A lifecycle verb was invoked from a state it may not transition out of — suspending an\n * already-suspended row, reactivating one that was never suspended, deactivating a terminal\n * account.\n *\n * Raised by the shared status-transition implementation\n * (`createResourceStatusTransitionFactory`) and therefore resource-agnostic by design: the same\n * reference covers organizations, organization members, and users, because \"this is not a legal\n * transition from the current state\" is one API-visible outcome regardless of which state machine\n * refused it. The error context names the resource, operation, current status and permitted\n * source statuses, so a client has everything it needs without a per-resource reference.\n *\n * Distinct from a generic {@link CONFLICT}: a client can branch on \"the row is in the wrong state\n * for this verb\" and re-read to show the real state, rather than treating it as an opaque clash.\n *\n * NOTE: most of these transitions ALSO declare an `enabledCondition`, which rejects the same\n * situation earlier with `SERVICE_RESOURCE_OPERATION_DISABLED`. This reference covers the cases\n * that gate cannot: a transition reached through a non-URL path, and the re-check the\n * implementation performs against the row it actually loaded.\n */\n RESOURCE_STATUS_TRANSITION_CONFLICT = 'resource_status_transition_conflict',\n /**\n * A unit `code` is already used by a sibling under the same parent.\n *\n * Sibling-scoped, not org-wide: two teams called `sales` under different divisions are a\n * legitimate org chart, so the identity is (`organizationId`, `parentUnitId`, `code`). Units\n * carrying no `code` at all are unconstrained — any number of them may sit under one parent.\n *\n * Raised by every operation that can introduce the collision (CREATE, UPDATE rename, MOVE) and by\n * the database unique index that backs them. Those must agree: the index cannot know which\n * operation was running, so an operation-specific code would make the SAME condition report\n * differently depending on which write won a race.\n */\n ORGANIZATION_UNIT_CODE_EXISTS = 'organization_unit_code_exists',\n /**\n * The requested organization `slug` is already taken.\n *\n * The slug is the tenant's URL-safe identity and is `.excludeFromUpdate()` — creation-time\n * identity, not an editable label. That is why this must be refused at CREATE rather than\n * reconciled later: a collision that got written could not be resolved through the API at all.\n *\n * Raised by the database unique index on `slug`. Uniqueness is collection-wide, which IS\n * per-application: an application's organizations live in that application's own database.\n */\n ORGANIZATION_SLUG_EXISTS = 'organization_slug_exists',\n /**\n * The requested application `appSlug` is already taken.\n *\n * GLOBAL across the platform, deliberately NOT compounded with `organizationId`, even though\n * `wildoApplication` is an organization-scoped resource. The slug is not a label — it is the sole\n * input, alongside the environment id, from which every provisioned backing resource takes its\n * name: `buildApplicationNamespace(appSlug, environmentId)` (no organization component), and from\n * it the application database, the database username and the RabbitMQ vhost. Two applications\n * sharing a slug in DIFFERENT organizations would therefore be handed the same database and the\n * same vhost.\n *\n * Raised by the database unique index on `appSlug`, and reachable only at CREATE: the field is\n * `.excludeFromUpdate()`, so it is creation-time identity rather than an editable name.\n *\n * Added 2026-08-19 after the absence of this constraint let a second live `wonder-todos` row be\n * inserted beside the first. The upsert looks up `{ appSlug }` but the repository applies the\n * resource's contextual primary-scope filter, so once the platform organization was re-minted the\n * lookup could no longer see the existing row and INSERTED rather than resolved. The orphaned\n * lineage then kept publishing into the queues of an application that was no longer live, which\n * surfaced only as a RabbitMQ `403 ACCESS_REFUSED` — never as anything naming a duplicate.\n */\n APPLICATION_SLUG_EXISTS = 'application_slug_exists',\n /** The client must send the X-Frontend-Service-Name header. */\n FRONTEND_SERVICE_HEADER_REQUIRED = 'frontend_service_header_required',\n\n // Webhook errors (user-directed)\n /** Inbound webhook signature verification failed. */\n WEBHOOK_SIGNATURE_INVALID = 'webhook_signature_invalid',\n\n // Billing errors\n BILLING_NOT_INITIALIZED = 'billing_not_initialized',\n BILLING_ACCOUNT_NOT_FOUND = 'billing_account_not_found',\n BILLING_NO_PROVIDER_CUSTOMER = 'billing_no_provider_customer',\n BILLING_SUBSCRIPTION_NOT_FOUND = 'billing_subscription_not_found',\n BILLING_NO_ACTIVE_SUBSCRIPTION = 'billing_no_active_subscription',\n BILLING_NO_PROVIDER_SUBSCRIPTION = 'billing_no_provider_subscription',\n BILLING_NO_PROVIDER_PRICE = 'billing_no_provider_price',\n BILLING_PRODUCT_NOT_FOUND = 'billing_product_not_found',\n BILLING_PRICE_NOT_FOUND = 'billing_price_not_found',\n BILLING_INVALID_PRODUCT_TYPE = 'billing_invalid_product_type',\n BILLING_PLAN_TIER_REQUIRED = 'billing_plan_tier_required',\n BILLING_ADDON_NOT_ON_SUBSCRIPTION = 'billing_addon_not_on_subscription',\n BILLING_LOCAL_WRITE_FAILED = 'billing_local_write_failed',\n BILLING_SUBSCRIPTION_NO_ITEMS = 'billing_subscription_no_items',\n BILLING_ACCOUNT_UPDATE_FAILED = 'billing_account_update_failed',\n BILLING_SUBSCRIPTION_UPDATE_FAILED = 'billing_subscription_update_failed',\n BILLING_PROMOTION_NOT_FOUND = 'billing_promotion_not_found',\n BILLING_INSUFFICIENT_CREDITS = 'billing_insufficient_credits',\n BILLING_CREDIT_POOL_NOT_FOUND = 'billing_credit_pool_not_found',\n BILLING_PROMOTION_INVALID = 'billing_promotion_invalid',\n BILLING_PRODUCT_SCOPE_MISMATCH = 'billing_product_scope_mismatch',\n /**\n * A purchase named a product and a price that do not belong together.\n *\n * `Price.productId` is a declared foreign key, so every price already knows its product. The\n * purchase paths, however, used to resolve the two INDEPENDENTLY — product by key, price by id —\n * and never consulted that FK. The provider is billed the price while the local subscription item\n * records the product, and entitlements derive from the product: a caller pairing a premium\n * product key with a cheap price id therefore received premium entitlements at the cheap price.\n *\n * Raised as `ErrorType.VALIDATION` (400) — the payload is internally inconsistent, not unauthorized.\n */\n BILLING_PRICE_PRODUCT_MISMATCH = 'billing_price_product_mismatch',\n BILLING_SCOPE_NOT_ENABLED = 'billing_scope_not_enabled',\n /**\n * Hard removal of a billing account was refused because retained financial children\n * (subscriptions / invoice refs / usage records / credit pools) still reference it.\n *\n * Emitted as `ErrorType.CONFLICT` (409). CONFLICT is one of the few error types that\n * expose `context` to the client, so the blocking child families are surfaced by name.\n *\n * @see the billing-retention rationale at the `Scope -> BillingAccounts` declaration in\n * `resources-registry.shared.core.definitions.ts` — the children are RETAINED on purpose,\n * and this account row holds the only local `providerCustomerId` that maps them back to\n * the provider customer.\n */\n BILLING_ACCOUNT_HAS_DEPENDENTS = 'billing_account_has_dependents',\n\n // SAML Protocol Engine errors (AUTH-2)\n SAML_ASSERTION_INVALID = 'saml_assertion_invalid',\n SAML_SIGNATURE_INVALID = 'saml_signature_invalid',\n SAML_AUDIENCE_MISMATCH = 'saml_audience_mismatch',\n SAML_REPLAY_DETECTED = 'saml_replay_detected',\n SAML_EXPIRED = 'saml_expired',\n SAML_DOMAIN_NOT_VERIFIED = 'saml_domain_not_verified',\n SAML_CERT_EXPIRED = 'saml_cert_expired',\n SAML_DECRYPTION_FAILED = 'saml_decryption_failed',\n SAML_SP_KEY_MISMATCH = 'saml_sp_key_mismatch',\n SAML_UNSUPPORTED_ENCRYPTION = 'saml_unsupported_encryption',\n SAML_TRANSIENT_NAMEID = 'saml_transient_nameid',\n SAML_INVALID_NAME_ID = 'saml_invalid_name_id',\n SAML_MOBILE_NOT_SUPPORTED = 'saml_mobile_not_supported',\n SAML_MULTIPLE_ASSERTIONS = 'saml_multiple_assertions',\n SAML_BINDING_MISMATCH = 'saml_binding_mismatch',\n SAML_METADATA_PARSE_ERROR = 'saml_metadata_parse_error',\n SAML_INVALID_IN_RESPONSE_TO = 'saml_invalid_in_response_to',\n SAML_ORGANIZATION_REQUIRED = 'saml_organization_required',\n SAML_IDP_INITIATED_NOT_ALLOWED = 'saml_idp_initiated_not_allowed',\n SAML_AMBIGUOUS_IDP = 'saml_ambiguous_idp',\n SAML_UNKNOWN_IDP = 'saml_unknown_idp',\n SAML_DESTINATION_MISMATCH = 'saml_destination_mismatch',\n /** Java runtime required for SAML XSD validation (samlify dependency). Dev: install JRE or use mock parser in tests. */\n SAML_JAVA_REQUIRED = 'saml_java_required',\n\n // Aggregation / Chart errors\n CHART_NOT_FOUND = 'chart_not_found',\n AGGREGATION_TIMEOUT = 'aggregation_timeout',\n AGGREGATION_MAX_BUCKETS_EXCEEDED = 'aggregation_max_buckets_exceeded',\n AGGREGATION_FIELD_ACCESS_DENIED = 'aggregation_field_access_denied',\n AGGREGATION_COMPUTED_EXPRESSION_ERROR = 'aggregation_computed_expression_error',\n AGGREGATION_JOIN_ACCESS_DENIED = 'aggregation_join_access_denied',\n /** User lacks permission to view a chart's aggregated data (missing LIST access, chart role restriction, or insufficient roles). */\n AGGREGATION_ACCESS_DENIED = 'aggregation_access_denied',\n /** A required scope/context value (org id, user id, unknown primary scope, or context-filter value) could not be resolved to authorize the aggregation. */\n AGGREGATION_SCOPE_UNRESOLVED = 'aggregation_scope_unresolved',\n /** A context filter conflicts with or would override the enforced primary-scope lock on the aggregation. */\n AGGREGATION_SCOPE_CONFLICT = 'aggregation_scope_conflict',\n /** Aggregation execution requires an executionContext unless skipAuthorization is explicitly enabled. */\n AGGREGATION_EXECUTION_CONTEXT_REQUIRED = 'aggregation_execution_context_required',\n\n // Agent / flows-actors errors (user-directed)\n /** Selected AI provider/protocol is not enabled in application configuration. */\n AGENT_PROVIDER_NOT_ENABLED = 'agent_provider_not_enabled',\n /** Provider not found or its LLM runtime contract is unavailable. */\n AGENT_PROVIDER_NOT_FOUND = 'agent_provider_not_found',\n /** Requested agent operation key is not supported by the provider/runtime. */\n AGENT_OPERATION_NOT_SUPPORTED = 'agent_operation_not_supported',\n /** Image provider client does not expose image generation. */\n AGENT_IMAGE_GENERATION_NOT_SUPPORTED = 'agent_image_generation_not_supported',\n /** Image generation requires a non-empty prompt on the invocation input. */\n AGENT_IMAGE_PROMPT_REQUIRED = 'agent_image_prompt_required',\n /** CLI runtime returned output that was missing, malformed, or failed schema validation. */\n AGENT_CLI_OUTPUT_INVALID = 'agent_cli_output_invalid',\n /** Structured-generation operation requires a Zod schema on the invocation input. */\n AGENT_STRUCTURED_SCHEMA_REQUIRED = 'agent_structured_schema_required',\n /** AI provider client does not support any known model initialization pattern. */\n AGENT_MODEL_INITIALIZATION_FAILED = 'agent_model_initialization_failed',\n /** No messages provided for the (multimodal) chat completion. */\n AGENT_MESSAGES_REQUIRED = 'agent_messages_required',\n /** The referenced agent is not active. */\n AGENT_NOT_ACTIVE = 'agent_not_active',\n /** The referenced system is not a flow. */\n FLOW_INVALID_KIND = 'flow_invalid_kind',\n /** The referenced flow is not active. */\n FLOW_NOT_ACTIVE = 'flow_not_active',\n /** The referenced system is not an actor. */\n ACTOR_INVALID_KIND = 'actor_invalid_kind',\n /** The referenced actor is not active. */\n ACTOR_NOT_ACTIVE = 'actor_not_active',\n /** Chart parent context resource is not accessible to the caller. */\n CHART_PARENT_CONTEXT_INACCESSIBLE = 'chart_parent_context_inaccessible',\n\n // Auth-methods / SSO errors (user-directed)\n /** Authentication is disabled for this frontend service + user type (a config gate, NOT session invalidation). */\n AUTHENTICATION_DISABLED_FOR_SERVICE = 'authentication_disabled_for_service',\n /** The requested OAuth2/social provider is not registered or available. */\n OAUTH_PROVIDER_NOT_FOUND = 'oauth_provider_not_found',\n /** The requested SSO connection was not found or is disabled. */\n SSO_CONNECTION_NOT_FOUND = 'sso_connection_not_found',\n\n // Config / data-seeding / email errors (user-directed)\n /** The frontendServiceName query parameter is required to fetch application configuration. */\n APP_CONFIGURATION_FRONTEND_SERVICE_REQUIRED = 'app_configuration_frontend_service_required',\n /** The frontendServiceName does not match any configured frontend service identity. */\n APP_CONFIGURATION_UNKNOWN_FRONTEND_SERVICE = 'app_configuration_unknown_frontend_service',\n /** The data-seeding admin endpoint secret header is missing. */\n SEED_ADMIN_SECRET_REQUIRED = 'seed_admin_secret_required',\n /** The data-seeding admin endpoint secret header did not match. */\n SEED_ADMIN_SECRET_INVALID = 'seed_admin_secret_invalid',\n /** Invalid query parameters for the data-seeding admin list-runs endpoint. */\n SEED_ADMIN_INVALID_QUERY = 'seed_admin_invalid_query',\n /** Invalid request body for the data-seeding admin rerun endpoint. */\n SEED_ADMIN_INVALID_PAYLOAD = 'seed_admin_invalid_payload',\n /** updateSeedMetadata targeted a row _id that does not exist for the resource. */\n REPOSITORY_RESOURCE_SEED_METADATA_NOT_FOUND = 'repository_resource_seed_metadata_not_found',\n /** Email recipient/cc/bcc/replyTo list contains an address that failed format validation. */\n EMAIL_INVALID_ADDRESS_FORMAT = 'email_invalid_address_format',\n\n // File operation errors (user-directed)\n /** The requested file does not exist or is not accessible. */\n FILE_NOT_FOUND = 'file_not_found',\n /** File cannot move to the requested status from its current state. */\n FILE_INVALID_STATUS_TRANSITION = 'file_invalid_status_transition',\n /** File must be in UPLOADED status before it can be linked to a resource. */\n FILE_NOT_IN_UPLOADED_STATUS = 'file_not_in_uploaded_status',\n /** File is already linked to a different resource. */\n FILE_ALREADY_LINKED = 'file_already_linked',\n /** File has already been deleted. */\n FILE_ALREADY_DELETED = 'file_already_deleted',\n /** Access to the requested file is denied. */\n FILE_ACCESS_DENIED = 'file_access_denied',\n /** File cannot be deleted while the AV scan is in progress. */\n FILE_DELETE_WHILE_PROCESSING = 'file_delete_while_processing',\n /** A file linked to a resource cannot be deleted; unlink it first. */\n FILE_DELETE_LINKED_BLOCKED = 'file_delete_linked_blocked',\n /** Only the original uploader can delete this file. */\n FILE_DELETE_UPLOADER_ONLY = 'file_delete_uploader_only',\n /** The file share request body is invalid. */\n FILE_SHARE_REQUEST_INVALID = 'file_share_request_invalid',\n /** No file was provided in the upload request. */\n FILE_UPLOAD_NO_FILE = 'file_upload_no_file',\n /** Too many files provided for this field (exceeds the configured maximum). */\n FILE_TOO_MANY_FILES = 'file_too_many_files',\n /** This file field is system-generated and cannot receive uploads/writes. */\n FILE_GENERATED_FIELD_NOT_WRITABLE = 'file_generated_field_not_writable',\n /** This file field is not overridable; existing files cannot be replaced or removed. */\n FILE_FIELD_NOT_OVERRIDABLE = 'file_field_not_overridable',\n /** The file field value has an unexpected type (expected string, array, null, or undefined). */\n FILE_FIELD_VALUE_INVALID = 'file_field_value_invalid',\n /** A nested file field could not be updated safely because multiple array items changed at once. */\n FILE_NESTED_UPDATE_AMBIGUOUS = 'file_nested_update_ambiguous',\n /** uploadedBy and uploadedByEntityType must both be set or both omitted. */\n FILE_UPLOADER_FIELDS_INCONSISTENT = 'file_uploader_fields_inconsistent',\n /** Explicit uploader ownership does not match the current execution principal. */\n FILE_UPLOADER_MISMATCH = 'file_uploader_mismatch',\n /** A required scope identifier (application/organization/user id) is missing for this file operation. */\n FILE_SCOPE_IDENTIFIER_MISSING = 'file_scope_identifier_missing',\n /** The scope identifiers are invalid for the specified primary scope. */\n FILE_SCOPE_IDENTIFIER_INVALID = 'file_scope_identifier_invalid',\n /** The file access scope could not be derived from the execution context. */\n FILE_SCOPE_DERIVATION_FAILED = 'file_scope_derivation_failed',\n /** Text extraction is not supported for this file's MIME type. */\n FILE_TEXT_EXTRACTION_UNSUPPORTED_TYPE = 'file_text_extraction_unsupported_type',\n /**\n * The file's MIME type IS supported, but its bytes could not be parsed — corrupt, truncated,\n * or password-protected.\n *\n * Deliberately distinct from every storage/wiring failure that can also arise while extracting.\n * This one is a permanent property of the BYTES, so a batch consumer may skip the file and move\n * on; an unreachable storage backend is transient and must NOT be treated the same way. The RAG\n * ingestion sweep branches on exactly this distinction — see `RagIngestionBackendService`.\n */\n FILE_TEXT_EXTRACTION_FAILED = 'file_text_extraction_failed',\n /** The file's blob was not found in the storage backend. */\n FILE_NOT_FOUND_IN_STORAGE = 'file_not_found_in_storage',\n /** Access to the file in storage was denied. */\n FILE_STORAGE_ACCESS_DENIED = 'file_storage_access_denied',\n /** The storage key/path could not be composed (missing file name/id). */\n FILE_STORAGE_KEY_COMPOSITION_FAILED = 'file_storage_key_composition_failed',\n /** The provided storage reference is empty or invalid. */\n FILE_STORAGE_REF_INVALID = 'file_storage_ref_invalid',\n /** The storage reference does not belong to the current application namespace. */\n FILE_STORAGE_REF_FORBIDDEN = 'file_storage_ref_forbidden',\n /** The requested file path escapes the allowed storage directory. */\n FILE_PATH_TRAVERSAL_DETECTED = 'file_path_traversal_detected',\n\n /** A bulk relationship operation must provide either _ids or a filter selector. */\n BULK_RELATIONSHIP_SELECTOR_REQUIRED = 'bulk_relationship_selector_required',\n}"]}
1
+ {"version":3,"file":"errors.custom-message-ref.shared.definitions.js","sourceRoot":"","sources":["../../../../src/errors/errors.custom-message-ref.shared.definitions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,2BA8pBX;AA9pBD,WAAY,2BAA2B;IACrC,kDAAmB,CAAA;IACnB,gDAAiB,CAAA;IACjB,kDAAmB,CAAA;IACnB,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,wDAAyB,CAAA;IACzB,sDAAuB,CAAA;IACvB,oDAAqB,CAAA;IACrB,wDAAyB,CAAA;IACzB,oDAAqB,CAAA;IACrB,oDAAqB,CAAA;IACrB,oEAAqC,CAAA;IACrC,kDAAmB,CAAA;IACnB,wEAAyC,CAAA;IACzC,0EAA2C,CAAA;IAC3C,8DAA+B,CAAA;IAC/B,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAE/B,oCAAoC;IACpC,8GAA+E,CAAA;IAC/E,kGAAmE,CAAA;IAEnE,kGAAmE,CAAA;IACnE,0HAA2F,CAAA;IAE3F,4GAA6E,CAAA;IAC7E,sHAAuF,CAAA;IACvF,gHAAiF,CAAA;IACjF,8GAA+E,CAAA;IAE/E,8FAA+D,CAAA;IAE/D,yBAAyB;IACzB,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,4FAA6D,CAAA;IAC7D,oGAAqE,CAAA;IACrE,oFAAqD,CAAA;IAErD,wGAAyE,CAAA;IACzE,gHAAiF,CAAA;IACjF,4FAA6D,CAAA;IAC7D,sGAAuE,CAAA;IACvE,0GAA2E,CAAA;IAC3E,kHAAmF,CAAA;IAEnF,kHAAmF,CAAA;IAEnF,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,8FAA+D,CAAA;IAE/D,kFAAmD,CAAA;IACnD,gFAAiD,CAAA;IACjD,0FAA2D,CAAA;IAE3D,gHAAiF,CAAA;IACjF,gGAAiE,CAAA;IACjE,oGAAqE,CAAA;IAErE,oHAAqF,CAAA;IACrF,gHAAiF,CAAA;IAEjF,oIAAqG,CAAA;IAErG,8GAA+E,CAAA;IAC/E,kHAAmF,CAAA;IAEnF,sGAAuE,CAAA;IAEvE,kHAAmF,CAAA;IACnF,gHAAiF,CAAA;IACjF,oGAAqE,CAAA;IAErE,oGAAqE,CAAA;IACrE,oGAAqE,CAAA;IACrE,4FAA6D,CAAA;IAC7D,0GAA2E,CAAA;IAE3E,wEAAyC,CAAA;IACzC,kFAAmD,CAAA;IACnD,0FAA2D,CAAA;IAC3D,oFAAqD,CAAA;IACrD,sEAAuC,CAAA;IACvC,sEAAuC,CAAA;IACvC,0EAA2C,CAAA;IAC3C,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAE7C,0EAA2C,CAAA;IAE3C,oJAAqH,CAAA;IACrH,sEAAuC,CAAA;IACvC,kFAAmD,CAAA;IACnD,0HAA2F,CAAA;IAC3F,8HAA+F,CAAA;IAC/F,sIAAuG,CAAA;IACvG,8FAA+D,CAAA;IAC/D,kGAAmE,CAAA;IACnE,8GAA+E,CAAA;IAE/E,gGAAiE,CAAA;IACjE,8FAA+D,CAAA;IAE/D,4FAA6D,CAAA;IAE7D,sHAAuF,CAAA;IAEvF,4GAA6E,CAAA;IAC7E,sHAAuF,CAAA;IACvF,oHAAqF,CAAA;IAErF,wFAAyD,CAAA;IACzD,wFAAyD,CAAA;IAEzD,kGAAmE,CAAA;IAEnE,8FAA+D,CAAA;IAC/D,gGAAiE,CAAA;IAEjE,wGAAyE,CAAA;IACzE,sHAAuF,CAAA;IACvF,kHAAmF,CAAA;IAEnF,kDAAkD;IAClD,gGAAiE,CAAA;IACjE,gGAAiE,CAAA;IACjE,8FAA+D,CAAA;IAC/D,0FAA2D,CAAA;IAC3D,4FAA4F;IAC5F,0FAA2D,CAAA;IAC3D,8FAA+D,CAAA;IAC/D,0GAA2E,CAAA;IAC3E,oHAAoH;IACpH,kGAAmE,CAAA;IACnE,mGAAmG;IACnG,sGAAuE,CAAA;IACvE,gGAAiE,CAAA;IACjE,wGAAwG;IACxG,oEAAqC,CAAA;IACrC,8GAA8G;IAC9G,8EAA+C,CAAA;IAE/C,gGAAiE,CAAA;IACjE,sGAAuE,CAAA;IAGvE,uBAAuB;IACvB,wHAAyF,CAAA;IAEzF,6BAA6B;IAC7B,wHAAyF,CAAA;IACzF,kIAAmG,CAAA;IACnG,kIAAmG,CAAA;IAEnG,qCAAqC;IACrC,8GAA+E,CAAA;IAC/E,4HAA6F,CAAA;IAC7F,wHAAyF,CAAA;IACzF,sHAAuF,CAAA;IACvF,kHAAmF,CAAA;IACnF,wHAAyF,CAAA;IACzF,sGAAuE,CAAA;IACvE,4HAA6F,CAAA;IAE7F,iFAAiF;IACjF,sFAAuD,CAAA;IAEvD,8CAA8C;IAC9C,8FAA+D,CAAA;IAC/D,4HAA6F,CAAA;IAC7F,wGAAyE,CAAA;IAEzE,+BAA+B;IAC/B,0GAA2E,CAAA;IAC3E,oGAAqE,CAAA;IACrE,gGAAiE,CAAA;IAEjE,6BAA6B;IAC7B,0FAA2D,CAAA;IAC3D,oEAAqC,CAAA;IAErC,0BAA0B;IAC1B,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,kGAAmE,CAAA;IAEnE,+GAA+G;IAC/G,4GAA6E,CAAA;IAE7E,mBAAmB;IACnB,kFAAmD,CAAA;IACnD,4EAA6C,CAAA;IAC7C,4EAA6C,CAAA;IAC7C,4EAA6C,CAAA;IAC7C,0FAA2D,CAAA;IAE3D,4EAA6C,CAAA;IAC7C,0DAA2B,CAAA;IAC3B,oFAAqD,CAAA;IACrD,sEAAuC,CAAA;IACvC,8EAA+C,CAAA;IAC/C,wFAAyD,CAAA;IACzD,4FAA6D,CAAA;IAC7D,8DAA+B,CAAA;IAC/B,8EAA+C,CAAA;IAC/C,8DAA+B,CAAA;IAE/B,kGAAmE,CAAA;IACnE,kGAAmE,CAAA;IACnE,wFAAyD,CAAA;IAEzD,4FAA6D,CAAA;IAC7D,8FAA+D,CAAA;IAC/D,kFAAmD,CAAA;IAEnD,wBAAwB;IACxB,8EAA+C,CAAA;IAC/C,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAE7C,0BAA0B;IAC1B,wFAAyD,CAAA;IACzD,oFAAqD,CAAA;IACrD,sGAAuE,CAAA;IACvE,oFAAqD,CAAA;IACrD,gGAAiE,CAAA;IACjE,sGAAuE,CAAA;IACvE,0HAA2F,CAAA;IAC3F,kGAAmE,CAAA;IACnE,gHAAiF,CAAA;IACjF,8HAA8H;IAC9H,sGAAuE,CAAA;IACvE,8FAA8F;IAC9F,gHAAiF,CAAA;IACjF,wJAAwJ;IACxJ,8GAA+E,CAAA;IAC/E,oFAAoF;IACpF,0FAA2D,CAAA;IAC3D,4FAA4F;IAC5F,kFAAmD,CAAA;IACnD,sGAAsG;IACtG,4GAA6E,CAAA;IAE7E,8DAA8D;IAC9D,sJAAsJ;IACtJ,wGAAyE,CAAA;IACzE,oJAAoJ;IACpJ,4HAA6F,CAAA;IAC7F;;;;;;;;;;;;;;OAcG;IACH,wFAAyD,CAAA;IACzD,wFAAwF;IACxF,wGAAyE,CAAA;IACzE,0HAA0H;IAC1H,kHAAmF,CAAA;IACnF,iGAAiG;IACjG,8EAA+C,CAAA;IAC/C,+FAA+F;IAC/F,4FAA6D,CAAA;IAC7D,oTAAoT;IACpT,kFAAmD,CAAA;IACnD,4DAA4D;IAC5D,gGAAiE,CAAA;IACjE,+FAA+F;IAC/F,0EAA2C,CAAA;IAC3C,uEAAuE;IACvE,gGAAiE,CAAA;IAEjE,sFAAsF;IACtF,wEAAwE;IACxE,4GAA6E,CAAA;IAC7E,kEAAkE;IAClE,wGAAyE,CAAA;IACzE,gFAAgF;IAChF,oGAAqE,CAAA;IACrE,mFAAmF;IACnF,kHAAmF,CAAA;IACnF,yFAAyF;IACzF,0FAA2D,CAAA;IAC3D,uDAAuD;IACvD,kGAAmE,CAAA;IACnE,iDAAiD;IACjD,gGAAiE,CAAA;IACjE,6EAA6E;IAC7E,kGAAmE,CAAA;IACnE,4DAA4D;IAC5D,8GAA+E,CAAA;IAC/E,mEAAmE;IACnE,gGAAiE,CAAA;IACjE;;;;;;OAMG;IACH,4GAA6E,CAAA;IAE7E,kCAAkC;IAClC,0EAA0E;IAC1E,4FAA6D,CAAA;IAC7D,sDAAsD;IACtD,oEAAqC,CAAA;IACrC,iEAAiE;IACjE,sFAAuD,CAAA;IACvD,6CAA6C;IAC7C,8EAA+C,CAAA;IAC/C,wEAAwE;IACxE,4FAA6D,CAAA;IAE7D,mDAAmD;IACnD,yCAAyC;IACzC,sEAAuC,CAAA;IACvC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,oGAAqE,CAAA;IACrE;;;;;;;;;;OAUG;IACH,kGAAmE,CAAA;IACnE;;;;;;OAMG;IACH,wFAAyD,CAAA;IACzD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,0GAA2E,CAAA;IAC3E;;;;;;;;;;;OAWG;IACH,8FAA+D,CAAA;IAC/D;;;;;;;;;OASG;IACH,oFAAqD,CAAA;IACrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kFAAmD,CAAA;IACnD,+DAA+D;IAC/D,oGAAqE,CAAA;IAErE,iCAAiC;IACjC,qDAAqD;IACrD,sFAAuD,CAAA;IAEvD,iBAAiB;IACjB,kFAAmD,CAAA;IACnD,sFAAuD,CAAA;IACvD,4FAA6D,CAAA;IAC7D,gGAAiE,CAAA;IACjE,gGAAiE,CAAA;IACjE,oGAAqE,CAAA;IACrE,sFAAuD,CAAA;IACvD,sFAAuD,CAAA;IACvD,kFAAmD,CAAA;IACnD,4FAA6D,CAAA;IAC7D,wFAAyD,CAAA;IACzD,sGAAuE,CAAA;IACvE,wFAAyD,CAAA;IACzD,8FAA+D,CAAA;IAC/D,8FAA+D,CAAA;IAC/D,wGAAyE,CAAA;IACzE,0FAA2D,CAAA;IAC3D,4FAA6D,CAAA;IAC7D,8FAA+D,CAAA;IAC/D,sFAAuD,CAAA;IACvD,gGAAiE,CAAA;IACjE;;;;;;;;;;OAUG;IACH,gGAAiE,CAAA;IACjE,sFAAuD,CAAA;IACvD;;;;;;;;;;;OAWG;IACH,gGAAiE,CAAA;IAEjE,uCAAuC;IACvC,gFAAiD,CAAA;IACjD,gFAAiD,CAAA;IACjD,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAC7C,4DAA6B,CAAA;IAC7B,oFAAqD,CAAA;IACrD,sEAAuC,CAAA;IACvC,gFAAiD,CAAA;IACjD,4EAA6C,CAAA;IAC7C,0FAA2D,CAAA;IAC3D,8EAA+C,CAAA;IAC/C,4EAA6C,CAAA;IAC7C,sFAAuD,CAAA;IACvD,oFAAqD,CAAA;IACrD,8EAA+C,CAAA;IAC/C,sFAAuD,CAAA;IACvD,0FAA2D,CAAA;IAC3D,wFAAyD,CAAA;IACzD,gGAAiE,CAAA;IACjE,wEAAyC,CAAA;IACzC,oEAAqC,CAAA;IACrC,sFAAuD,CAAA;IACvD,wHAAwH;IACxH,wEAAyC,CAAA;IAEzC,6BAA6B;IAC7B,kEAAmC,CAAA;IACnC,0EAA2C,CAAA;IAC3C,oGAAqE,CAAA;IACrE,kGAAmE,CAAA;IACnE,8GAA+E,CAAA;IAC/E,gGAAiE,CAAA;IACjE,oIAAoI;IACpI,sFAAuD,CAAA;IACvD,2JAA2J;IAC3J,4FAA6D,CAAA;IAC7D,4GAA4G;IAC5G,wFAAyD,CAAA;IACzD,yGAAyG;IACzG,gHAAiF,CAAA;IAEjF,8CAA8C;IAC9C,iFAAiF;IACjF,wFAAyD,CAAA;IACzD,qEAAqE;IACrE,oFAAqD,CAAA;IACrD,8EAA8E;IAC9E,8FAA+D,CAAA;IAC/D,8DAA8D;IAC9D,4GAA6E,CAAA;IAC7E,4EAA4E;IAC5E,0FAA2D,CAAA;IAC3D,4FAA4F;IAC5F,oFAAqD,CAAA;IACrD,qFAAqF;IACrF,oGAAqE,CAAA;IACrE,kFAAkF;IAClF,sGAAuE,CAAA;IACvE,iEAAiE;IACjE,kFAAmD,CAAA;IACnD,0CAA0C;IAC1C,oEAAqC,CAAA;IACrC,2CAA2C;IAC3C,sEAAuC,CAAA;IACvC,yCAAyC;IACzC,kEAAmC,CAAA;IACnC,6CAA6C;IAC7C,wEAAyC,CAAA;IACzC,0CAA0C;IAC1C,oEAAqC,CAAA;IACrC,qEAAqE;IACrE,sGAAuE,CAAA;IAEvE,4CAA4C;IAC5C,kHAAkH;IAClH,0GAA2E,CAAA;IAC3E,2EAA2E;IAC3E,oFAAqD,CAAA;IACrD,iEAAiE;IACjE,oFAAqD,CAAA;IAErD,uDAAuD;IACvD,8FAA8F;IAC9F,0HAA2F,CAAA;IAC3F,uFAAuF;IACvF,wHAAyF,CAAA;IACzF,gEAAgE;IAChE,wFAAyD,CAAA;IACzD,mEAAmE;IACnE,sFAAuD,CAAA;IACvD,8EAA8E;IAC9E,oFAAqD,CAAA;IACrD,sEAAsE;IACtE,wFAAyD,CAAA;IACzD,kFAAkF;IAClF,0HAA2F,CAAA;IAC3F,6FAA6F;IAC7F,4FAA6D,CAAA;IAE7D,wCAAwC;IACxC,8DAA8D;IAC9D,gEAAiC,CAAA;IACjC,uEAAuE;IACvE,gGAAiE,CAAA;IACjE,6EAA6E;IAC7E,gJAAgJ;IAChJ,sEAAuC,CAAA;IACvC,iKAAiK;IACjK,8EAA+C,CAAA;IAC/C,sDAAsD;IACtD,0EAA2C,CAAA;IAC3C,qCAAqC;IACrC,4EAA6C,CAAA;IAC7C,8CAA8C;IAC9C,wEAAyC,CAAA;IACzC,+DAA+D;IAC/D,4FAA6D,CAAA;IAC7D,sEAAsE;IACtE,wFAAyD,CAAA;IACzD,uDAAuD;IACvD,sFAAuD,CAAA;IACvD,8CAA8C;IAC9C,wFAAyD,CAAA;IACzD,kDAAkD;IAClD,0EAA2C,CAAA;IAC3C,+EAA+E;IAC/E,0EAA2C,CAAA;IAC3C,6EAA6E;IAC7E,sGAAuE,CAAA;IACvE,wFAAwF;IACxF,wFAAyD,CAAA;IACzD,gGAAgG;IAChG,oFAAqD,CAAA;IACrD,oGAAoG;IACpG,4FAA6D,CAAA;IAC7D,4EAA4E;IAC5E,sGAAuE,CAAA;IACvE,kFAAkF;IAClF,gFAAiD,CAAA;IACjD,yGAAyG;IACzG,8FAA+D,CAAA;IAC/D,yEAAyE;IACzE,8FAA+D,CAAA;IAC/D,6EAA6E;IAC7E,4FAA6D,CAAA;IAC7D,kEAAkE;IAClE,8GAA+E,CAAA;IAC/E;;;;;;;;OAQG;IACH,0FAA2D,CAAA;IAC3D,4DAA4D;IAC5D,sFAAuD,CAAA;IACvD,gDAAgD;IAChD,wFAAyD,CAAA;IACzD,yEAAyE;IACzE,0GAA2E,CAAA;IAC3E,0DAA0D;IAC1D,oFAAqD,CAAA;IACrD,kFAAkF;IAClF,wFAAyD,CAAA;IACzD,qEAAqE;IACrE,4FAA6D,CAAA;IAE7D,mFAAmF;IACnF,0GAA2E,CAAA;AAC7E,CAAC,EA9pBW,2BAA2B,KAA3B,2BAA2B,QA8pBtC","sourcesContent":["\n\n\nexport enum ErrorCustomMessageReference {\n DEFAULT = 'default',\n CUSTOM = 'custom',\n NETWORK = 'network',\n AUTHENTICATION = 'authentication',\n AUTHORIZATION = 'authorization',\n VALIDATION = 'validation',\n NOT_FOUND = 'not_found',\n CONFLICT = 'conflict',\n RATE_LIMIT = 'rate_limit',\n INTERNAL = 'internal',\n DATABASE = 'database',\n EXTERNAL_SERVICE = 'external_service',\n UNKNOWN = 'unknown',\n UNCAUGHT_EXCEPTION = 'uncaught_exception',\n UNHANDLED_REJECTION = 'unhandled_rejection',\n BUSINESS_RULE = 'business_rule',\n INFRASTRUCTURE = 'infrastructure',\n CONFIGURATION = 'configuration',\n \n // Service-specific error references\n CONTROLLER_RESOURCE_VALIDATION_FAILED = 'controller_resource_validation_failed',\n CONTROLLER_RESOURCE_BUILD_ERROR = 'controller_resource_build_error',\n \n REPOSITORIES_REGISTRY_NOT_FOUND = 'repositories_registry_not_found',\n REPOSITORIES_REGISTRY_INITIALIZATION_FAILED = 'repositories_registry_initialization_failed',\n \n REPOSITORY_RESOURCE_OPERATION_FAILED = 'repository_resource_operation_failed',\n REPOSITORY_RESOURCE_SEARCH_NOT_CONFIGURED = 'repository_resource_search_not_configured',\n REPOSITORY_RESOURCE_SEARCH_NOT_ENABLED = 'repository_resource_search_not_enabled',\n REPOSITORY_RESOURCE_VALIDATION_FAILED = 'repository_resource_validation_failed',\n \n RESOURCE_ID_VALIDATION_FAILED = 'resource_id_validation_failed',\n \n // File validation errors\n FILE_ID_VALIDATION_FAILED = 'file_id_validation_failed',\n APP_ID_VALIDATION_FAILED = 'app_id_validation_failed',\n FILENAME_SANITIZATION_FAILED = 'filename_sanitization_failed',\n CONTENT_LENGTH_VALIDATION_FAILED = 'content_length_validation_failed',\n STREAM_VALIDATION_FAILED = 'stream_validation_failed',\n \n SERVICE_RESOURCE_VALIDATION_FAILED = 'service_resource_validation_failed',\n SERVICE_RESOURCE_TRANSFORMATION_FAILED = 'service_resource_transformation_failed',\n SERVICE_RESOURCE_BUILD_ERROR = 'service_resource_build_error',\n SERVICE_RESOURCE_OPERATION_FAILED = 'service_resource_operation_failed',\n SERVICE_RESOURCE_OPERATION_DISABLED = 'service_resource_operation_disabled',\n SERVICE_RESOURCE_REGISTRY_NOT_AVAILABLE = 'service_resource_registry_not_available',\n \n SERVICES_REGISTRY_INITIALIZATION_FAILED = 'services_registry_initialization_failed',\n \n MONGODB_CONNECTION_FAILED = 'mongodb_connection_failed',\n MONGODB_OPERATION_FAILED = 'mongodb_operation_failed',\n MONGODB_INITIALIZATION_FAILED = 'mongodb_initialization_failed',\n \n REDIS_CONNECTION_FAILED = 'redis_connection_failed',\n REDIS_OPERATION_FAILED = 'redis_operation_failed',\n REDIS_INITIALIZATION_FAILED = 'redis_initialization_failed',\n \n ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED = 'zod_converter_schema_conversion_failed',\n ZOD_CONVERTER_UNSUPPORTED_TYPE = 'zod_converter_unsupported_type',\n ZOD_CONVERTER_MODEL_BUILD_FAILED = 'zod_converter_model_build_failed',\n \n RESOURCES_REGISTRY_INITIALIZATION_FAILED = 'resources_registry_initialization_failed',\n RESOURCES_REGISTRY_REGISTRATION_FAILED = 'resources_registry_registration_failed',\n \n EXTERNAL_PROVIDER_REGISTRY_INITIALIZATION_FAILED = 'external_provider_registry_initialization_failed',\n \n EXECUTION_CONTEXT_SEALED_MODIFICATION = 'execution_context_sealed_modification',\n EXECUTION_CONTEXT_INITIALIZATION_FAILED = 'execution_context_initialization_failed',\n \n HTTP_SERVER_INITIALIZATION_FAILED = 'http_server_initialization_failed',\n \n START_APPLICATION_INITIALIZATION_FAILED = 'start_application_initialization_failed',\n START_APPLICATION_CONFIGURATION_FAILED = 'start_application_configuration_failed',\n START_APPLICATION_STARTUP_FAILED = 'start_application_startup_failed',\n \n AUTHORIZATIONS_MISSING_INITIATOR = 'authorizations_missing_initiator',\n AUTHORIZATIONS_VALIDATION_FAILED = 'authorizations_validation_failed',\n AUTHORIZATIONS_ACCESS_DENIED = 'authorizations_access_denied',\n AUTHORIZATIONS_NO_OPERATION_CONTEXT = 'authorizations_no_operation_context',\n\n JWT_SIGNING_FAILED = 'jwt_signing_failed',\n JWT_VERIFICATION_FAILED = 'jwt_verification_failed',\n JWT_TOKEN_GENERATION_FAILED = 'jwt_token_generation_failed',\n JWT_TOKEN_PARSING_FAILED = 'jwt_token_parsing_failed',\n JWT_TOKEN_EXPIRED = 'jwt_token_expired',\n JWT_TOKEN_INVALID = 'jwt_token_invalid',\n JWT_TOKEN_NOT_FOUND = 'jwt_token_not_found',\n JWT_TOKEN_NOT_VERIFIED = 'jwt_token_not_verified',\n JWT_TOKEN_NOT_SIGNED = 'jwt_token_not_signed',\n\n PLATFORM_HTTP_ERROR = 'platform_http_error',\n\n RESOURCE_OPERATION_CUSTOM_IMPLEMENTATION_NOT_IMPLEMENTED = 'resource_operation_custom_implementation_not_implemented',\n SERVICE_NOT_FOUND = 'service_not_found',\n SERVICE_CREATION_FAILED = 'service_creation_failed',\n RESOURCES_REGISTRY_OPERATION_PATH_NOT_FOUND = 'resources_registry_operation_path_not_found',\n RESOURCES_REGISTRY_FIELD_IDENTIFIER_NOT_FOUND = 'resources_registry_field_identifier_not_found',\n RESOURCES_REGISTRY_RELATIONSHIP_VALIDATION_FAILED = 'resources_registry_relationship_validation_failed',\n CONTROLLER_RESOURCE_NOT_FOUND = 'controller_resource_not_found',\n CONTROLLER_CUSTOM_NAME_CONFLICT = 'controller_custom_name_conflict',\n CONTROLLER_RESOURCE_ID_MUST_BE_UNIQUE = 'controller_resource_id_must_be_unique',\n\n AUTHENTICATION_API_KEY_INVALID = 'authentication_api_key_invalid',\n AUTHENTICATION_API_KEY_FAILED = 'authentication_api_key_failed',\n\n AUTHENTICATION_INVALID_TOKEN = 'authentication_invalid_token',\n\n AUTHENTICATION_NO_AUTHENTICATION_PROVIDED = 'authentication_no_authentication_provided',\n\n API_CALL_INITIATOR_PARAMETER_MISSING = 'api_call_initiator_parameter_missing',\n API_CALL_INITIATOR_PARAMETER_INCONSISTENT = 'api_call_initiator_parameter_inconsistent',\n API_CALL_INITIATOR_PARAMETER_UNSUPPORTED = 'api_call_initiator_parameter_unsupported',\n\n API_ORG_KEY_WITHOUT_ORG_ID = 'api_org_key_without_org_id',\n API_ORG_KEY_WRONG_RESOURCE = 'api_org_key_wrong_resource',\n\n AUTHENTICATION_JWT_TOKEN_FAILED = 'authentication_jwt_token_failed',\n\n AUTHENTICATION_USER_NOT_FOUND = 'authentication_user_not_found',\n AUTHENTICATION_USER_NOT_ACTIVE = 'authentication_user_not_active',\n\n AUTHENTICATION_USER_NOT_AUTHORIZED = 'authentication_user_not_authorized',\n AUTHENTICATION_USER_CREDENTIALS_NOT_FOUND = 'authentication_user_credentials_not_found',\n AUTHENTICATION_USER_CREDENTIALS_INVALID = 'authentication_user_credentials_invalid',\n\n // Authentication session and flow specific errors\n AUTHENTICATION_SESSION_INVALID = 'authentication_session_invalid',\n AUTHENTICATION_SESSION_EXPIRED = 'authentication_session_expired',\n AUTHENTICATION_ACCOUNT_LOCKED = 'authentication_account_locked',\n AUTHENTICATION_MFA_REQUIRED = 'authentication_mfa_required',\n /** M14: SSO required for this org — password login grace period exhausted or not allowed */\n AUTHENTICATION_SSO_REQUIRED = 'authentication_sso_required',\n AUTHENTICATION_EMAIL_REQUIRED = 'authentication_email_required',\n AUTHENTICATION_METHOD_NOT_SUPPORTED = 'authentication_method_not_supported',\n /** W2.2: Password has expired per passwordPolicy.expiryDays. User must change password before tokens are issued. */\n AUTHENTICATION_PASSWORD_EXPIRED = 'authentication_password_expired',\n /** W3.1b: User's userTypes[] does not include the resolved activeUserType for this application. */\n AUTHENTICATION_USER_TYPE_MISMATCH = 'authentication_user_type_mismatch',\n AUTHENTICATION_NOT_IMPLEMENTED = 'authentication_not_implemented',\n /** W7.1: Operation requires re-authentication (step-up auth). Frontend should prompt re-auth dialog. */\n STEP_UP_REQUIRED = 'step_up_required',\n /** W7.2: Cross-organization SSO access is disabled. User already has enterprise SSO link from another org. */\n CROSS_ORG_SSO_BLOCKED = 'cross_org_sso_blocked',\n\n APP_CONFIGURATION_UNAUTHORIZED = 'app_configuration_unauthorized',\n APP_CONFIGURATION_NOT_INITIALIZED = 'app_configuration_not_initialized',\n\n \n // Frontend form errors\n FRONTEND_FORM_READ_OPERATION_NOT_AVAILABLE = 'frontend_form_read_operation_not_available',\n \n // Frontend navigation errors\n FRONTEND_NAVIGATION_INVALID_URL_PARAMETERS = 'frontend_navigation_invalid_url_parameters',\n FRONTEND_NAVIGATION_MISSING_REQUIRED_PARAMETERS = 'frontend_navigation_missing_required_parameters',\n FRONTEND_NAVIGATION_UNRESOLVED_ROUTE_PARAMETERS = 'frontend_navigation_unresolved_route_parameters',\n\n // Frontend resource operation errors\n FRONTEND_RESOURCE_OPERATION_NOT_FOUND = 'frontend_resource_operation_not_found',\n FRONTEND_RESOURCE_UNSUPPORTED_OPERATION_TYPE = 'frontend_resource_unsupported_operation_type',\n FRONTEND_RESOURCE_SEARCH_OPERATION_INVALID = 'frontend_resource_search_operation_invalid',\n FRONTEND_RESOURCE_UNSUPPORTED_HTTP_METHOD = 'frontend_resource_unsupported_http_method',\n FRONTEND_RESOURCE_NO_ENDPOINT_AVAILABLE = 'frontend_resource_no_endpoint_available',\n FRONTEND_RESOURCE_NO_ROUTE_PATHS_AVAILABLE = 'frontend_resource_no_route_paths_available',\n FRONTEND_RESOURCE_NO_CALLBACK_URL = 'frontend_resource_no_callback_url',\n FRONTEND_RESOURCE_RESPONSE_VALIDATION_FAILED = 'frontend_resource_response_validation_failed',\n\n // FK/PK resolution errors (shared: used by both frontend and backend registries)\n REGISTRY_FK_MAP_COLLISION = 'registry_fk_map_collision',\n\n // FK/PK resolution errors (frontend-specific)\n FRONTEND_FK_RESOLUTION_FAILED = 'frontend_fk_resolution_failed',\n FRONTEND_RESOURCE_FIELD_IDENTIFIER_NOT_FOUND = 'frontend_resource_field_identifier_not_found',\n FRONTEND_RESOURCES_NOT_INITIALIZED = 'frontend_resources_not_initialized',\n\n // Schema Family Builder errors\n SCHEMA_FAMILY_INVALID_DISCRIMINATOR = 'schema_family_invalid_discriminator',\n SCHEMA_FAMILY_UNACCOUNTED_VALUES = 'schema_family_unaccounted_values',\n SCHEMA_FAMILY_DUPLICATE_VALUES = 'schema_family_duplicate_values',\n\n // Database constraint errors\n UNIQUE_CONSTRAINT_VIOLATION = 'unique_constraint_violation',\n VERSION_CONFLICT = 'version_conflict',\n\n // Field validation errors\n VALIDATE_FIELD_NOT_UNIQUE = 'validate_field_not_unique',\n VALIDATE_FIELD_NOT_FOUND = 'validate_field_not_found',\n VALIDATE_FIELD_NOT_UNIQUE_FIELD = 'validate_field_not_unique_field',\n\n /** Password does not meet policy; context.violations contains i18n label keys (PasswordPolicyViolationCode) */\n VALIDATION_PASSWORD_POLICY_VIOLATION = 'validation_password_policy_violation',\n\n // Queue/Job errors\n QUEUE_CONNECTION_FAILED = 'queue_connection_failed',\n QUEUE_PUBLISH_FAILED = 'queue_publish_failed',\n QUEUE_CONSUME_FAILED = 'queue_consume_failed',\n QUEUE_CHANNEL_CLOSED = 'queue_channel_closed',\n QUEUE_INITIALIZATION_FAILED = 'queue_initialization_failed',\n \n JOB_EXECUTION_FAILED = 'job_execution_failed',\n JOB_TIMEOUT = 'job_timeout',\n JOB_MAX_RETRIES_EXCEEDED = 'job_max_retries_exceeded',\n JOB_DEAD_LETTERED = 'job_dead_lettered',\n JOB_PAYLOAD_TOO_LARGE = 'job_payload_too_large',\n JOB_PAYLOAD_STORAGE_FAILED = 'job_payload_storage_failed',\n JOB_PAYLOAD_RETRIEVAL_FAILED = 'job_payload_retrieval_failed',\n JOB_NOT_FOUND = 'job_not_found',\n JOB_ALREADY_PROCESSED = 'job_already_processed',\n JOB_CANCELLED = 'job_cancelled',\n \n JOB_SCHEDULED_SIGNATURE_INVALID = 'job_scheduled_signature_invalid',\n JOB_SCHEDULED_SIGNATURE_EXPIRED = 'job_scheduled_signature_expired',\n JOB_SCHEDULED_UNAUTHORIZED = 'job_scheduled_unauthorized',\n \n JOB_OPERATION_PATH_NOT_FOUND = 'job_operation_path_not_found',\n JOB_EXECUTION_CONTEXT_INVALID = 'job_execution_context_invalid',\n JOB_BATCH_REF_NOT_FOUND = 'job_batch_ref_not_found',\n\n // Feature gating errors\n FEATURE_NOT_AVAILABLE = 'feature_not_available',\n FEATURE_LIMIT_EXCEEDED = 'feature_limit_exceeded',\n INSUFFICIENT_CREDITS = 'insufficient_credits',\n\n // Consumable Token errors\n CONSUMABLE_TOKEN_NOT_FOUND = 'consumable_token_not_found',\n CONSUMABLE_TOKEN_EXPIRED = 'consumable_token_expired',\n CONSUMABLE_TOKEN_ALREADY_CONSUMED = 'consumable_token_already_consumed',\n CONSUMABLE_TOKEN_REVOKED = 'consumable_token_revoked',\n CONSUMABLE_TOKEN_TYPE_MISMATCH = 'consumable_token_type_mismatch',\n CONSUMABLE_TOKEN_CONTEXT_MISMATCH = 'consumable_token_context_mismatch',\n CONSUMABLE_TOKEN_NOT_ACCEPTED_FOR_OPERATION = 'consumable_token_not_accepted_for_operation',\n CONSUMABLE_TOKEN_RACE_CONDITION = 'consumable_token_race_condition',\n CONSUMABLE_TOKEN_FILE_SHARING_DISABLED = 'consumable_token_file_sharing_disabled',\n /** An upload grant was presented on an upload route it was not minted for (other resource, field, operation kind, or row). */\n FILE_UPLOAD_GRANT_TARGET_MISMATCH = 'file_upload_grant_target_mismatch',\n /** A grant was requested with a lifetime above the engine ceiling; refused, never clamped. */\n FILE_UPLOAD_GRANT_DURATION_EXCEEDS_MAX = 'file_upload_grant_duration_exceeds_max',\n /** The caller's execution type may not mint a grant: a grant may not mint a grant, and an anonymous session has no subject to attribute the file to. */\n FILE_UPLOAD_GRANT_MINTER_NOT_ELIGIBLE = 'file_upload_grant_minter_not_eligible',\n /** No upload grant matches the presented value (never says whether one existed). */\n FILE_UPLOAD_GRANT_NOT_FOUND = 'file_upload_grant_not_found',\n /** W7.3b: ADDITIVE policy requires x-consumable-token header alongside JWT/API-key auth. */\n ADDITIVE_TOKEN_REQUIRED = 'additive_token_required',\n /** revocation-B1: requested one-off session `expiresIn` exceeds this user type's max-duration cap. */\n ONE_OFF_SESSION_DURATION_EXCEEDS_MAX = 'one_off_session_duration_exceeds_max',\n\n // Invitation acceptance / registration errors (user-directed)\n /** Transient failure verifying the invitation's organization during accept; the single-use token is NOT consumed, so the invitee can safely retry. */\n INVITATION_ORG_VERIFICATION_FAILED = 'invitation_org_verification_failed',\n /** The organization is directory-managed (SCIM): no local credential (password/passkey/magic-link) can be set. The invitee must sign in via SSO. */\n AUTHENTICATION_SCIM_LOCAL_CREDENTIAL_BLOCKED = 'authentication_scim_local_credential_blocked',\n /**\n * The invitation link cannot be used: it is unrecognised, has expired, was already used, or the\n * invitation itself is no longer active. Ask the inviting administrator to send a new invitation.\n *\n * DELIBERATELY UNIFORM across every cause (unrecognised / expired / already-consumed token, wrong\n * token type, missing invitation reference, non-INVITED or orphaned membership, or a revoke that\n * raced the accept). All three PUBLIC token-based endpoints (`getInvitationInfo`,\n * `acceptInvitation`, `rejectInvitation`) throw THIS single reference — and all throw\n * `ErrorType.AUTHENTICATION` — so a token holder cannot distinguish \"unrecognised token\" from\n * \"recognised-but-superseded invite\". A `customMessageReference` is a top-level field that SURVIVES\n * error sanitization (unlike `context.message`), so a per-cause sibling WOULD be client-visible and\n * would re-open that oracle: do NOT add one for those endpoints. The granular cause belongs in the\n * backend logs. (Authenticated, ownership-gated in-app paths may use granular references — they are\n * gated by userId, not token possession, so they leak nothing.)\n */\n INVITATION_NO_LONGER_VALID = 'invitation_no_longer_valid',\n /** The invitation is addressed to a different account than the authenticated caller. */\n INVITATION_NOT_ADDRESSED_TO_CALLER = 'invitation_not_addressed_to_caller',\n /** The invitee already has an account: accept without setting a password, then sign in with the existing login method. */\n INVITATION_EXISTING_ACCOUNT_NO_PASSWORD = 'invitation_existing_account_no_password',\n /** Self-service registration is disabled for this application / frontend service / user type. */\n REGISTRATION_DISABLED = 'registration_disabled',\n /** Registration is by invitation only; a valid invitation is required to create an account. */\n REGISTRATION_INVITATION_ONLY = 'registration_invitation_only',\n /** Registration for this user type is admin-provisioned only: accounts are created by an administrator, so there is no self-service sign-up or invitation-accept path. Distinct from REGISTRATION_DISABLED (registration off entirely) and REGISTRATION_INVITATION_ONLY (self-complete via an invitation token). */\n REGISTRATION_ADMIN_ONLY = 'registration_admin_only',\n /** A password is required to complete this registration. */\n REGISTRATION_PASSWORD_REQUIRED = 'registration_password_required',\n /** Registration could not be completed due to a transient server error; the user may retry. */\n REGISTRATION_FAILED = 'registration_failed',\n /** The account exists but cannot be activated in its current state. */\n ACCOUNT_ACTIVATION_NOT_ALLOWED = 'account_activation_not_allowed',\n\n // Auth / session flow errors (user-directed) — added with the i18n-bypass remediation\n /** A first authentication factor must be completed before this step. */\n AUTHENTICATION_FIRST_FACTOR_REQUIRED = 'authentication_first_factor_required',\n /** Magic-link authentication is disabled for this application. */\n AUTHENTICATION_MAGIC_LINK_DISABLED = 'authentication_magic_link_disabled',\n /** No verified phone number is available for SMS one-time-passcode delivery. */\n AUTHENTICATION_NO_VERIFIED_PHONE = 'authentication_no_verified_phone',\n /** The current session state does not allow completing organization onboarding. */\n AUTHENTICATION_ONBOARDING_STATE_INVALID = 'authentication_onboarding_state_invalid',\n /** The session was lost after magic-link verification; the user must restart sign-in. */\n AUTHENTICATION_SESSION_LOST = 'authentication_session_lost',\n /** The session carries no associated email address. */\n AUTHENTICATION_SESSION_NO_EMAIL = 'authentication_session_no_email',\n /** The session carries no associated user id. */\n AUTHENTICATION_SESSION_NO_USER = 'authentication_session_no_user',\n /** SMS one-time-passcode authentication is disabled for this application. */\n AUTHENTICATION_SMS_OTP_DISABLED = 'authentication_sms_otp_disabled',\n /** The refresh-token cookie is missing from the request. */\n AUTHENTICATION_REFRESH_TOKEN_REQUIRED = 'authentication_refresh_token_required',\n /** The userId in the URL does not match the authenticated user. */\n AUTHORIZATION_USER_ID_MISMATCH = 'authorization_user_id_mismatch',\n /**\n * The scope in the URL (e.g. `/organizations/{id}/…`) does not match the authenticated MACHINE\n * token's bound scope. Symmetric with {@link AUTHORIZATION_USER_ID_MISMATCH} for the machine arm:\n * a machine token is bound to exactly one org/app, so a URL naming a different scope is rejected —\n * this prevents the token's context map (URL-derived) from scoping a query to a different tenant\n * than the token authorizes.\n */\n AUTHORIZATION_MACHINE_SCOPE_MISMATCH = 'authorization_machine_scope_mismatch',\n\n // MFA flow errors (user-directed)\n /** The current session state does not allow completing MFA enrollment. */\n MFA_ENROLLMENT_STATE_INVALID = 'mfa_enrollment_state_invalid',\n /** No MFA method is enrolled for this account yet. */\n MFA_NOT_ENROLLED = 'mfa_not_enrolled',\n /** A TOTP authenticator is already enrolled for this account. */\n MFA_TOTP_ALREADY_ENROLLED = 'mfa_totp_already_enrolled',\n /** The provided TOTP code did not verify. */\n MFA_TOTP_CODE_INVALID = 'mfa_totp_code_invalid',\n /** No pending TOTP setup exists; enrollment must be initiated first. */\n MFA_TOTP_SETUP_NOT_INITIATED = 'mfa_totp_setup_not_initiated',\n\n // Config / request-contract errors (user-directed)\n /** The organization name is required. */\n ORG_NAME_REQUIRED = 'org_name_required',\n /**\n * An organization unit cannot be deleted because child units still hang off it.\n *\n * Emitted as `ErrorType.CONFLICT` (409). CONFLICT is one of the few error types that expose\n * `context` to the client, so the blocking dependent is surfaced by name — `blockingChildUnitId`\n * when a child unit blocks, `blockingUnitMemberId` when a member assignment does. TWO distinct\n * dependents share this one code; branch on the context key, not on the message.\n *\n * Unlike every other `ORGANIZATIONS` child, the unit tree's self-edge\n * (`ORGANIZATION_UNITS -> ORGANIZATION_UNITS` on `parentUnitId`) declares NO `onParentDelete`\n * cascade, so deleting an interior node would strand its whole subtree behind a dangling\n * `parentUnitId` and a stale materialized `path`.\n *\n * MOVE is the remedy to point a client at: it re-parents a child onto another node and rewrites\n * the materialized `path` of its whole subtree in one transaction. (Deleting the subtree\n * bottom-up also works, leaf by leaf.) Since `parentUnitId` became `.excludeFromUpdate()` in the\n * same pass that implemented MOVE, MOVE is the ONLY way to re-home a branch — so do not describe\n * a plain update as an alternative.\n *\n * ⚠️ Direct per-unit DELETE only. Deleting the whole ORGANIZATION is a different path: that\n * cascade IS enabled and removes every unit of the tenant at once (every unit carries the\n * tenant's `organizationId`), and it runs at the repository level, so this guard is correctly\n * not consulted there.\n */\n ORGANIZATION_UNIT_HAS_DEPENDENTS = 'organization_unit_has_dependents',\n /**\n * A MOVE names a destination inside the moved unit's own subtree — one of its descendants, or the\n * unit itself. Either detaches the branch into a cycle: a node below its own descendant has no\n * route back to the root.\n *\n * Distinct from {@link ORGANIZATION_UNIT_CONFLICT}: this one names the re-parenting operation, so\n * an API client can branch on \"the destination is illegal\" without re-deriving it from a generic\n * update conflict. Distinct from {@link ORGANIZATION_UNIT_CODE_EXISTS}, which a MOVE can also\n * raise: there the destination is legal and the unit's own `code` is what collides, so renaming\n * the unit is a remedy that picking another destination is not.\n */\n ORGANIZATION_UNIT_MOVE_CONFLICT = 'organization_unit_move_conflict',\n /**\n * An archive/restore is not a legal transition from the node's current state — already archived;\n * not archived; or a restore whose parent branch is still archived.\n *\n * Sibling-code collisions are NOT reported here; they carry\n * {@link ORGANIZATION_UNIT_CODE_EXISTS}, which names the taken value.\n */\n ORGANIZATION_UNIT_CONFLICT = 'organization_unit_conflict',\n /**\n * A lifecycle verb was invoked from a state it may not transition out of — suspending an\n * already-suspended row, reactivating one that was never suspended, deactivating a terminal\n * account.\n *\n * Raised by the shared status-transition implementation\n * (`createResourceStatusTransitionFactory`) and therefore resource-agnostic by design: the same\n * reference covers organizations, organization members, and users, because \"this is not a legal\n * transition from the current state\" is one API-visible outcome regardless of which state machine\n * refused it. The error context names the resource, operation, current status and permitted\n * source statuses, so a client has everything it needs without a per-resource reference.\n *\n * Distinct from a generic {@link CONFLICT}: a client can branch on \"the row is in the wrong state\n * for this verb\" and re-read to show the real state, rather than treating it as an opaque clash.\n *\n * NOTE: most of these transitions ALSO declare an `enabledCondition`, which rejects the same\n * situation earlier with `SERVICE_RESOURCE_OPERATION_DISABLED`. This reference covers the cases\n * that gate cannot: a transition reached through a non-URL path, and the re-check the\n * implementation performs against the row it actually loaded.\n */\n RESOURCE_STATUS_TRANSITION_CONFLICT = 'resource_status_transition_conflict',\n /**\n * A unit `code` is already used by a sibling under the same parent.\n *\n * Sibling-scoped, not org-wide: two teams called `sales` under different divisions are a\n * legitimate org chart, so the identity is (`organizationId`, `parentUnitId`, `code`). Units\n * carrying no `code` at all are unconstrained — any number of them may sit under one parent.\n *\n * Raised by every operation that can introduce the collision (CREATE, UPDATE rename, MOVE) and by\n * the database unique index that backs them. Those must agree: the index cannot know which\n * operation was running, so an operation-specific code would make the SAME condition report\n * differently depending on which write won a race.\n */\n ORGANIZATION_UNIT_CODE_EXISTS = 'organization_unit_code_exists',\n /**\n * The requested organization `slug` is already taken.\n *\n * The slug is the tenant's URL-safe identity and is `.excludeFromUpdate()` — creation-time\n * identity, not an editable label. That is why this must be refused at CREATE rather than\n * reconciled later: a collision that got written could not be resolved through the API at all.\n *\n * Raised by the database unique index on `slug`. Uniqueness is collection-wide, which IS\n * per-application: an application's organizations live in that application's own database.\n */\n ORGANIZATION_SLUG_EXISTS = 'organization_slug_exists',\n /**\n * The requested application `appSlug` is already taken.\n *\n * GLOBAL across the platform, deliberately NOT compounded with `organizationId`, even though\n * `wildoApplication` is an organization-scoped resource. The slug is not a label — it is the sole\n * input, alongside the environment id, from which every provisioned backing resource takes its\n * name: `buildApplicationNamespace(appSlug, environmentId)` (no organization component), and from\n * it the application database, the database username and the RabbitMQ vhost. Two applications\n * sharing a slug in DIFFERENT organizations would therefore be handed the same database and the\n * same vhost.\n *\n * Raised by the database unique index on `appSlug`, and reachable only at CREATE: the field is\n * `.excludeFromUpdate()`, so it is creation-time identity rather than an editable name.\n *\n * Added 2026-08-19 after the absence of this constraint let a second live `wonder-todos` row be\n * inserted beside the first. The upsert looks up `{ appSlug }` but the repository applies the\n * resource's contextual primary-scope filter, so once the platform organization was re-minted the\n * lookup could no longer see the existing row and INSERTED rather than resolved. The orphaned\n * lineage then kept publishing into the queues of an application that was no longer live, which\n * surfaced only as a RabbitMQ `403 ACCESS_REFUSED` — never as anything naming a duplicate.\n */\n APPLICATION_SLUG_EXISTS = 'application_slug_exists',\n /** The client must send the X-Frontend-Service-Name header. */\n FRONTEND_SERVICE_HEADER_REQUIRED = 'frontend_service_header_required',\n\n // Webhook errors (user-directed)\n /** Inbound webhook signature verification failed. */\n WEBHOOK_SIGNATURE_INVALID = 'webhook_signature_invalid',\n\n // Billing errors\n BILLING_NOT_INITIALIZED = 'billing_not_initialized',\n BILLING_ACCOUNT_NOT_FOUND = 'billing_account_not_found',\n BILLING_NO_PROVIDER_CUSTOMER = 'billing_no_provider_customer',\n BILLING_SUBSCRIPTION_NOT_FOUND = 'billing_subscription_not_found',\n BILLING_NO_ACTIVE_SUBSCRIPTION = 'billing_no_active_subscription',\n BILLING_NO_PROVIDER_SUBSCRIPTION = 'billing_no_provider_subscription',\n BILLING_NO_PROVIDER_PRICE = 'billing_no_provider_price',\n BILLING_PRODUCT_NOT_FOUND = 'billing_product_not_found',\n BILLING_PRICE_NOT_FOUND = 'billing_price_not_found',\n BILLING_INVALID_PRODUCT_TYPE = 'billing_invalid_product_type',\n BILLING_PLAN_TIER_REQUIRED = 'billing_plan_tier_required',\n BILLING_ADDON_NOT_ON_SUBSCRIPTION = 'billing_addon_not_on_subscription',\n BILLING_LOCAL_WRITE_FAILED = 'billing_local_write_failed',\n BILLING_SUBSCRIPTION_NO_ITEMS = 'billing_subscription_no_items',\n BILLING_ACCOUNT_UPDATE_FAILED = 'billing_account_update_failed',\n BILLING_SUBSCRIPTION_UPDATE_FAILED = 'billing_subscription_update_failed',\n BILLING_PROMOTION_NOT_FOUND = 'billing_promotion_not_found',\n BILLING_INSUFFICIENT_CREDITS = 'billing_insufficient_credits',\n BILLING_CREDIT_POOL_NOT_FOUND = 'billing_credit_pool_not_found',\n BILLING_PROMOTION_INVALID = 'billing_promotion_invalid',\n BILLING_PRODUCT_SCOPE_MISMATCH = 'billing_product_scope_mismatch',\n /**\n * A purchase named a product and a price that do not belong together.\n *\n * `Price.productId` is a declared foreign key, so every price already knows its product. The\n * purchase paths, however, used to resolve the two INDEPENDENTLY — product by key, price by id —\n * and never consulted that FK. The provider is billed the price while the local subscription item\n * records the product, and entitlements derive from the product: a caller pairing a premium\n * product key with a cheap price id therefore received premium entitlements at the cheap price.\n *\n * Raised as `ErrorType.VALIDATION` (400) — the payload is internally inconsistent, not unauthorized.\n */\n BILLING_PRICE_PRODUCT_MISMATCH = 'billing_price_product_mismatch',\n BILLING_SCOPE_NOT_ENABLED = 'billing_scope_not_enabled',\n /**\n * Hard removal of a billing account was refused because retained financial children\n * (subscriptions / invoice refs / usage records / credit pools) still reference it.\n *\n * Emitted as `ErrorType.CONFLICT` (409). CONFLICT is one of the few error types that\n * expose `context` to the client, so the blocking child families are surfaced by name.\n *\n * @see the billing-retention rationale at the `Scope -> BillingAccounts` declaration in\n * `resources-registry.shared.core.definitions.ts` — the children are RETAINED on purpose,\n * and this account row holds the only local `providerCustomerId` that maps them back to\n * the provider customer.\n */\n BILLING_ACCOUNT_HAS_DEPENDENTS = 'billing_account_has_dependents',\n\n // SAML Protocol Engine errors (AUTH-2)\n SAML_ASSERTION_INVALID = 'saml_assertion_invalid',\n SAML_SIGNATURE_INVALID = 'saml_signature_invalid',\n SAML_AUDIENCE_MISMATCH = 'saml_audience_mismatch',\n SAML_REPLAY_DETECTED = 'saml_replay_detected',\n SAML_EXPIRED = 'saml_expired',\n SAML_DOMAIN_NOT_VERIFIED = 'saml_domain_not_verified',\n SAML_CERT_EXPIRED = 'saml_cert_expired',\n SAML_DECRYPTION_FAILED = 'saml_decryption_failed',\n SAML_SP_KEY_MISMATCH = 'saml_sp_key_mismatch',\n SAML_UNSUPPORTED_ENCRYPTION = 'saml_unsupported_encryption',\n SAML_TRANSIENT_NAMEID = 'saml_transient_nameid',\n SAML_INVALID_NAME_ID = 'saml_invalid_name_id',\n SAML_MOBILE_NOT_SUPPORTED = 'saml_mobile_not_supported',\n SAML_MULTIPLE_ASSERTIONS = 'saml_multiple_assertions',\n SAML_BINDING_MISMATCH = 'saml_binding_mismatch',\n SAML_METADATA_PARSE_ERROR = 'saml_metadata_parse_error',\n SAML_INVALID_IN_RESPONSE_TO = 'saml_invalid_in_response_to',\n SAML_ORGANIZATION_REQUIRED = 'saml_organization_required',\n SAML_IDP_INITIATED_NOT_ALLOWED = 'saml_idp_initiated_not_allowed',\n SAML_AMBIGUOUS_IDP = 'saml_ambiguous_idp',\n SAML_UNKNOWN_IDP = 'saml_unknown_idp',\n SAML_DESTINATION_MISMATCH = 'saml_destination_mismatch',\n /** Java runtime required for SAML XSD validation (samlify dependency). Dev: install JRE or use mock parser in tests. */\n SAML_JAVA_REQUIRED = 'saml_java_required',\n\n // Aggregation / Chart errors\n CHART_NOT_FOUND = 'chart_not_found',\n AGGREGATION_TIMEOUT = 'aggregation_timeout',\n AGGREGATION_MAX_BUCKETS_EXCEEDED = 'aggregation_max_buckets_exceeded',\n AGGREGATION_FIELD_ACCESS_DENIED = 'aggregation_field_access_denied',\n AGGREGATION_COMPUTED_EXPRESSION_ERROR = 'aggregation_computed_expression_error',\n AGGREGATION_JOIN_ACCESS_DENIED = 'aggregation_join_access_denied',\n /** User lacks permission to view a chart's aggregated data (missing LIST access, chart role restriction, or insufficient roles). */\n AGGREGATION_ACCESS_DENIED = 'aggregation_access_denied',\n /** A required scope/context value (org id, user id, unknown primary scope, or context-filter value) could not be resolved to authorize the aggregation. */\n AGGREGATION_SCOPE_UNRESOLVED = 'aggregation_scope_unresolved',\n /** A context filter conflicts with or would override the enforced primary-scope lock on the aggregation. */\n AGGREGATION_SCOPE_CONFLICT = 'aggregation_scope_conflict',\n /** Aggregation execution requires an executionContext unless skipAuthorization is explicitly enabled. */\n AGGREGATION_EXECUTION_CONTEXT_REQUIRED = 'aggregation_execution_context_required',\n\n // Agent / flows-actors errors (user-directed)\n /** Selected AI provider/protocol is not enabled in application configuration. */\n AGENT_PROVIDER_NOT_ENABLED = 'agent_provider_not_enabled',\n /** Provider not found or its LLM runtime contract is unavailable. */\n AGENT_PROVIDER_NOT_FOUND = 'agent_provider_not_found',\n /** Requested agent operation key is not supported by the provider/runtime. */\n AGENT_OPERATION_NOT_SUPPORTED = 'agent_operation_not_supported',\n /** Image provider client does not expose image generation. */\n AGENT_IMAGE_GENERATION_NOT_SUPPORTED = 'agent_image_generation_not_supported',\n /** Image generation requires a non-empty prompt on the invocation input. */\n AGENT_IMAGE_PROMPT_REQUIRED = 'agent_image_prompt_required',\n /** CLI runtime returned output that was missing, malformed, or failed schema validation. */\n AGENT_CLI_OUTPUT_INVALID = 'agent_cli_output_invalid',\n /** Structured-generation operation requires a Zod schema on the invocation input. */\n AGENT_STRUCTURED_SCHEMA_REQUIRED = 'agent_structured_schema_required',\n /** AI provider client does not support any known model initialization pattern. */\n AGENT_MODEL_INITIALIZATION_FAILED = 'agent_model_initialization_failed',\n /** No messages provided for the (multimodal) chat completion. */\n AGENT_MESSAGES_REQUIRED = 'agent_messages_required',\n /** The referenced agent is not active. */\n AGENT_NOT_ACTIVE = 'agent_not_active',\n /** The referenced system is not a flow. */\n FLOW_INVALID_KIND = 'flow_invalid_kind',\n /** The referenced flow is not active. */\n FLOW_NOT_ACTIVE = 'flow_not_active',\n /** The referenced system is not an actor. */\n ACTOR_INVALID_KIND = 'actor_invalid_kind',\n /** The referenced actor is not active. */\n ACTOR_NOT_ACTIVE = 'actor_not_active',\n /** Chart parent context resource is not accessible to the caller. */\n CHART_PARENT_CONTEXT_INACCESSIBLE = 'chart_parent_context_inaccessible',\n\n // Auth-methods / SSO errors (user-directed)\n /** Authentication is disabled for this frontend service + user type (a config gate, NOT session invalidation). */\n AUTHENTICATION_DISABLED_FOR_SERVICE = 'authentication_disabled_for_service',\n /** The requested OAuth2/social provider is not registered or available. */\n OAUTH_PROVIDER_NOT_FOUND = 'oauth_provider_not_found',\n /** The requested SSO connection was not found or is disabled. */\n SSO_CONNECTION_NOT_FOUND = 'sso_connection_not_found',\n\n // Config / data-seeding / email errors (user-directed)\n /** The frontendServiceName query parameter is required to fetch application configuration. */\n APP_CONFIGURATION_FRONTEND_SERVICE_REQUIRED = 'app_configuration_frontend_service_required',\n /** The frontendServiceName does not match any configured frontend service identity. */\n APP_CONFIGURATION_UNKNOWN_FRONTEND_SERVICE = 'app_configuration_unknown_frontend_service',\n /** The data-seeding admin endpoint secret header is missing. */\n SEED_ADMIN_SECRET_REQUIRED = 'seed_admin_secret_required',\n /** The data-seeding admin endpoint secret header did not match. */\n SEED_ADMIN_SECRET_INVALID = 'seed_admin_secret_invalid',\n /** Invalid query parameters for the data-seeding admin list-runs endpoint. */\n SEED_ADMIN_INVALID_QUERY = 'seed_admin_invalid_query',\n /** Invalid request body for the data-seeding admin rerun endpoint. */\n SEED_ADMIN_INVALID_PAYLOAD = 'seed_admin_invalid_payload',\n /** updateSeedMetadata targeted a row _id that does not exist for the resource. */\n REPOSITORY_RESOURCE_SEED_METADATA_NOT_FOUND = 'repository_resource_seed_metadata_not_found',\n /** Email recipient/cc/bcc/replyTo list contains an address that failed format validation. */\n EMAIL_INVALID_ADDRESS_FORMAT = 'email_invalid_address_format',\n\n // File operation errors (user-directed)\n /** The requested file does not exist or is not accessible. */\n FILE_NOT_FOUND = 'file_not_found',\n /** File cannot move to the requested status from its current state. */\n FILE_INVALID_STATUS_TRANSITION = 'file_invalid_status_transition',\n /** File must be in UPLOADED status before it can be linked to a resource. */\n /** The file's status is not one from which it may be linked (`FILE_LINKABLE_STATUSES`); the context carries the status and the admitted set. */\n FILE_NOT_LINKABLE = 'file_not_linkable',\n /** The file's antivirus scan is still in flight; linking is refused until it lands `CLEAN`. Retryable — the file is not wrong, only not yet known to be safe. */\n FILE_SCAN_IN_PROGRESS = 'file_scan_in_progress',\n /** File is already linked to a different resource. */\n FILE_ALREADY_LINKED = 'file_already_linked',\n /** File has already been deleted. */\n FILE_ALREADY_DELETED = 'file_already_deleted',\n /** Access to the requested file is denied. */\n FILE_ACCESS_DENIED = 'file_access_denied',\n /** File cannot be deleted while the AV scan is in progress. */\n FILE_DELETE_WHILE_PROCESSING = 'file_delete_while_processing',\n /** A file linked to a resource cannot be deleted; unlink it first. */\n FILE_DELETE_LINKED_BLOCKED = 'file_delete_linked_blocked',\n /** Only the original uploader can delete this file. */\n FILE_DELETE_UPLOADER_ONLY = 'file_delete_uploader_only',\n /** The file share request body is invalid. */\n FILE_SHARE_REQUEST_INVALID = 'file_share_request_invalid',\n /** No file was provided in the upload request. */\n FILE_UPLOAD_NO_FILE = 'file_upload_no_file',\n /** Too many files provided for this field (exceeds the configured maximum). */\n FILE_TOO_MANY_FILES = 'file_too_many_files',\n /** This file field is system-generated and cannot receive uploads/writes. */\n FILE_GENERATED_FIELD_NOT_WRITABLE = 'file_generated_field_not_writable',\n /** This file field is not overridable; existing files cannot be replaced or removed. */\n FILE_FIELD_NOT_OVERRIDABLE = 'file_field_not_overridable',\n /** The file field value has an unexpected type (expected string, array, null, or undefined). */\n FILE_FIELD_VALUE_INVALID = 'file_field_value_invalid',\n /** A nested file field could not be updated safely because multiple array items changed at once. */\n FILE_NESTED_UPDATE_AMBIGUOUS = 'file_nested_update_ambiguous',\n /** uploadedBy and uploadedByEntityType must both be set or both omitted. */\n FILE_UPLOADER_FIELDS_INCONSISTENT = 'file_uploader_fields_inconsistent',\n /** Explicit uploader ownership does not match the current execution principal. */\n FILE_UPLOADER_MISMATCH = 'file_uploader_mismatch',\n /** A required scope identifier (application/organization/user id) is missing for this file operation. */\n FILE_SCOPE_IDENTIFIER_MISSING = 'file_scope_identifier_missing',\n /** The scope identifiers are invalid for the specified primary scope. */\n FILE_SCOPE_IDENTIFIER_INVALID = 'file_scope_identifier_invalid',\n /** The file access scope could not be derived from the execution context. */\n FILE_SCOPE_DERIVATION_FAILED = 'file_scope_derivation_failed',\n /** Text extraction is not supported for this file's MIME type. */\n FILE_TEXT_EXTRACTION_UNSUPPORTED_TYPE = 'file_text_extraction_unsupported_type',\n /**\n * The file's MIME type IS supported, but its bytes could not be parsed — corrupt, truncated,\n * or password-protected.\n *\n * Deliberately distinct from every storage/wiring failure that can also arise while extracting.\n * This one is a permanent property of the BYTES, so a batch consumer may skip the file and move\n * on; an unreachable storage backend is transient and must NOT be treated the same way. The RAG\n * ingestion sweep branches on exactly this distinction — see `RagIngestionBackendService`.\n */\n FILE_TEXT_EXTRACTION_FAILED = 'file_text_extraction_failed',\n /** The file's blob was not found in the storage backend. */\n FILE_NOT_FOUND_IN_STORAGE = 'file_not_found_in_storage',\n /** Access to the file in storage was denied. */\n FILE_STORAGE_ACCESS_DENIED = 'file_storage_access_denied',\n /** The storage key/path could not be composed (missing file name/id). */\n FILE_STORAGE_KEY_COMPOSITION_FAILED = 'file_storage_key_composition_failed',\n /** The provided storage reference is empty or invalid. */\n FILE_STORAGE_REF_INVALID = 'file_storage_ref_invalid',\n /** The storage reference does not belong to the current application namespace. */\n FILE_STORAGE_REF_FORBIDDEN = 'file_storage_ref_forbidden',\n /** The requested file path escapes the allowed storage directory. */\n FILE_PATH_TRAVERSAL_DETECTED = 'file_path_traversal_detected',\n\n /** A bulk relationship operation must provide either _ids or a filter selector. */\n BULK_RELATIONSHIP_SELECTOR_REQUIRED = 'bulk_relationship_selector_required',\n}"]}