permdock 0.5.0 → 0.6.0

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 (281) hide show
  1. package/dist/a2a/index.d.ts +5 -5
  2. package/dist/a2a/index.js +3 -3
  3. package/dist/{adoption-scan-B4R5fnMU.js → adoption-scan-DCYe60Pi.js} +1 -1
  4. package/dist/agent/index.d.ts +2 -2
  5. package/dist/agent/index.js +1 -1
  6. package/dist/ai-sdk/index.d.ts +4 -4
  7. package/dist/ai-sdk/index.js +3 -3
  8. package/dist/{approval-prompt-Djo_PyZc.d.ts → approval-prompt-DvSSPQJX.d.ts} +2 -2
  9. package/dist/approvals/index.d.ts +3 -3
  10. package/dist/approvals/index.js +3 -3
  11. package/dist/{approvals-DJ6Yd5z1.js → approvals-p1PGoVjb.js} +3 -3
  12. package/dist/{arazzo-B6lebmiQ.js → arazzo-41WuzHou.js} +1 -1
  13. package/dist/{arazzo-BWhNF-k0.js → arazzo-CaUVBn7D.js} +2 -2
  14. package/dist/astro/index.d.ts +6 -6
  15. package/dist/astro/index.js +2 -2
  16. package/dist/{audience-Dg8XsRaO.js → audience-DabClFLQ.js} +1 -1
  17. package/dist/authzen/index.d.ts +4 -4
  18. package/dist/authzen/index.js +2 -2
  19. package/dist/{automation-BMZPIVUM.d.ts → automation-BNM3TtDo.d.ts} +3 -3
  20. package/dist/better-auth/index.d.ts +2 -2
  21. package/dist/better-auth/index.js +1 -1
  22. package/dist/better-supabase/index.d.ts +7 -7
  23. package/dist/better-supabase/index.js +6 -6
  24. package/dist/{bind-CZzhx-Vj.js → bind-CAvgUuKs.js} +4 -4
  25. package/dist/{bind--9EFVYWF.d.ts → bind-DOyrv6zi.d.ts} +7 -7
  26. package/dist/{build-instance-BMnAudHn.js → build-instance-Bu_eDqYw.js} +1 -1
  27. package/dist/{capability-BSslw1QV.d.ts → capability-Drg-1YhL.d.ts} +2 -2
  28. package/dist/catalog/index.d.ts +5 -5
  29. package/dist/catalog/index.js +3 -3
  30. package/dist/catalog-BoWglDPI.js +1 -0
  31. package/dist/{catalog-R_A__RsH.js → catalog-DZVbrF-z.js} +1 -1
  32. package/dist/{catalog-BECMPrwc.js → catalog-HD2gf5mY.js} +2 -2
  33. package/dist/{catalog-doc-C9wjsfNY.js → catalog-doc-Cdn7-0pQ.js} +1 -1
  34. package/dist/chat/index.d.ts +1 -1
  35. package/dist/chat/index.js +2 -2
  36. package/dist/chat-sdk/index.d.ts +3 -3
  37. package/dist/claude-agent/index.d.ts +3 -3
  38. package/dist/claude-agent/index.js +2 -2
  39. package/dist/clerk/index.d.ts +3 -3
  40. package/dist/cli/bin.js +1 -1
  41. package/dist/cli/index.d.ts +3 -3
  42. package/dist/cli/index.js +2 -2
  43. package/dist/cloud/index.d.ts +8 -8
  44. package/dist/cloud/index.js +1 -1
  45. package/dist/{cloud-CIoHNevm.js → cloud-ytQ3uviA.js} +2 -2
  46. package/dist/{codemod-Bmj9dWMH.js → codemod-5mpSpnUY.js} +2 -2
  47. package/dist/{codemod-Cxvvc70T.js → codemod-ua2hHy7w.js} +1 -1
  48. package/dist/{collect-DloHbDVa.js → collect-Ci6akVwH.js} +2 -2
  49. package/dist/collect-D7eQDffE.js +1 -0
  50. package/dist/{collect-CrZJJnEF.js → collect-mLTY4nwb.js} +2 -2
  51. package/dist/compile/index.d.ts +1 -1
  52. package/dist/{compile-Ckm2HqBZ.d.ts → compile-1bsAezL0.d.ts} +3 -3
  53. package/dist/{completion-BqhRBJD8.js → completion-BTFrHZhX.js} +1 -1
  54. package/dist/{config-B46rm9sc.js → config-Bj2Ixq3d.js} +1 -1
  55. package/dist/{config-report-DUgj62Ai.js → config-report-DSpsLpCE.js} +2 -2
  56. package/dist/{context-bbFHR-0D.js → context-B_u3_bDJ.js} +2 -2
  57. package/dist/convex/index.d.ts +5 -5
  58. package/dist/convex/index.js +2 -2
  59. package/dist/{create-0VZ7Pdiu.d.ts → create-B30OMUOJ.d.ts} +5 -5
  60. package/dist/{create-BDS7wc3y.d.ts → create-CBMmFie-.d.ts} +9 -9
  61. package/dist/{create-C3b4B5eF.js → create-CGm28gyI.js} +4 -4
  62. package/dist/{create-BWRSXgOF.js → create-CQWIpUG-.js} +1 -1
  63. package/dist/{create-DnrmLnLW.js → create-DCF2SvoT.js} +4 -4
  64. package/dist/{create-BFfm17UA.d.ts → create-D_NmPOdH.d.ts} +7 -7
  65. package/dist/{credential-DM2um3ha.js → credential-BcoiejpY.js} +2 -2
  66. package/dist/{delegation-DaXVdDhM.js → delegation-j6-rc37o.js} +2 -2
  67. package/dist/delivery/index.d.ts +4 -4
  68. package/dist/delivery/index.js +1 -1
  69. package/dist/{denied-text-D8jDHgsl.d.ts → denied-text-CiFQNuMV.d.ts} +2 -2
  70. package/dist/{describe-BZUsixiL.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  71. package/dist/{diff-DCePiN6M.js → diff-3jbx6Rm4.js} +3 -3
  72. package/dist/{diff-CxZo9pTq.js → diff-CmuSD3vc.js} +1 -1
  73. package/dist/{doctor-CxiwSfqH.js → doctor-3ZqNHX_G.js} +2 -2
  74. package/dist/{doctor-DFjUxf2f.js → doctor-BdZw53-k.js} +14 -14
  75. package/dist/drizzle/index.d.ts +3 -3
  76. package/dist/elysia/index.d.ts +5 -5
  77. package/dist/elysia/index.js +3 -3
  78. package/dist/{errors-C2PXIv4c.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  79. package/dist/{evaluate-_R8QkWaf.js → evaluate-CNClBvcj.js} +81 -28
  80. package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-C_1vdSZc.d.ts} +3 -3
  81. package/dist/{evaluations-DZ2CbV5k.js → evaluations-beAooV0n.js} +1 -1
  82. package/dist/eve/index.d.ts +5 -5
  83. package/dist/eve/index.js +3 -3
  84. package/dist/express/index.d.ts +5 -5
  85. package/dist/express/index.js +3 -3
  86. package/dist/fastify/index.d.ts +5 -5
  87. package/dist/fastify/index.js +3 -3
  88. package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-DD_gfmrC.js} +2 -2
  89. package/dist/{fetch-adapter-qKJBuRqy.d.ts → fetch-adapter-Dw0MTS3D.d.ts} +4 -4
  90. package/dist/{fields-D9tPVUUS.js → fields-OYG_JR78.js} +3 -3
  91. package/dist/{from-snapshot-D2lZt4Dd.js → from-snapshot-CTCMsFZk.js} +4 -4
  92. package/dist/{grantee-Cn1HyUsI.js → grantee-hxrUsbpM.js} +13 -3
  93. package/dist/{grantee-match-DHArqY82.js → grantee-match-DbENBHLB.js} +1 -1
  94. package/dist/h3/index.d.ts +4 -4
  95. package/dist/h3/index.js +3 -3
  96. package/dist/{helpers-DTcZOzhF.js → helpers-CBYVMjwh.js} +1 -1
  97. package/dist/hono/index.d.ts +5 -5
  98. package/dist/hono/index.js +3 -3
  99. package/dist/{hosted-BZIAYvon.js → hosted-B46-5LYE.js} +3 -3
  100. package/dist/{hosted-DBDX0M-P.d.ts → hosted-BPk51-kX.d.ts} +1 -1
  101. package/dist/{import-DMmOG27O.js → import-wyqXUyjm.js} +3 -3
  102. package/dist/{index-Chrs5fQ-.d.ts → index-B8YjkEZ4.d.ts} +6 -6
  103. package/dist/{index-CxGUswIC.d.ts → index-C-6Letxg.d.ts} +5 -5
  104. package/dist/{index-SGdIQyzc.d.ts → index-Ch8LpNDp.d.ts} +2 -2
  105. package/dist/{index-D8EovfsP.d.ts → index-Cp_ilKi1.d.ts} +2 -2
  106. package/dist/{index-BcHcPyIo.d.ts → index-CueFnxQc.d.ts} +6 -6
  107. package/dist/{index-DOVf7RJv.d.ts → index-DuWxc5dt.d.ts} +21 -12
  108. package/dist/index.d.ts +17 -17
  109. package/dist/index.js +14 -14
  110. package/dist/{instance-options-Omfd793B.d.ts → instance-options-BsVpyGIk.d.ts} +1 -1
  111. package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-BOEhcqIF.js} +10 -9
  112. package/dist/jwt/index.d.ts +4 -4
  113. package/dist/{kernel-5JatXyND.js → kernel-D0NVb1cK.js} +5 -5
  114. package/dist/kysely/index.d.ts +3 -3
  115. package/dist/{manifest-CtKR3GXL.js → manifest-dvL2XEe1.js} +23 -23
  116. package/dist/{map-error-TCAdw-eW.js → map-error-Dr70oA_3.js} +1 -1
  117. package/dist/mcp/index.d.ts +9 -9
  118. package/dist/mcp/index.js +4 -4
  119. package/dist/{migrate-BShP7Vf4.js → migrate-CIq4-E9F.js} +1 -1
  120. package/dist/nest/index.d.ts +5 -5
  121. package/dist/nest/index.js +3 -3
  122. package/dist/next/index.d.ts +9 -9
  123. package/dist/next/index.js +3 -3
  124. package/dist/next/plugin.d.ts +1 -1
  125. package/dist/next/plugin.js +1 -1
  126. package/dist/node/index.d.ts +5 -5
  127. package/dist/node/index.js +2 -2
  128. package/dist/openai/index.d.ts +5 -5
  129. package/dist/openai/index.js +3 -3
  130. package/dist/openapi/index.d.ts +3 -3
  131. package/dist/{openapi-ahr8rHu3.js → openapi-C4dDTVEd.js} +1 -1
  132. package/dist/{openapi-DTaEmTSW.js → openapi-DD1SV-5-.js} +1 -1
  133. package/dist/{operations-CxybZErY.d.ts → operations-X0VM7F3m.d.ts} +1 -1
  134. package/dist/orpc/index.d.ts +6 -6
  135. package/dist/orpc/index.js +3 -3
  136. package/dist/otel/index.d.ts +3 -3
  137. package/dist/{output-Dyw8fyPF.js → output-1im__-08.js} +1 -1
  138. package/dist/{ownership-BatFgAA4.js → ownership-DqaJNJPn.js} +921 -858
  139. package/dist/{parse-local-manifest-DgqtruPn.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  140. package/dist/pdp/index.d.ts +3 -3
  141. package/dist/pdp/index.js +1 -1
  142. package/dist/{permdock-B9JxkBwC.js → permdock-BrAscV28.js} +5 -5
  143. package/dist/{permdock-D7eeLJER.d.ts → permdock-SV8ZINYT.d.ts} +4 -4
  144. package/dist/{permissions-CZKiUfFM.js → permissions-BPxlwVhN.js} +2 -2
  145. package/dist/{permissions-oEWfl-kl.d.ts → permissions-u_KHg-sN.d.ts} +1 -1
  146. package/dist/{policies-CO1oOymN.js → policies-DP2nqRoF.js} +1 -1
  147. package/dist/{policy-Czo4n3Hs.d.ts → policy-77FSAq_V.d.ts} +2 -2
  148. package/dist/{policy-DLZJ5gAp.js → policy-DbM5YYtV.js} +2 -2
  149. package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-C2gMa2Dj.js} +5 -5
  150. package/dist/{policy-types-DzwivBgR.d.ts → policy-types-n0uRTsW8.d.ts} +28 -3
  151. package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CEgRbefE.d.ts} +1 -1
  152. package/dist/{postgrest-CW0IqC-U.js → postgrest-DAjUkF9w.js} +10 -1
  153. package/dist/{powersync-bYUDLOAO.js → powersync-BkWWCS1K.js} +6 -6
  154. package/dist/{powersync-BHfuehf3.js → powersync-DISt6SUe.js} +2 -2
  155. package/dist/powersync-MMJ2mI2q.js +1 -0
  156. package/dist/prisma/index.d.ts +2 -2
  157. package/dist/{problem-details-DXlt-vks.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  158. package/dist/{protected-DfjY5mLA.js → protected-BlF0F6wL.js} +1 -1
  159. package/dist/{protected-DEPHc2xV.d.ts → protected-RFGpakN9.d.ts} +5 -5
  160. package/dist/{provider-CC-u3bYP.js → provider-B1al-AZz.js} +2 -2
  161. package/dist/{provider-DMVt6yYn.d.ts → provider-DILL9oPK.d.ts} +1 -1
  162. package/dist/{provider-store-B5Yrkhzr.js → provider-store-DM6DNcta.js} +2 -2
  163. package/dist/pull-CvpINcMK.js +1 -0
  164. package/dist/{pull-BgIfno6w.js → pull-jEwbf80J.js} +1 -1
  165. package/dist/{push-CmFVBOeI.js → push-BD4f15co.js} +2 -2
  166. package/dist/{pushed-policy-DobP7AHI.js → pushed-policy-CqtxkV4G.js} +1 -1
  167. package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-DCW91KQU.d.ts} +1 -1
  168. package/dist/react/index.d.ts +6 -6
  169. package/dist/react/index.js +2 -2
  170. package/dist/react/provider-client.d.ts +1 -1
  171. package/dist/react/provider-client.js +1 -1
  172. package/dist/react-native/index.d.ts +9 -9
  173. package/dist/react-native/index.js +10 -8
  174. package/dist/{replay-D7iKcLFe.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  175. package/dist/{request-context-BTRTG7OT.js → request-context-C81Pip9n.js} +1 -1
  176. package/dist/resend/index.d.ts +4 -4
  177. package/dist/{rls-BA8an5Ap.js → rls-BAqP4q66.js} +1 -1
  178. package/dist/{rls-j6t43t7n.js → rls-DTvYd-lI.js} +12 -12
  179. package/dist/{role-builder-CXbis5-X.js → role-builder-uWQZ4v84.js} +1 -1
  180. package/dist/{rpc-aPyNi6tA.js → rpc-VSl5ylaQ.js} +1 -1
  181. package/dist/{run-DOfMtc9V.js → run-CUKuz0A8.js} +2 -2
  182. package/dist/run-DDwUaJDU.js +1 -0
  183. package/dist/{run-ticket-BjhTOi6u.d.ts → run-ticket-DocwaTKn.d.ts} +2 -2
  184. package/dist/{saas-FO-Q8oj0.js → saas-BCXRuXca.js} +5 -5
  185. package/dist/{scan-BOI5tJ-6.js → scan-qvOe0hS3.js} +1 -1
  186. package/dist/scim/index.d.ts +1 -1
  187. package/dist/server/index.d.ts +10 -10
  188. package/dist/server/index.js +4 -4
  189. package/dist/{server-DqCT4CgZ.js → server-C3WXAHZj.js} +1 -1
  190. package/dist/{server-types-BLd4MnBX.d.ts → server-types-CKQiCnON.d.ts} +9 -9
  191. package/dist/{shared-CD11nBbC.js → shared-BAK8t4Uo.js} +2 -1
  192. package/dist/{sink-Bj_lDUDq.d.ts → sink-4-eQIRWf.d.ts} +4 -4
  193. package/dist/{snapshot-CXUWfsNy.js → snapshot-B7DkYg6g.js} +1 -1
  194. package/dist/{snapshot-cache-DqK9eDmM.d.ts → snapshot-cache-PXI-vGpY.d.ts} +1 -1
  195. package/dist/solid/index.d.ts +5 -5
  196. package/dist/solid/index.js +2 -2
  197. package/dist/solid-start/index.d.ts +6 -6
  198. package/dist/solid-start/index.js +3 -3
  199. package/dist/{sources-BV9j0DeZ.d.ts → sources-Xc4zkszI.d.ts} +2 -2
  200. package/dist/{src-DLfUWFAI.js → src-Cu2m75uo.js} +24 -15
  201. package/dist/ssf/index.d.ts +3 -3
  202. package/dist/ssf/index.js +1 -1
  203. package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-rbD7LS6h.d.ts} +2 -2
  204. package/dist/{store-4u_hxjWa.js → store-BDutJkDL.js} +1 -1
  205. package/dist/{store-options-BqEakYRa.js → store-options-u0ycEe8s.js} +4 -4
  206. package/dist/{stores-ClZUgeoP.d.ts → stores-BUGNbJTt.d.ts} +5 -5
  207. package/dist/{stores-BbsD4fAR.js → stores-CGhM8BN_.js} +1 -1
  208. package/dist/{stream-7-xmnf3U.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  209. package/dist/supabase/index.d.ts +5 -5
  210. package/dist/supabase/index.js +2 -2
  211. package/dist/supabase/middleware.d.ts +6 -6
  212. package/dist/supabase/middleware.js +5 -5
  213. package/dist/{supabase-9pqI57pW.js → supabase-By_frk3U.js} +2 -2
  214. package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-BMoEhZir.js} +14 -9
  215. package/dist/supabase-hook-CCw5m35C.js +1 -0
  216. package/dist/{supabase-Dxlp8A94.js → supabase-x5JtR2tc.js} +3 -3
  217. package/dist/svelte/index.d.ts +5 -5
  218. package/dist/svelte/index.js +2 -2
  219. package/dist/svelte/runtime.d.ts +3 -3
  220. package/dist/svelte/runtime.js +1 -1
  221. package/dist/svelte/source.d.ts +5 -5
  222. package/dist/svelte/source.js +1 -1
  223. package/dist/sveltekit/index.d.ts +6 -6
  224. package/dist/sveltekit/index.js +2 -2
  225. package/dist/tanstack-start/index.d.ts +6 -6
  226. package/dist/tanstack-start/index.js +2 -2
  227. package/dist/terminal/index.d.ts +6 -6
  228. package/dist/terminal/index.js +3 -3
  229. package/dist/testing/index.d.ts +20 -20
  230. package/dist/testing/index.js +18 -18
  231. package/dist/testing/saas/index.d.ts +5 -5
  232. package/dist/testing/saas/index.js +2 -2
  233. package/dist/testing/saas/permissions.d.ts +1 -1
  234. package/dist/testing/saas/permissions.js +1 -1
  235. package/dist/trpc/index.d.ts +6 -6
  236. package/dist/trpc/index.js +3 -3
  237. package/dist/{types-C8-KNsFf.d.ts → types-8RnwUAvE.d.ts} +5 -5
  238. package/dist/{types-BNORmDM8.d.ts → types-B3_ooZgZ.d.ts} +4 -4
  239. package/dist/{types-CCpc2Dcv.d.ts → types-BdtSDbBO.d.ts} +2 -2
  240. package/dist/{types-DX0LaKTb.d.ts → types-BtHtcKMr.d.ts} +3 -3
  241. package/dist/{types-CdlxsYQh.d.ts → types-BzzaHxt3.d.ts} +1 -1
  242. package/dist/{types-DiQjupG2.d.ts → types-C791HFu9.d.ts} +2 -2
  243. package/dist/{types-BjV-fqcA.d.ts → types-C863OQiR.d.ts} +4 -4
  244. package/dist/{types-fbZ7JEXr.d.ts → types-CVZSNocA.d.ts} +4 -4
  245. package/dist/{types-tIgIeIKJ.d.ts → types-CX7AvRqP.d.ts} +4 -4
  246. package/dist/{types-_sHy8BQf.d.ts → types-C_IiEs64.d.ts} +1 -1
  247. package/dist/{types-5Ut_pbKy.d.ts → types-Dfv0aTER.d.ts} +4 -2
  248. package/dist/{types-CZTnPFzM.d.ts → types-Druu9wLM.d.ts} +2 -2
  249. package/dist/{types-ClZaWzfb.d.ts → types-_WhUP7ud.d.ts} +3 -3
  250. package/dist/{types-BqAKcRNW.d.ts → types-lUlG3TVd.d.ts} +2 -2
  251. package/dist/unplugin/index.d.ts +1 -1
  252. package/dist/unplugin/index.js +1 -1
  253. package/dist/{usage-DHtE8j4E.js → usage-CRVl9V3t.js} +1 -1
  254. package/dist/usage-CZpSQP6L.js +1 -0
  255. package/dist/{usage-T5mXq98v.js → usage-SveTRTyr.js} +4 -4
  256. package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  257. package/dist/{verify-DbCL9bnB.js → verify-BaAKx7t6.js} +11 -11
  258. package/dist/{vocabulary-D6lPdb4Z.d.ts → vocabulary-CN8H_9UF.d.ts} +2 -0
  259. package/dist/vue/index.d.ts +5 -5
  260. package/dist/vue/index.js +2 -2
  261. package/dist/{waiter-CKy4MQSY.d.ts → waiter-B986w1oK.d.ts} +2 -2
  262. package/dist/watch--ovlPOc0.js +1 -0
  263. package/dist/{watch-CszoTJMq.js → watch-vea54PRw.js} +1 -1
  264. package/dist/webmcp/index.d.ts +2 -2
  265. package/dist/{where-scope-Dv-WTP-w.js → where-scope-C9vfEphl.js} +2 -2
  266. package/dist/{who-can-D0QoYbEb.js → who-can-DWBAcaCQ.js} +2 -2
  267. package/dist/workflow/index.d.ts +3 -3
  268. package/dist/workflow/index.js +2 -2
  269. package/dist/workflow-sdk/index.d.ts +5 -5
  270. package/dist/{wrap-Bd1Tejur.d.ts → wrap-C5jC6sKI.d.ts} +2 -2
  271. package/package.json +2 -2
  272. package/skills/permdock-data/references/queries-and-rls.md +1 -1
  273. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
  274. package/dist/catalog-DjhMYYCq.js +0 -1
  275. package/dist/collect-FlXJlhus.js +0 -1
  276. package/dist/powersync-CbzkqL_M.js +0 -1
  277. package/dist/pull-ByOks_Tg.js +0 -1
  278. package/dist/run-CNsApDpd.js +0 -1
  279. package/dist/supabase-hook-CXcGpHqq.js +0 -1
  280. package/dist/usage-CHOtwL19.js +0 -1
  281. package/dist/watch-Cb-NcaUw.js +0 -1
@@ -1,7 +1,7 @@
1
1
  import { a as sole, n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
- import { n as role, t as normalizeAssurance } from "./role-builder-CXbis5-X.js";
4
+ import { n as role, t as normalizeAssurance } from "./role-builder-uWQZ4v84.js";
5
5
  import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
6
6
  import { t as wireDenials } from "./wire-denial-C7PaVYEM.js";
7
7
  import { o as sameId } from "./expiry-D4_YKRKD.js";
@@ -12,18 +12,18 @@ import { i as readAppData } from "./app-data-MuyzVqX8.js";
12
12
  import { a as durationOf, d as isoNow, o as epochSeconds, r as assertDuration, s as instantAt, t as INVALID_NOW } from "./time-DkWjdL98.js";
13
13
  import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
14
14
  import { a as normalizeMemberships, d as scopeList, f as subjectForPermission, i as keepsPermission, m as tenantOf, o as resolveScope, s as rootMembershipId } from "./scopes-CUPSjo9q.js";
15
- import { a as readOnlyActorRefuses, c as rowIdOf, i as delegatedPermissions, l as rowValues, n as coveredByDelegation, o as requiresStandIn, r as coversRequirements, s as isRowPair, u as evaluateCondition } from "./delegation-DaXVdDhM.js";
16
- import { a as authenticated, g as isRole, i as assurance, m as findRole, o as flattenGrantee, r as asGrantee } from "./grantee-Cn1HyUsI.js";
15
+ import { a as readOnlyActorRefuses, c as rowIdOf, i as delegatedPermissions, l as rowValues, n as coveredByDelegation, o as requiresStandIn, r as coversRequirements, s as isRowPair, u as evaluateCondition } from "./delegation-j6-rc37o.js";
16
+ import { a as authenticated, g as isRole, i as assurance, m as findRole, o as flattenGrantee, r as asGrantee } from "./grantee-hxrUsbpM.js";
17
17
  import { a as grantCoversField, i as wireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
18
18
  import { o as resourceRoleCondition } from "./grantee-conditions-CcXf8hMM.js";
19
19
  import { c as nowSeconds, i as matchScopedMembership, l as partitionsOf, n as inTeam, p as scopeField, r as isMembershipExpired } from "./tenancy-DN2QAx9z.js";
20
- import { a as levelCondition, r as grantList, t as declaredRoleNames } from "./policy-DLZJ5gAp.js";
20
+ import { a as levelCondition, r as grantList, t as declaredRoleNames } from "./policy-DbM5YYtV.js";
21
21
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
22
22
  import { i as versionOf, r as tokenPayload, t as decisionToken } from "./token-BLZcjQgt.js";
23
23
  import { n as resolveRelated } from "./relation-walk-3OyDBF0S.js";
24
24
  import { t as eventInstant } from "./event-time-CsegxXxB.js";
25
25
  import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
26
- import { n as matchGrantee, t as combineWhere } from "./grantee-match-DHArqY82.js";
26
+ import { n as matchGrantee, t as combineWhere } from "./grantee-match-DbENBHLB.js";
27
27
  import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
28
28
  //#region src/core/approval-state.ts
29
29
  /** The denial detail when an `ApprovalPolicySource` threw or returned an invalid entry. */
@@ -715,7 +715,7 @@ function leveled(grant, level, condition) {
715
715
  * the policy does not declare it; such a role resolves to nothing.
716
716
  */
717
717
  function customRoleScope(role, scopes) {
718
- if (role.scope === "global") return "global";
718
+ if (role.scope === "global") return role.shared === true ? void 0 : "global";
719
719
  if (role.scope !== void 0) return resolveScope(scopes, role.scope);
720
720
  return resolveScope(scopes, role.team === void 0 ? "tenant" : "team");
721
721
  }
@@ -727,6 +727,10 @@ function customRoleId(role) {
727
727
  function isGlobalCustomRole(role) {
728
728
  return role.scope === "global";
729
729
  }
730
+ /** A shared custom role: defined once for every tenant, held on memberships of its scope in any tenant. */
731
+ function isSharedCustomRole(role) {
732
+ return role.shared === true;
733
+ }
730
734
  function isCeilingScope(scope) {
731
735
  return typeof scope === "string";
732
736
  }
@@ -929,7 +933,16 @@ function resolveCustomRole(policy, role) {
929
933
  renamed
930
934
  });
931
935
  }
932
- function validateCustomRole(policy, role) {
936
+ function validateCustomRole(policy, role, options = {}) {
937
+ if (!isSharedCustomRole(role) && !isGlobalCustomRole(role) && (options.shared ?? []).some((item) => wellFormed(item) && isSharedCustomRole(item) && item.name === role.name)) return freezeDeep({
938
+ ok: false,
939
+ permissions: [],
940
+ dropped: [{
941
+ role: role.name,
942
+ reason: "name-taken"
943
+ }],
944
+ renamed: []
945
+ });
933
946
  const resolved = resolveCustomRole(policy, role);
934
947
  const permissions = [...new Set(resolved.grants.filter((grant) => grant.effect === "allow").map((grant) => grant.permission.key))].toSorted();
935
948
  return freezeDeep({
@@ -941,15 +954,25 @@ function validateCustomRole(policy, role) {
941
954
  }
942
955
  function wellFormed(role) {
943
956
  if (role === null || typeof role !== "object" || typeof role.name !== "string") return false;
957
+ if (role.shared !== void 0) return role.shared === true && role.tenant === void 0 && role.team === void 0 && role.id === void 0 && (role.scope === void 0 || typeof role.scope === "string" && role.scope !== "global");
944
958
  if (role.scope === "global") return role.tenant === void 0 && role.team === void 0 && role.id === void 0;
945
959
  return typeof role.tenant === "string" && (role.team === void 0 || typeof role.team === "string") && (role.scope === void 0 || typeof role.scope === "string") && (role.id === void 0 || typeof role.id === "string");
946
960
  }
961
+ /**
962
+ * The well-formed roles, without a tenant role that a shared role of the same
963
+ * name shadows: the shared role is the one every tenant sees.
964
+ */
965
+ function effectiveCustomRoles(roles) {
966
+ const formed = roles.filter(wellFormed);
967
+ const shared = new Set(formed.filter(isSharedCustomRole).map((role) => role.name));
968
+ return shared.size === 0 ? formed : formed.filter((role) => isSharedCustomRole(role) || isGlobalCustomRole(role) || !shared.has(role.name));
969
+ }
947
970
  /** Every custom role's resolved grants, once per instance. Malformed roles resolve to nothing. */
948
971
  function customGrantsFor(policy, roles) {
949
972
  const declared = declaredRoleNames(policy);
950
973
  const out = [];
951
- for (const role of roles) {
952
- if (!wellFormed(role) || declared.has(role.name)) continue;
974
+ for (const role of effectiveCustomRoles(roles)) {
975
+ if (declared.has(role.name)) continue;
953
976
  for (const grant of resolveCustomRole(policy, role).grants) out.push({
954
977
  grant,
955
978
  role
@@ -957,25 +980,37 @@ function customGrantsFor(policy, roles) {
957
980
  }
958
981
  return out;
959
982
  }
960
- /** The well-formed tenant (not platform) custom roles; a declared role name is never one. */
983
+ /**
984
+ * The well-formed custom roles held on memberships: tenant and shared, not
985
+ * platform. A declared role name is never one, and a shared role shadows a
986
+ * tenant role of the same name.
987
+ */
961
988
  function tenantCustomRoles(policy, roles) {
962
989
  const declared = declaredRoleNames(policy);
963
- return roles.filter((role) => wellFormed(role) && !isGlobalCustomRole(role) && !declared.has(role.name));
990
+ return effectiveCustomRoles(roles).filter((role) => !isGlobalCustomRole(role) && !declared.has(role.name));
991
+ }
992
+ /** Whether a custom role held on memberships belongs to `tenant`: its own, or shared by every tenant. */
993
+ function customRoleOf(role, tenant) {
994
+ return isSharedCustomRole(role) || sameId(role.tenant, tenant);
964
995
  }
965
- /** A membership at the role's scope, inside its tenant (and instance, when pinned), naming it. */
996
+ /**
997
+ * A membership at the role's scope, inside its tenant (and instance, when
998
+ * pinned), naming it. A shared role is held at its scope in any tenant.
999
+ */
966
1000
  function holdsCustomRole(membership, role, scopes) {
967
- if (isGlobalCustomRole(role)) return false;
1001
+ if (isGlobalCustomRole(role) || !wellFormed(role)) return false;
968
1002
  const scope = customRoleScope(role, scopes);
969
1003
  const id = customRoleId(role);
970
- return scope !== void 0 && membership.scope === scope && sameId(tenantOf(membership, scopes), role.tenant) && (id === void 0 || sameId(membership.id, id)) && membership.roles.includes(role.name);
1004
+ const tenant = tenantOf(membership, scopes);
1005
+ return scope !== void 0 && membership.scope === scope && (isSharedCustomRole(role) ? tenant !== void 0 : sameId(tenant, role.tenant)) && (id === void 0 || sameId(membership.id, id)) && membership.roles.includes(role.name);
971
1006
  }
972
1007
  /** Whether `principal.roles` names the platform custom role. */
973
1008
  function holdsGlobalCustomRole(roles, role) {
974
1009
  return isGlobalCustomRole(role) && (roles ?? []).includes(role.name);
975
1010
  }
976
- /** A tenant's custom role inside that tenant, or a platform custom role anywhere. */
1011
+ /** A tenant's custom role inside that tenant, a shared role in any tenant, or a platform custom role anywhere. */
977
1012
  function isCustomRoleName(name, roles, tenant) {
978
- return roles.some((item) => wellFormed(item) && item.name === name && (isGlobalCustomRole(item) || tenant !== void 0 && sameId(item.tenant, tenant)));
1013
+ return effectiveCustomRoles(roles).some((item) => item.name === name && (isGlobalCustomRole(item) || tenant !== void 0 && customRoleOf(item, tenant)));
979
1014
  }
980
1015
  /**
981
1016
  * The compact JWT form of custom roles for the `memberships[].grants` claim
@@ -1010,8 +1045,9 @@ function customRoleClaim(roles, policy) {
1010
1045
  */
1011
1046
  function membershipsClaim(memberships, customRoles, scopes) {
1012
1047
  const claim = [];
1048
+ const effective = effectiveCustomRoles(customRoles);
1013
1049
  for (const membership of normalizeMemberships(memberships, scopes)) {
1014
- const held = customRoles.filter((role) => wellFormed(role) && holdsCustomRole(membership, role, scopes));
1050
+ const held = effective.filter((role) => holdsCustomRole(membership, role, scopes));
1015
1051
  claim.push(held.length === 0 ? membership : Object.assign({}, membership, { grants: customRoleClaim(held) }));
1016
1052
  }
1017
1053
  return claim;
@@ -1030,6 +1066,12 @@ function isGlobalRole(value) {
1030
1066
  function onlyGlobal(roles) {
1031
1067
  return Array.isArray(roles) ? roles.filter(isGlobalRole) : [];
1032
1068
  }
1069
+ function isSharedRole(value) {
1070
+ return value !== null && typeof value === "object" && Reflect.get(value, "shared") === true;
1071
+ }
1072
+ function onlyShared(roles) {
1073
+ return Array.isArray(roles) ? roles.filter(isSharedRole) : [];
1074
+ }
1033
1075
  /** The `customRoles` option as a source: a factory is called with the resolved subject, and a throw reads none. */
1034
1076
  function roleSourceFor(option, subject, auth) {
1035
1077
  if (typeof option !== "function") return option;
@@ -1056,16 +1098,27 @@ function customRolesFor(source, tenants, auth, globalHeld, heldIn) {
1056
1098
  });
1057
1099
  loaded.push([]);
1058
1100
  }
1059
- if (globalHeld !== void 0 && source.globalRoles !== void 0) try {
1060
- const roles = source.globalRoles({ held: globalHeld });
1061
- loaded.push(isThenable(roles) ? roles.then(onlyGlobal) : onlyGlobal(roles));
1062
- } catch {
1063
- auth.push({
1064
- reason: "source-threw",
1065
- source: "customRoles",
1066
- ...sourceName(source)
1067
- });
1068
- loaded.push([]);
1101
+ const once = (read, keep) => {
1102
+ try {
1103
+ const roles = read();
1104
+ loaded.push(isThenable(roles) ? roles.then(keep) : keep(roles));
1105
+ } catch {
1106
+ auth.push({
1107
+ reason: "source-threw",
1108
+ source: "customRoles",
1109
+ ...sourceName(source)
1110
+ });
1111
+ loaded.push([]);
1112
+ }
1113
+ };
1114
+ if (globalHeld !== void 0 && source.globalRoles !== void 0) {
1115
+ const read = source.globalRoles.bind(source);
1116
+ once(() => read({ held: globalHeld }), onlyGlobal);
1117
+ }
1118
+ if (tenants.length > 0 && source.sharedRoles !== void 0) {
1119
+ const read = source.sharedRoles.bind(source);
1120
+ const held = [...new Set(tenants.flatMap((tenant) => heldIn(tenant)))];
1121
+ once(() => read({ held }), onlyShared);
1069
1122
  }
1070
1123
  if (loaded.some((item) => isThenable(item))) return Promise.all(loaded.map((item) => Promise.resolve(item).catch(() => {
1071
1124
  auth.push({
@@ -1729,4 +1782,4 @@ function evaluate(policy, given, permission, data, options, env) {
1729
1782
  return allowedDecision(state, chosen.allow, chosen.approval, chosen.quota);
1730
1783
  }
1731
1784
  //#endregion
1732
- export { isContact as A, emptyListeners as C, supportAccess as D, breakGlass as E, contactMayUse as O, emitSafe as S, activate as T, membershipsClaim as _, expandRoleNames as a, tenantCustomRoles as b, andWhere as c, customRoleClaim as d, customRoleId as f, leveled as g, holdsGlobalCustomRole as h, customRolesFor as i, APPROVAL_POLICY_UNAVAILABLE as j, contactMemberships as k, ceilingGrants as l, holdsCustomRole as m, requirementCondition as n, roleSourceFor as o, customRoleScope as p, assignableNamesFor as r, sourceName as s, evaluate as t, customGrantsFor as u, resolveCustomRole as v, finish as w, validateCustomRole as x, roleAllowKeys as y };
1785
+ export { contactMayUse as A, validateCustomRole as C, activate as D, finish as E, isContact as M, APPROVAL_POLICY_UNAVAILABLE as N, breakGlass as O, tenantCustomRoles as S, emptyListeners as T, isSharedCustomRole as _, expandRoleNames as a, resolveCustomRole as b, andWhere as c, customRoleClaim as d, customRoleId as f, holdsGlobalCustomRole as g, holdsCustomRole as h, customRolesFor as i, contactMemberships as j, supportAccess as k, ceilingGrants as l, customRoleScope as m, requirementCondition as n, roleSourceFor as o, customRoleOf as p, assignableNamesFor as r, sourceName as s, evaluate as t, customGrantsFor as u, leveled as v, emitSafe as w, roleAllowKeys as x, membershipsClaim as y };
@@ -1,6 +1,6 @@
1
- import { T as Policy } from "./policy-types-DzwivBgR.js";
2
- import { r as PermDock } from "./permdock-D7eeLJER.js";
3
- import { m as ApprovalStore } from "./types-CCpc2Dcv.js";
1
+ import { T as Policy } from "./policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "./permdock-SV8ZINYT.js";
3
+ import { m as ApprovalStore } from "./types-BdtSDbBO.js";
4
4
  //#region src/server/evaluations.d.ts
5
5
  /** AuthZEN 1.0 section 7.1.2.1 `options.evaluations_semantic` values. */
6
6
  declare const EVALUATIONS_SEMANTICS: readonly ["execute_all", "deny_on_first_deny", "permit_on_first_permit"];
@@ -6,7 +6,7 @@ import { h as secondsAt } from "./time-DkWjdL98.js";
6
6
  import { n as resourceRef } from "./resource-ref-CaS9yVPi.js";
7
7
  import { n as readBodyText } from "./body-text-QcXok_SI.js";
8
8
  import { c as problemResponse, d as validationProblem, n as batchTooLarge } from "./problem-CTviyH5L.js";
9
- import { i as readApprovalHeader, s as resumeDecision } from "./helpers-DTcZOzhF.js";
9
+ import { i as readApprovalHeader, s as resumeDecision } from "./helpers-CBYVMjwh.js";
10
10
  import { t as bodyTooLarge } from "./body-CH5of8Ne.js";
11
11
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
12
12
  //#region src/core/decision.ts
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "../permdock-D7eeLJER.js";
4
- import { u as ApprovalRequest } from "../types-CCpc2Dcv.js";
5
- import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BDS7wc3y.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { u as ApprovalRequest } from "../types-BdtSDbBO.js";
5
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-CBMmFie-.js";
6
6
  //#region src/eve/create.d.ts
7
7
  /** Structural `SessionAuthContext` from `eve`. */
8
8
  type EvePrincipal = {
package/dist/eve/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { c as withApp } from "../permdock-B9JxkBwC.js";
2
+ import { c as withApp } from "../permdock-BrAscV28.js";
3
3
  import { c as isApprovalError } from "../types-DqzsnlSA.js";
4
- import { o as resolveApproval } from "../helpers-DTcZOzhF.js";
5
- import { t as agentRuntime } from "../create-C3b4B5eF.js";
4
+ import { o as resolveApproval } from "../helpers-CBYVMjwh.js";
5
+ import { t as agentRuntime } from "../create-CGm28gyI.js";
6
6
  import { t as boundedMap } from "../lru-8q4WZjBV.js";
7
7
  //#region src/eve/create.ts
8
8
  const TOKENS_PER_PROCESS = 1e3;
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "../permdock-D7eeLJER.js";
4
- import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
5
- import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
5
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
6
6
  import { i as toRequest, r as sendResponse } from "../http-B_LphE5Y.js";
7
7
  import { ErrorRequestHandler, Request, RequestHandler, Response, Router } from "express";
8
8
  //#region src/express/create.d.ts
@@ -1,7 +1,7 @@
1
1
  import { r as hasCredentials } from "../http-BBoKefeS.js";
2
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
3
- import { t as problemFromError } from "../map-error-TCAdw-eW.js";
4
- import { i as decorate, r as bindKernel } from "../bind-CZzhx-Vj.js";
2
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
3
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
4
+ import { i as decorate, r as bindKernel } from "../bind-CAvgUuKs.js";
5
5
  import { n as sendResponse, r as toRequest } from "../http-ujKm0JXE.js";
6
6
  import express from "express";
7
7
  //#region src/express/create.ts
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "../permdock-D7eeLJER.js";
4
- import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
5
- import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
5
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
6
6
  import { FastifyPluginAsync, FastifyReply, FastifyRequest, FastifySchema, FastifyTypeProvider, FastifyTypeProviderDefault, RawRequestDefaultExpression, RawServerDefault, RouteGenericInterface } from "fastify";
7
7
  //#region src/server/http.d.ts
8
8
  /** A Fastify-style reply: `code`, `header` and `send`. */
@@ -1,7 +1,7 @@
1
1
  import { c as writeReply, i as headersFrom, n as firstHeader, r as hasCredentials, t as fetchRequest } from "../http-BBoKefeS.js";
2
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
3
- import { t as problemFromError } from "../map-error-TCAdw-eW.js";
4
- import { i as decorate, r as bindKernel } from "../bind-CZzhx-Vj.js";
2
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
3
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
4
+ import { i as decorate, r as bindKernel } from "../bind-CAvgUuKs.js";
5
5
  //#region src/fastify/http.ts
6
6
  function toRequest(request) {
7
7
  const host = firstHeader(request.headers.host) ?? "localhost";
@@ -2,8 +2,8 @@ import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { o as isPermission } from "./permission-registry-Br4jSNVi.js";
3
3
  import { r as hasCredentials } from "./http-BBoKefeS.js";
4
4
  import { a as methodNotAllowed } from "./problem-CTviyH5L.js";
5
- import { t as problemFromError } from "./map-error-TCAdw-eW.js";
6
- import { i as decorate, r as bindKernel } from "./bind-CZzhx-Vj.js";
5
+ import { t as problemFromError } from "./map-error-Dr70oA_3.js";
6
+ import { i as decorate, r as bindKernel } from "./bind-CAvgUuKs.js";
7
7
  //#region src/server/fetch-adapter.ts
8
8
  /**
9
9
  * `protect(target, data, options)(handler)` for a framework whose routes are
@@ -1,8 +1,8 @@
1
- import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
2
- import { a as OperationInput, t as Operation } from "./operations-CxybZErY.js";
1
+ import { w as Permission } from "./vocabulary-CN8H_9UF.js";
2
+ import { a as OperationInput, t as Operation } from "./operations-X0VM7F3m.js";
3
3
  import { n as RevocationFeed } from "./revocations-R07lFBnX.js";
4
- import { o as ProtectOptions } from "./server-types-BLd4MnBX.js";
5
- import { t as ServerAdapterOptions } from "./bind--9EFVYWF.js";
4
+ import { o as ProtectOptions } from "./server-types-CKQiCnON.js";
5
+ import { t as ServerAdapterOptions } from "./bind-DOyrv6zi.js";
6
6
  //#region src/server/fetch-adapter.d.ts
7
7
  /** What `protect` checks: a permission, an operation from `defineOperations`, or `null` for a route that needs only OAuth scopes. */
8
8
  type ProtectTarget = Permission | Operation | null;
@@ -1,7 +1,7 @@
1
1
  import { i as configError } from "./errors-CWTY6uih.js";
2
- import { s as jsonSchemaOf } from "./catalog-doc-C9wjsfNY.js";
3
- import { F as quoteQualified, N as quoteIdent, P as quoteLiteral, j as helperSchema, s as signedIn } from "./shared-CD11nBbC.js";
4
- import { c as branchClauses, i as orSql, s as andSql, u as wrapSql } from "./policies-CO1oOymN.js";
2
+ import { s as jsonSchemaOf } from "./catalog-doc-Cdn7-0pQ.js";
3
+ import { F as quoteQualified, N as quoteIdent, P as quoteLiteral, j as helperSchema, s as signedIn } from "./shared-BAK8t4Uo.js";
4
+ import { c as branchClauses, i as orSql, s as andSql, u as wrapSql } from "./policies-DP2nqRoF.js";
5
5
  //#region src/cli/rls/fields.ts
6
6
  /** Names of the field-view objects. Part of the SQL contract. */
7
7
  const FIELD_VIEWS = {
@@ -5,16 +5,16 @@ import { o as sameId } from "./expiry-D4_YKRKD.js";
5
5
  import { c as listPermissions } from "./permission-registry-Br4jSNVi.js";
6
6
  import { g as secondsOf, o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
7
7
  import { a as normalizeMemberships, d as scopeList, m as tenantOf, o as resolveScope, t as activeFor } from "./scopes-CUPSjo9q.js";
8
- import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-DaXVdDhM.js";
9
- import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-Cn1HyUsI.js";
8
+ import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-j6-rc37o.js";
9
+ import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-hxrUsbpM.js";
10
10
  import { a as grantCoversField, o as pickVisible, r as readWireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
11
11
  import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-DN2QAx9z.js";
12
12
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
13
13
  import { r as tokenPayload, t as decisionToken } from "./token-BLZcjQgt.js";
14
14
  import { t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
15
- import { n as matchGrantee } from "./grantee-match-DHArqY82.js";
15
+ import { n as matchGrantee } from "./grantee-match-DbENBHLB.js";
16
16
  import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
17
- import { a as deniedFor, n as mayUse, o as signSnapshot, r as permittedIds, t as whereFromGrants } from "./where-scope-Dv-WTP-w.js";
17
+ import { a as deniedFor, n as mayUse, o as signSnapshot, r as permittedIds, t as whereFromGrants } from "./where-scope-C9vfEphl.js";
18
18
  //#region src/core/snapshot-evaluate.ts
19
19
  function coveredByInclude(snapshot, permission) {
20
20
  const include = snapshot.include;
@@ -133,11 +133,10 @@ function synthesiseRole(key, options) {
133
133
  const on = options?.on;
134
134
  const assignable = options?.assignable ?? false;
135
135
  const meta = options?.meta;
136
- if (on === void 0) return makeRole(key, meta === void 0 ? { assignable } : {
136
+ const leaf = on === void 0 ? makeRole(key, meta === void 0 ? { assignable } : {
137
137
  assignable,
138
138
  meta
139
- });
140
- return makeRole(key, meta === void 0 ? {
139
+ }) : makeRole(key, meta === void 0 ? {
141
140
  on,
142
141
  assignable
143
142
  } : {
@@ -145,6 +144,17 @@ function synthesiseRole(key, options) {
145
144
  assignable,
146
145
  meta
147
146
  });
147
+ if (options?.shared !== true) return leaf;
148
+ const shared = Object.defineProperty({
149
+ ...leaf,
150
+ shared: true
151
+ }, "kind", {
152
+ value: ROLE_KIND,
153
+ enumerable: false,
154
+ writable: false,
155
+ configurable: false
156
+ });
157
+ return Object.freeze(shared);
148
158
  }
149
159
  function isGrantee(value) {
150
160
  return value !== null && typeof value === "object" && "kind" in value && typeof value.kind === "string";
@@ -1,7 +1,7 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { u as isoAt } from "./time-DkWjdL98.js";
3
3
  import { d as scopeList, t as activeFor } from "./scopes-CUPSjo9q.js";
4
- import { o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
4
+ import { o as flattenGrantee } from "./grantee-hxrUsbpM.js";
5
5
  import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-CcXf8hMM.js";
6
6
  //#region src/core/grantee-match.ts
7
7
  function combineWhere(left, right) {
@@ -1,7 +1,7 @@
1
- import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { r as PermDock } from "../permdock-D7eeLJER.js";
3
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
4
- import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-qKJBuRqy.js";
1
+ import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
3
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
4
+ import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-Dw0MTS3D.js";
5
5
  import { EventHandler, H3Event, H3EventContext, Middleware } from "h3";
6
6
  //#region src/h3/create.d.ts
7
7
  type H3PermDockOptions<TUser = unknown> = FetchAdapterOptions<H3Event, TUser>;
package/dist/h3/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
2
- import { i as decorate } from "../bind-CZzhx-Vj.js";
3
- import { t as fetchAdapter } from "../fetch-adapter-g0ypLkID.js";
1
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
2
+ import { i as decorate } from "../bind-CAvgUuKs.js";
3
+ import { t as fetchAdapter } from "../fetch-adapter-DD_gfmrC.js";
4
4
  //#region src/h3/create.ts
5
5
  function createPermDock(policy, options) {
6
6
  const adapter = fetchAdapter(policy, options, "h3", (event) => event.req);
@@ -9,7 +9,7 @@ import { r as relationReader, t as pendingRelations } from "./relations-BnCWnJGI
9
9
  import { n as resolveRelated } from "./relation-walk-3OyDBF0S.js";
10
10
  import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
11
  import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
12
- import { c as listAllApprovals, n as assertApprover } from "./store-4u_hxjWa.js";
12
+ import { c as listAllApprovals, n as assertApprover } from "./store-BDutJkDL.js";
13
13
  import { n as parseApprovalHeader } from "./approval-header-CJACtHkv.js";
14
14
  //#region src/approvals/relations.ts
15
15
  const DEFAULT_PARENT_DEPTH = 16;
@@ -1,9 +1,9 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "../permdock-D7eeLJER.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
4
  import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
6
- import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
7
7
  import { Context, Hono, MiddlewareHandler } from "hono";
8
8
  import { SSEMessage, SSEStreamingApi } from "hono/streaming";
9
9
  import { WSEvents } from "hono/ws";
@@ -1,8 +1,8 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
2
  import { r as PermDockRevokedError } from "../errors-BKy0EfhN.js";
3
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
4
- import { t as problemFromError } from "../map-error-TCAdw-eW.js";
5
- import { r as bindKernel } from "../bind-CZzhx-Vj.js";
3
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
4
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
5
+ import { r as bindKernel } from "../bind-CAvgUuKs.js";
6
6
  import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
7
7
  import { Hono } from "hono";
8
8
  //#region src/hono/create.ts
@@ -1,13 +1,13 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { n as isForbiddenKey, s as splitPath } from "./paths-DXSHAMIa.js";
4
- import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-CXbis5-X.js";
4
+ import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-uWQZ4v84.js";
5
5
  import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
6
  import { d as isSelfParented } from "./resource-relations-D_jw0BFx.js";
7
7
  import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-DkWjdL98.js";
8
8
  import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
9
- import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
10
- import { i as indexPolicy, t as declaredRoleNames } from "./policy-DLZJ5gAp.js";
9
+ import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-hxrUsbpM.js";
10
+ import { i as indexPolicy, t as declaredRoleNames } from "./policy-DbM5YYtV.js";
11
11
  //#region src/core/hosted.ts
12
12
  function memoryPolicySource(document = null) {
13
13
  const current = document === null ? null : parsePolicyDocument(document);
@@ -1,4 +1,4 @@
1
- import { T as Policy, a as ApprovalRequirement, bn as Grantee, lr as Condition } from "./policy-types-DzwivBgR.js";
1
+ import { T as Policy, a as ApprovalRequirement, bn as Grantee, ur as Condition } from "./policy-types-n0uRTsW8.js";
2
2
  //#region src/core/hosted.d.ts
3
3
  /** One grant authored in PermDock Cloud; its grantee is a declared role, plan or relation. */
4
4
  type HostedGrant = {
@@ -2,9 +2,9 @@ import { r as isRecord } from "./compact-CAf557ZB.js";
2
2
  import { i as configError, u as usageResult } from "./errors-CWTY6uih.js";
3
3
  import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
4
4
  import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
5
- import { C as parseMembershipsFlag, r as HELPERS } from "./shared-CD11nBbC.js";
6
- import { f as pgConnector } from "./policies-CO1oOymN.js";
7
- import { t as FIELD_VIEWS } from "./fields-D9tPVUUS.js";
5
+ import { C as parseMembershipsFlag, r as HELPERS } from "./shared-BAK8t4Uo.js";
6
+ import { f as pgConnector } from "./policies-DP2nqRoF.js";
7
+ import { t as FIELD_VIEWS } from "./fields-OYG_JR78.js";
8
8
  import { n as emptySchema, r as isSchemaKind, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
9
9
  import { existsSync, readFileSync } from "node:fs";
10
10
  import { resolve } from "node:path";
@@ -1,9 +1,9 @@
1
- import { Ct as Credential, Nn as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, ir as Subject, j as PolicyVocabulary, lt as TokenFailureCause, q as DecisionSink, qt as AuthEvent, rr as Principal, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
- import { E as PermissionTree, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
- import { p as PrincipalSource } from "./permdock-D7eeLJER.js";
4
- import { t as Disclosure } from "./problem-details-DXlt-vks.js";
5
- import { a as ProblemDetails, t as ApprovalHint } from "./errors-C2PXIv4c.js";
6
- import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-BLd4MnBX.js";
1
+ import { Ct as Credential, Nn as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, ar as Subject, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, j as PolicyVocabulary, lt as TokenFailureCause, q as DecisionSink, qt as AuthEvent, rr as Principal, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
2
+ import { E as PermissionTree, w as Permission } from "./vocabulary-CN8H_9UF.js";
3
+ import { p as PrincipalSource } from "./permdock-SV8ZINYT.js";
4
+ import { t as Disclosure } from "./problem-details-B45V5d2b.js";
5
+ import { a as ProblemDetails, t as ApprovalHint } from "./errors-DH5QEGXh.js";
6
+ import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-CKQiCnON.js";
7
7
  //#region src/server/create.d.ts
8
8
  /**
9
9
  * The Fetch factory behind every HTTP adapter. The subject and actor are
@@ -1,8 +1,8 @@
1
- import { Nn as Decision, Rt as Instant, T as Policy, Yn as AuthorizationDetail, et as MembershipSource, fn as Approver, ir as Subject, it as RelationSource, nr as Membership, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
- import { E as PermissionTree, V as AppData, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "./permdock-D7eeLJER.js";
4
- import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-CCpc2Dcv.js";
5
- import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-_sHy8BQf.js";
1
+ import { Nn as Decision, Rt as Instant, T as Policy, Yn as AuthorizationDetail, ar as Subject, et as MembershipSource, fn as Approver, it as RelationSource, nr as Membership, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
2
+ import { E as PermissionTree, V as AppData, w as Permission } from "./vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "./permdock-SV8ZINYT.js";
4
+ import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-BdtSDbBO.js";
5
+ import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-C_IiEs64.js";
6
6
  import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
7
7
  //#region src/approvals/access-reviews/handler.d.ts
8
8
  type AccessReviewsHandlerOptions = {
@@ -1,5 +1,5 @@
1
- import { dt as TokenVerifier, et as MembershipSource, q as DecisionSink } from "./policy-types-DzwivBgR.js";
2
- import { V as AppData } from "./vocabulary-D6lPdb4Z.js";
1
+ import { dt as TokenVerifier, et as MembershipSource, q as DecisionSink } from "./policy-types-n0uRTsW8.js";
2
+ import { V as AppData } from "./vocabulary-CN8H_9UF.js";
3
3
  import { n as RevocationFeed } from "./revocations-R07lFBnX.js";
4
4
  import { t as ClaimsMap } from "./claims-map-Ca-QX8C6.js";
5
5
  //#region src/scim/types.d.ts
@@ -1,5 +1,5 @@
1
- import { T as Policy, rr as Principal, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
- import { E as SsfPermDockOptions, T as SsfPermDock, _ as SetSubject, c as PushSetOptions, d as SetDelivery, g as SetQueue, h as SetPollHandlerOptions, m as SetEvent, t as CaepCommon, v as SignSetOptions } from "./types-DiQjupG2.js";
1
+ import { T as Policy, rr as Principal, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
2
+ import { E as SsfPermDockOptions, T as SsfPermDock, _ as SetSubject, c as PushSetOptions, d as SetDelivery, g as SetQueue, h as SetPollHandlerOptions, m as SetEvent, t as CaepCommon, v as SignSetOptions } from "./types-C791HFu9.js";
3
3
  //#region src/ssf/create.d.ts
4
4
  declare function createPermDock<TUser, TPrincipal extends Principal = Principal>(policy: Policy<TUser, TPrincipal>, options: SsfPermDockOptions): SsfPermDock;
5
5
  //#endregion
@@ -1,9 +1,9 @@
1
- import { T as Policy, Zt as DeliveryChannel, j as PolicyVocabulary, q as DecisionSink, rr as Principal } from "./policy-types-DzwivBgR.js";
2
- import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
- import { t as Operation } from "./operations-CxybZErY.js";
4
- import { p as PrincipalSource, r as PermDock } from "./permdock-D7eeLJER.js";
5
- import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, g as TransportMessages, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, o as DeliveryResult, r as DeliverOptions, s as DeliveryTarget, y as WebhookTransport } from "./types-DX0LaKTb.js";
6
- import { l as WebhookSigner } from "./standard-webhooks-6lg8v_is.js";
1
+ import { T as Policy, Zt as DeliveryChannel, j as PolicyVocabulary, q as DecisionSink, rr as Principal } from "./policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "./vocabulary-CN8H_9UF.js";
3
+ import { t as Operation } from "./operations-X0VM7F3m.js";
4
+ import { p as PrincipalSource, r as PermDock } from "./permdock-SV8ZINYT.js";
5
+ import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, g as TransportMessages, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, o as DeliveryResult, r as DeliverOptions, s as DeliveryTarget, y as WebhookTransport } from "./types-BtHtcKMr.js";
6
+ import { l as WebhookSigner } from "./standard-webhooks-rbD7LS6h.js";
7
7
  //#region src/delivery/audience.d.ts
8
8
  type Audience = {
9
9
  /** Principal ids `decideFor` grants, in discovery or candidate order, each once. */