permdock 0.7.0 → 0.9.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 (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-BcudBQOF.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
  35. package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
  45. package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
  46. package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
  52. package/dist/catalog-D3oS2GH3.js +1 -0
  53. package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
  54. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  55. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  56. package/dist/catalog-operations-DeHTrJSV.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
  77. package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
  78. package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
  79. package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
  80. package/dist/collect-D-eroIfV.js +1 -0
  81. package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
  98. package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
  99. package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
  100. package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
  101. package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
  102. package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
  103. package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-DHldhVUv.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
  127. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  128. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
  130. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
  131. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-BFfzZSLH.js +58 -0
  150. package/dist/gen-BtfFWGbz.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  164. package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
  169. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  170. package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
  171. package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
  172. package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
  173. package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
  174. package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
  175. package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +34 -34
  178. package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
  179. package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +79 -26
  212. package/dist/next/index.js +121 -10
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
  223. package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
  224. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
  232. package/dist/output-files-BHOIlrfD.js +1 -0
  233. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  234. package/dist/ownership-DA5YdYTm.js +1059 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
  245. package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
  262. package/dist/powersync-B701tvhE.js +1 -0
  263. package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
  264. package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-D8x73IGm.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
  282. package/dist/pull-C3EEGzSw.js +1 -0
  283. package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
  284. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
  285. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-ConCSj1y.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
  306. package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
  310. package/dist/run-Ck22anC2.js +1 -0
  311. package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
  333. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  334. package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
  335. package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  344. package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  351. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-DZJvxFIZ.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
  357. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
  368. package/dist/supabase-hook-C0FyEACZ.js +1 -0
  369. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
  370. package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +225 -141
  394. package/dist/testing/index.js +352 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
  407. package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
  408. package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
  409. package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
  410. package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
  411. package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
  412. package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
  413. package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
  414. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  415. package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
  416. package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
  417. package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
  418. package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
  419. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  420. package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
  421. package/dist/types-tQB2CEnY.d.ts +262 -0
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-0hjZPIRX.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
  441. package/dist/watch-ClLuO2TL.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
  452. package/package.json +8 -8
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +16 -23
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -1,29 +1,29 @@
1
1
  import { n as isReadonlyArray, r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { n as isForbiddenKey, r as ownGet } from "./paths-DXSHAMIa.js";
4
- import { f as normalizeApproval, g as assertSqlFunctionName, h as assertSqlFunctionArg, m as assertPortableTwin, p as normalizeWhere, u as assertApprovalRelations } from "./role-builder-C1VJzvcr.js";
5
- import { n as PermDockDeniedError } from "./errors-BKy0EfhN.js";
6
- import { o as sameId } from "./expiry-D4_YKRKD.js";
7
- import { n as internalsOf } from "./internals-Dk8A8fX3.js";
8
- import { c as listPermissions, i as getRegistry, n as findPermission, o as isPermission } from "./permission-registry-DpPtSKNZ.js";
9
- import { n as isThenable$1 } from "./thenable-yD7SabqG.js";
10
- import { c as isEdgeRelation, m as restrictedStops, o as groupEntries, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
11
- import { a as durationOf, g as secondsOf, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
12
- import { a as normalizeMembership$1, d as scopeIdOf, f as scopeList, h as tenantOf, o as normalizeMemberships$1, s as resolveScope$1, u as scopeChain } from "./scopes-BHsc-wp-.js";
13
- import { u as evaluateCondition } from "./delegation-C5rOdTp5.js";
14
- import { _ as listPlans, a as authenticated, m as findRole, o as flattenGrantee } from "./grantee-BrRANrpT.js";
15
- import { m as tenantsOf, r as isMembershipExpired } from "./tenancy-CmeBQ6Nv.js";
16
- import { r as grantList, s as levelNames, t as declaredRoleNames } from "./policy-DaJy4nK4.js";
17
- import { o as isPortableCondition } from "./hosted-XBgU6RGT.js";
18
- import { n as OPERATION_RISKS, r as isOperationRisk } from "./permissions-CyH2MV_B.js";
19
- import { C as tenantCustomRoles, f as customRoleId, l as ceilingGrants, m as customRoleScope, p as customRoleOf, x as resolveCustomRole } from "./evaluate-B_oqFbWC.js";
20
- import { d as rankRoles, f as usesAssigns, i as collectSnapshotGrants, n as snapshotScopes, t as snapshotOf, u as bindingOf } from "./instance-snapshot-CjcwnEiV.js";
21
- import { n as relationId } from "./relations-BnCWnJGI.js";
22
- import { r as snapshotGrant, t as buildSnapshot } from "./snapshot-CbGmYiJx.js";
23
- import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-T1Q8X3A2.js";
24
- import { c as APP, r as resolveSubject } from "./permdock-BfWEeMqk.js";
25
- import { i as memoryApprovalStore } from "./store-DSP9oGvh.js";
26
- import { n as wrapPermDock } from "./wrap-CiSc_KCq.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { n as isForbiddenKey, r as ownGet } from "./paths-CUvURzHp.js";
4
+ import { f as normalizeApproval, g as assertSqlFunctionName, h as assertSqlFunctionArg, m as assertPortableTwin, p as normalizeWhere, u as assertApprovalRelations } from "./role-builder-BK2-T6oD.js";
5
+ import { n as PermDockDeniedError } from "./errors-B6R_lg2a.js";
6
+ import { o as sameId } from "./expiry-6XByK0dm.js";
7
+ import { n as internalsOf } from "./internals-B3IgHrvo.js";
8
+ import { c as listPermissions, i as getRegistry, n as findPermission, o as isPermission } from "./permission-registry-B8tYxPIt.js";
9
+ import { n as isThenable$1 } from "./thenable-BNSM1U2R.js";
10
+ import { c as isEdgeRelation, m as restrictedStops, o as groupEntries, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-8-pCScBO.js";
11
+ import { a as durationOf, f as nowMillis, g as secondsOf, m as rfc3339, p as nowSeconds } from "./time-nR1JesoH.js";
12
+ import { a as normalizeMembership$1, d as scopeIdOf, f as scopeList, h as tenantOf, l as rootScope, o as normalizeMemberships$1, s as resolveScope$1, u as scopeChain } from "./scopes-0Up_UA2t.js";
13
+ import { u as evaluateCondition } from "./delegation-CDB6_keF.js";
14
+ import { _ as listPlans, a as authenticated, m as findRole, o as flattenGrantee } from "./grantee-Dke-9rd1.js";
15
+ import { m as tenantsOf, r as isMembershipExpired } from "./tenancy-5d1zVBvK.js";
16
+ import { c as levelNames, i as grantList, n as declaredRoleNames } from "./policy-CLQ8__GF.js";
17
+ import { o as isPortableCondition } from "./hosted-D0IzESu_.js";
18
+ import { n as OPERATION_RISKS, r as isOperationRisk } from "./permissions-CVXmRILq.js";
19
+ import { C as tenantCustomRoles, S as roleAllowKeys, f as customRoleId, l as ceilingGrants, m as customRoleScope, p as customRoleOf, x as resolveCustomRole } from "./evaluate-BAmf_AQd.js";
20
+ import { a as heldLevels, f as bindingOf, h as usesAssigns, m as roleMeta, n as snapshotScopes, o as collectSnapshotGrants, p as rankRoles, r as assignableCandidates, t as snapshotOf } from "./instance-snapshot-DuWf1cT3.js";
21
+ import { n as relationId } from "./relations-BxvRvDHK.js";
22
+ import { i as snapshotGrant, r as plainPermission, t as buildSnapshot } from "./snapshot-CXlzi69u.js";
23
+ import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-DEiCF4ah.js";
24
+ import { c as APP, r as resolveSubject } from "./permdock-BvjivVb9.js";
25
+ import { i as memoryApprovalStore } from "./store-RNFvaJJv.js";
26
+ import { n as wrapPermDock } from "./wrap-B2wziJI_.js";
27
27
  //#region src/conditions/sql-function.ts
28
28
  function sqlFunction(name, options) {
29
29
  assertSqlFunctionName(name);
@@ -51,7 +51,10 @@ function memorySettingsSource(settings) {
51
51
  return byTenant.get(tenant);
52
52
  } });
53
53
  }
54
- /** Memberships keyed by principal id; `tenant` is not a filter, as for a database source. */
54
+ /**
55
+ * Memberships keyed by principal id; `tenant` is not a filter, as for a
56
+ * database source.
57
+ */
55
58
  function memoryMembershipSource(entries) {
56
59
  const byPrincipal = new Map(Object.entries(entries));
57
60
  return Object.freeze({
@@ -125,7 +128,10 @@ const OPERATION_EFFECTS = Object.freeze([
125
128
  "spend",
126
129
  "external"
127
130
  ]);
128
- /** MCP tool-name characters (MCP 2025-11-25, Tools: Tool names), so a name works as a tool name unchanged. */
131
+ /**
132
+ * MCP tool-name characters (MCP 2025-11-25, Tools: Tool names), so a name works
133
+ * as a tool name unchanged.
134
+ */
129
135
  const NAME = /^[A-Za-z0-9_.-]{1,128}$/u;
130
136
  const META_KEYS = /* @__PURE__ */ new Set([
131
137
  "risk",
@@ -199,7 +205,10 @@ function defineOperations(permissions, definitions) {
199
205
  }
200
206
  //#endregion
201
207
  //#region src/core/approval-policies.ts
202
- /** The denial detail when an `ApprovalPolicySource` fails: every call an allow would grant denies with reason `approval`. */
208
+ /**
209
+ * The denial detail when an `ApprovalPolicySource` fails: every call an allow
210
+ * would grant denies with reason `approval`.
211
+ */
203
212
  /**
204
213
  * The in-process `ApprovalPolicySource`, usable directly as the
205
214
  * `approvalPolicies` option: it is the source and its feature at once.
@@ -284,9 +293,9 @@ function checkOne(policy, raw) {
284
293
  }) };
285
294
  }
286
295
  /**
287
- * Checks one entry against the policy the way `approvalPoliciesFor` loads
288
- * it, for an application to refuse a bad entry when it is saved instead of
289
- * finding every call denied. Never throws.
296
+ * Checks one entry against the policy the way `approvalPoliciesFor` loads it,
297
+ * for an application to refuse a bad entry when it is saved instead of finding
298
+ * every call denied. Never throws.
290
299
  */
291
300
  function validateApprovalPolicy(policy, entry) {
292
301
  try {
@@ -303,9 +312,9 @@ function validateApprovalPolicy(policy, entry) {
303
312
  }
304
313
  }
305
314
  /**
306
- * One raw entry checked against the policy: `null` when it names no
307
- * permission the policy declares (it applies to nothing), `undefined` when
308
- * it does not load.
315
+ * One raw entry checked against the policy: `null` when it names no permission
316
+ * the policy declares (it applies to nothing), `undefined` when it does not
317
+ * load.
309
318
  */
310
319
  function loadOne(policy, raw) {
311
320
  const checked = checkOne(policy, raw);
@@ -322,7 +331,10 @@ function loadAll(policy, raw) {
322
331
  }
323
332
  return Object.freeze({ tighten: (code, input) => tightenApproval(code, out, input) });
324
333
  }
325
- /** Reads the source once for `tenants`; a throw or an invalid entry loads as `"failed"`. */
334
+ /**
335
+ * Reads the source once for `tenants`; a throw or an invalid entry loads as
336
+ * `"failed"`.
337
+ */
326
338
  function approvalPoliciesFor(policy, source, tenants, auth) {
327
339
  const threw = () => {
328
340
  auth.push({
@@ -361,7 +373,10 @@ function asStages(approval) {
361
373
  quorum: approval.quorum
362
374
  })];
363
375
  }
364
- /** An entry's stages, each carrying the entry's escalation unless it has its own. */
376
+ /**
377
+ * An entry's stages, each carrying the entry's escalation unless it has its
378
+ * own.
379
+ */
365
380
  function entryStages(approval) {
366
381
  const stages = asStages(approval);
367
382
  if (approval === "human" || approval.escalation === void 0) return stages;
@@ -378,10 +393,10 @@ function shorter(a, b) {
378
393
  return (durationOf(b) ?? Infinity) < (durationOf(a) ?? Infinity) ? b : a;
379
394
  }
380
395
  /**
381
- * `code` with every matching entry added as further stages: the result
382
- * needs all of them (`'sequential'` when any part is ordered), keeps the
383
- * code's escalation, the shortest `ttl`, and `distinct` unless every part
384
- * opts out. Without a matching entry, `code` unchanged.
396
+ * `code` with every matching entry added as further stages: the result needs
397
+ * all of them (`'sequential'` when any part is ordered), keeps the code's
398
+ * escalation, the shortest `ttl`, and `distinct` unless every part opts out.
399
+ * Without a matching entry, `code` unchanged.
385
400
  */
386
401
  function tightenApproval(code, entries, input) {
387
402
  const extra = entries.filter((entry) => (entry.permission === void 0 || entry.permission === input.permission) && metaMatches(entry, input.operation) && matches(entry, input.tenant, input.subject, input.current, input.next, input.now, input.scopes));
@@ -621,7 +636,10 @@ function applyQuota(store, input) {
621
636
  }
622
637
  //#endregion
623
638
  //#region src/core/memory-relations.ts
624
- /** The holders one edge-table row names for `spec`: none when the row does not belong to it. */
639
+ /**
640
+ * The holders one edge-table row names for `spec`: none when the row does not
641
+ * belong to it.
642
+ */
625
643
  function tableHolders(resourceName, spec, row, id) {
626
644
  if (relationId(ownGet(row, spec.object ?? `${resourceName}_id`)) !== id) return [];
627
645
  for (const [column, value] of Object.entries(spec.match ?? {})) if (ownGet(row, column) !== value) return [];
@@ -801,6 +819,107 @@ function signPolicyDocument(document, signer, options) {
801
819
  });
802
820
  }
803
821
  //#endregion
822
+ //#region src/core/version-cache.ts
823
+ const MAX_STALE_CEILING_MS = 6e4;
824
+ const DEFAULT_MAX_ENTRIES = 1e4;
825
+ /**
826
+ * An in-process `VersionCache`: a bounded LRU keyed by principal id that keeps
827
+ * resolved versions and shares reads in flight. Create it once at module
828
+ * scope.
829
+ */
830
+ function memoryVersionCache(options) {
831
+ const maxStaleMs = Math.min(Math.max(Math.floor(options.maxStaleMs), 0), MAX_STALE_CEILING_MS);
832
+ const maxEntries = Math.max(Math.floor(options.maxEntries ?? DEFAULT_MAX_ENTRIES), 1);
833
+ const entries = /* @__PURE__ */ new Map();
834
+ const inFlight = /* @__PURE__ */ new Map();
835
+ const counts = {
836
+ reads: 0,
837
+ shared: 0,
838
+ hits: 0,
839
+ evictions: 0
840
+ };
841
+ const now = () => nowMillis(options.now?.());
842
+ const store = (id, entry) => {
843
+ entries.delete(id);
844
+ entries.set(id, entry);
845
+ if (entries.size > maxEntries) {
846
+ const oldest = entries.keys().next();
847
+ if (oldest.done !== true) entries.delete(oldest.value);
848
+ }
849
+ };
850
+ const observe = (principal, at) => {
851
+ const claimed = principal.authzVersion;
852
+ if (typeof claimed !== "number") return;
853
+ const issued = typeof principal.issuedAt === "number" ? principal.issuedAt * 1e3 : void 0;
854
+ const entry = entries.get(principal.id);
855
+ if (entry === void 0) {
856
+ if (issued !== void 0 && issued <= at && at - issued <= maxStaleMs) store(principal.id, {
857
+ version: claimed,
858
+ at: issued
859
+ });
860
+ return;
861
+ }
862
+ if (claimed > entry.version) store(principal.id, {
863
+ version: claimed,
864
+ at: issued === void 0 ? entry.at : Math.max(entry.at, issued)
865
+ });
866
+ };
867
+ const start = (id, read, at) => {
868
+ counts.reads += 1;
869
+ const keep = (version) => {
870
+ if (typeof version === "number" && Number.isFinite(version)) {
871
+ const entry = entries.get(id);
872
+ store(id, {
873
+ version: Math.max(version, entry?.version ?? version),
874
+ at
875
+ });
876
+ }
877
+ return version;
878
+ };
879
+ const answer = read();
880
+ if (!isThenable$1(answer)) return keep(answer);
881
+ const pending = Promise.resolve(answer).then((version) => inFlight.get(id) === pending ? keep(version) : version);
882
+ inFlight.set(id, pending);
883
+ const settle = () => {
884
+ if (inFlight.get(id) === pending) inFlight.delete(id);
885
+ };
886
+ pending.then(settle, settle);
887
+ return pending;
888
+ };
889
+ return Object.freeze({
890
+ name: "memory",
891
+ maxStaleMs,
892
+ current(principal, read, { live }) {
893
+ const at = now();
894
+ if (live) return start(principal.id, read, at);
895
+ observe(principal, at);
896
+ const entry = entries.get(principal.id);
897
+ if (entry !== void 0 && at - entry.at <= maxStaleMs) {
898
+ counts.hits += 1;
899
+ store(principal.id, entry);
900
+ return entry.version;
901
+ }
902
+ const pending = inFlight.get(principal.id);
903
+ if (pending !== void 0) {
904
+ counts.shared += 1;
905
+ return pending;
906
+ }
907
+ return start(principal.id, read, at);
908
+ },
909
+ evict(principal) {
910
+ counts.evictions += 1;
911
+ entries.delete(principal);
912
+ inFlight.delete(principal);
913
+ },
914
+ stats() {
915
+ return {
916
+ ...counts,
917
+ size: entries.size
918
+ };
919
+ }
920
+ });
921
+ }
922
+ //#endregion
804
923
  //#region src/core/arazzo.ts
805
924
  const VERSION = /^1\.[01]\.\d+(?:-.+)?$/u;
806
925
  const STEP_TARGETS = [
@@ -942,7 +1061,10 @@ function permissionKeysOf(node) {
942
1061
  if (!Array.isArray(raw)) return [];
943
1062
  return raw.filter((item) => typeof item === "string");
944
1063
  }
945
- /** `$inputs.a.b` against the frame's inputs; anything else that is a runtime expression is unknown. */
1064
+ /**
1065
+ * `$inputs.a.b` against the frame's inputs; anything else that is a runtime
1066
+ * expression is unknown.
1067
+ */
946
1068
  function valueOf(value, inputs) {
947
1069
  if (typeof value !== "string" || !value.includes("$")) return {
948
1070
  known: true,
@@ -1142,10 +1264,9 @@ function combine(decisions) {
1142
1264
  return decisions.find((item) => item.outcome === outcome) ?? denied("undocumented");
1143
1265
  }
1144
1266
  /**
1145
- * Walks an Arazzo workflow against `permdock`: each step's operation is
1146
- * decided as `permdock.simulate` would, and a server instance emits one
1147
- * simulate event for the whole plan. Works on an instance built from a
1148
- * snapshot too.
1267
+ * Walks an Arazzo workflow against `permdock`: each step's operation is decided
1268
+ * as `permdock.simulate` would, and a server instance emits one simulate event
1269
+ * for the whole plan. Works on an instance built from a snapshot too.
1149
1270
  */
1150
1271
  function simulateArazzo(permdock, input) {
1151
1272
  const tree = input.permissions ?? permdock.permissions;
@@ -1205,7 +1326,10 @@ function planArazzo(input, tree, decide) {
1205
1326
  }
1206
1327
  //#endregion
1207
1328
  //#region src/core/local-manifest.ts
1208
- /** A relation grantee needs the relation graph, which a device does not hold: the grant decides on the server only. */
1329
+ /**
1330
+ * A relation grantee needs the relation graph, which a device does not hold:
1331
+ * the grant decides on the server only.
1332
+ */
1209
1333
  function localGrant(grant) {
1210
1334
  const relational = flattenGrantee(grant.to).some((item) => item.kind === "relation");
1211
1335
  return snapshotGrant(relational ? {
@@ -1213,6 +1337,21 @@ function localGrant(grant) {
1213
1337
  portable: false
1214
1338
  } : grant, void 0);
1215
1339
  }
1340
+ /**
1341
+ * The levels a holder of `grants` may hand out, by permission key; only
1342
+ * permissions whose resource declares levels.
1343
+ */
1344
+ function reachOf(policy, grants) {
1345
+ const out = /* @__PURE__ */ new Map();
1346
+ for (const grant of grants) {
1347
+ const { key, resource, kind } = grant.permission;
1348
+ const names = grant.effect === "allow" && kind === "instance" ? levelNames(policy, resource) : [];
1349
+ if (names.length === 0) continue;
1350
+ const held = /* @__PURE__ */ new Set([...out.get(key) ?? [], ...heldLevels(policy, grant, names)]);
1351
+ out.set(key, names.filter((name) => held.has(name)));
1352
+ }
1353
+ return Object.fromEntries(out);
1354
+ }
1216
1355
  function customTable(policy, scope, roles) {
1217
1356
  const keys = [...new Set(ceilingGrants(policy, scope).map((grant) => grant.permission.key))];
1218
1357
  if (keys.length === 0) return;
@@ -1225,28 +1364,71 @@ function customTable(policy, scope, roles) {
1225
1364
  tenant: LOCAL_CUSTOM_ROLE,
1226
1365
  scope,
1227
1366
  ...body
1228
- }).grants.map(localGrant);
1367
+ }).grants;
1229
1368
  const permissions = {};
1230
1369
  for (const key of keys) {
1231
1370
  const leaf = findPermission(policy.permissions, key);
1232
1371
  const names = leaf?.kind === "instance" ? levelNames(policy, leaf.resource) : [];
1372
+ const all = resolve({ grants: [{ permission: key }] });
1373
+ const leveled = names.map((level) => [level, resolve({ grants: [{
1374
+ permission: key,
1375
+ level
1376
+ }] })]);
1233
1377
  permissions[key] = compact({
1234
- all: resolve({ grants: [{ permission: key }] }),
1235
- levels: names.length === 0 ? void 0 : Object.fromEntries(names.map((level) => [level, resolve({ grants: [{
1236
- permission: key,
1237
- level
1238
- }] })]))
1378
+ all: all.map(localGrant),
1379
+ levels: names.length === 0 ? void 0 : Object.fromEntries(leveled.map(([level, grants]) => [level, grants.map(localGrant)])),
1380
+ reach: names.length === 0 ? void 0 : reachOf(policy, all)[key] ?? [],
1381
+ levelReach: names.length === 0 ? void 0 : Object.fromEntries(leveled.map(([level, grants]) => [level, reachOf(policy, grants)[key] ?? []]))
1239
1382
  });
1240
1383
  }
1241
1384
  const includes = {};
1385
+ const includeReach = {};
1242
1386
  for (const role of roles) {
1243
1387
  const grants = resolve({ includes: [role] });
1244
- if (grants.length > 0) includes[role] = grants;
1388
+ if (grants.length > 0) {
1389
+ includes[role] = grants.map(localGrant);
1390
+ const reach = reachOf(policy, grants);
1391
+ if (Object.keys(reach).length > 0) includeReach[role] = reach;
1392
+ }
1245
1393
  }
1246
- return {
1394
+ return compact({
1247
1395
  permissions,
1248
- includes
1249
- };
1396
+ includes,
1397
+ includeReach: Object.keys(includeReach).length === 0 ? void 0 : includeReach
1398
+ });
1399
+ }
1400
+ /** The hand-out rules `buildLocalSnapshot` applies on the device. */
1401
+ function localAssignable(policy) {
1402
+ const scopes = scopeList(policy.scopes);
1403
+ const root = rootScope(scopes);
1404
+ const ceiling = new Set((root === void 0 ? [] : ceilingGrants(policy, root)).map((grant) => grant.permission.key));
1405
+ const leaves = listPermissions(policy.permissions);
1406
+ const levels = {};
1407
+ for (const leaf of leaves) {
1408
+ const names = leaf.kind === "instance" ? levelNames(policy, leaf.resource) : [];
1409
+ if (names.length > 0) levels[leaf.key] = names;
1410
+ }
1411
+ const grants = {};
1412
+ for (const [index, grant] of grantList(policy).entries()) {
1413
+ const reach = flattenGrantee(grant.to).some((item) => item.kind === "relation") ? levels[grant.permission.key] === void 0 ? void 0 : [] : reachOf(policy, [grant])[grant.permission.key];
1414
+ if (reach !== void 0) grants[String(index)] = reach;
1415
+ }
1416
+ const declared = [...declaredRoleNames(policy)].toSorted();
1417
+ return compact({
1418
+ roles: assignableCandidates(policy).map((leaf) => ({
1419
+ name: leaf.key,
1420
+ on: (leaf.on === void 0 ? root : resolveScope$1(scopes, leaf.on)) ?? "global",
1421
+ allows: [...roleAllowKeys(policy, leaf.key)].toSorted()
1422
+ })),
1423
+ manage: {
1424
+ roles: declared.filter((name) => roleMeta(policy, name)?.manageRoles === true),
1425
+ permissions: leaves.filter((leaf) => leaf.meta.manageRoles === true).map((leaf) => leaf.key)
1426
+ },
1427
+ assigns: usesAssigns(policy) ? Object.fromEntries(declared.map((name) => [name, policy.rolesByName.get(name)?.assigns ?? []])) : void 0,
1428
+ permissions: leaves.filter((leaf) => ceiling.has(leaf.key)).map(plainPermission),
1429
+ levels: Object.keys(levels).length === 0 ? void 0 : levels,
1430
+ grants: Object.keys(grants).length === 0 ? void 0 : grants
1431
+ });
1250
1432
  }
1251
1433
  /**
1252
1434
  * What the policy grants, as JSON a device turns into snapshots from its own
@@ -1277,7 +1459,8 @@ function localSnapshotManifest(policy) {
1277
1459
  roles,
1278
1460
  rank: usesAssigns(policy) ? rankRoles(policy, roles) : void 0,
1279
1461
  grants: grantList(policy).map(localGrant),
1280
- custom
1462
+ custom,
1463
+ assignable: localAssignable(policy)
1281
1464
  }));
1282
1465
  }
1283
1466
  //#endregion
@@ -1291,10 +1474,10 @@ function assertProduction(policy, options) {
1291
1474
  if (options.limits === void 0 && grants.some((grant) => grant.limit !== void 0)) throw new Error("PermDock: profile 'prod' needs limits: a grant has a limit and every call would deny with limit-unavailable; pass limits: limits(store)");
1292
1475
  }
1293
1476
  /**
1294
- * The in-process services `dev` fills in: one memory approval store that
1295
- * every adapter of the app shares, and memory limits when a grant has a
1296
- * `limit`. They live here, not in the adapters, so an adapter ships no store
1297
- * and an app without `defineApp` ships neither.
1477
+ * The in-process services `dev` fills in: one memory approval store that every
1478
+ * adapter of the app shares, and memory limits when a grant has a `limit`. They
1479
+ * live here, not in the adapters, so an adapter ships no store and an app
1480
+ * without `defineApp` ships neither.
1298
1481
  */
1299
1482
  function devDefaults(policy, options) {
1300
1483
  return {
@@ -1305,10 +1488,10 @@ function devDefaults(policy, options) {
1305
1488
  };
1306
1489
  }
1307
1490
  /**
1308
- * Binds the app's sources, features and services to `policy`. The result
1309
- * is a policy: pass it wherever a policy goes (`createPermDock`, every
1310
- * adapter, the CLI) and each picks up the app definition, with its own
1311
- * options taking precedence. The profile defaults to `prod`.
1491
+ * Binds the app's sources, features and services to `policy`. The result is a
1492
+ * policy: pass it wherever a policy goes (`createPermDock`, every adapter, the
1493
+ * CLI) and each picks up the app definition, with its own options taking
1494
+ * precedence. The profile defaults to `prod`.
1312
1495
  */
1313
1496
  function defineApp(policy, options = {}) {
1314
1497
  const profile = options.profile ?? "prod";
@@ -1356,12 +1539,12 @@ function legacyDecision(allowed, permission, subject) {
1356
1539
  });
1357
1540
  }
1358
1541
  /**
1359
- * Runs PermDock beside the application's existing checks while adopting
1360
- * it. Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both;
1361
- * the legacy answer is returned unless the permission is in `enforce`, and
1362
- * every disagreement reaches `onMismatch`. Promote permissions one by one
1363
- * as their mismatches are resolved, then remove the wrap. Pass it as an
1364
- * adapter's `wrap` option, or call it on a core instance.
1542
+ * Runs PermDock beside the application's existing checks while adopting it.
1543
+ * Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both; the
1544
+ * legacy answer is returned unless the permission is in `enforce`, and every
1545
+ * disagreement reaches `onMismatch`. Promote permissions one by one as their
1546
+ * mismatches are resolved, then remove the wrap. Pass it as an adapter's `wrap`
1547
+ * option, or call it on a core instance.
1365
1548
  */
1366
1549
  function shadowMode(options) {
1367
1550
  const enforced = (permission) => options.enforce === "all" || (options.enforce ?? []).some((item) => item.key === permission.key);
@@ -1466,9 +1649,9 @@ function ofTenant(tenant, roles) {
1466
1649
  return Array.isArray(roles) ? roles.filter((role) => role !== null && typeof role === "object" && Reflect.get(role, "tenant") === tenant) : [];
1467
1650
  }
1468
1651
  /**
1469
- * A `CustomRoleSource` over a reader that returns every custom role of a tenant.
1470
- * It keeps only the roles of the requested tenant. With `read: 'held'` it
1471
- * skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
1652
+ * A `CustomRoleSource` over a reader that returns every custom role of a
1653
+ * tenant. It keeps only the roles of the requested tenant. With `read: 'held'`
1654
+ * it skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
1472
1655
  * subject holds only declared roles there.
1473
1656
  */
1474
1657
  function customRoleSource(reader, options = {}) {
@@ -1497,10 +1680,10 @@ function withPlans(subject, plans) {
1497
1680
  }));
1498
1681
  }
1499
1682
  /**
1500
- * Builds the serializable access snapshot for a subject without a request,
1501
- * a network call or a cache directive: call it inside the app's own
1502
- * `'use cache: private'` function. Synchronous; the policy's `subject` and
1503
- * `context` mappers must be synchronous too.
1683
+ * Builds the serializable access snapshot for a subject without a request, a
1684
+ * network call or a cache directive: call it inside the app's own `'use cache:
1685
+ * private'` function. Synchronous; the policy's `subject` and `context` mappers
1686
+ * must be synchronous too.
1504
1687
  */
1505
1688
  function snapshotFor(policy, user, options = {}) {
1506
1689
  const auth = [];
@@ -1601,15 +1784,17 @@ function writable(options) {
1601
1784
  //#endregion
1602
1785
  //#region src/core/scope-helpers.ts
1603
1786
  /**
1604
- * The canonical form PermDock evaluates one membership in, or `undefined`
1605
- * when it is malformed and grants nothing. `scopes` is the policy's or the
1606
- * catalog's scope list; absent or empty means the implicit `tenant` and
1607
- * `team` pair.
1787
+ * The canonical form PermDock evaluates one membership in, or `undefined` when
1788
+ * it is malformed and grants nothing. `scopes` is the policy's or the catalog's
1789
+ * scope list; absent or empty means the implicit `tenant` and `team` pair.
1608
1790
  */
1609
1791
  function normalizeMembership(input, scopes) {
1610
1792
  return normalizeMembership$1(input, scopeList(scopes));
1611
1793
  }
1612
- /** Every well-formed membership of `input` in canonical form; malformed entries are dropped. */
1794
+ /**
1795
+ * Every well-formed membership of `input` in canonical form; malformed entries
1796
+ * are dropped.
1797
+ */
1613
1798
  function normalizeMemberships(input, scopes) {
1614
1799
  return normalizeMemberships$1(input, scopeList(scopes));
1615
1800
  }
@@ -1629,14 +1814,20 @@ function coversInstance(membership, scopes, scope, id, within) {
1629
1814
  const wanted = within === void 0 ? void 0 : Object.entries(within).find(([key]) => resolveScope$1(scopes, key) === membership.scope)?.[1] ?? void 0;
1630
1815
  return wanted !== void 0 && scopeIdOf(membership, membership.scope) === wanted;
1631
1816
  }
1632
- /** Roles the principal holds at the instance, at an ancestor named in `within`, or globally. */
1817
+ /**
1818
+ * Roles the principal holds at the instance, at an ancestor named in `within`,
1819
+ * or globally.
1820
+ */
1633
1821
  function rolesAtInstance(policy, principal, scopes, scope, id, within, now) {
1634
1822
  const declared = declaredRoleNames(policy);
1635
1823
  const names = new Set((principal.roles ?? []).filter((name) => declared.has(name)));
1636
1824
  for (const membership of principal.memberships ?? []) if (!isMembershipExpired(membership, now) && coversInstance(membership, scopes, scope, id, within)) for (const name of membership.roles) names.add(name);
1637
1825
  return rankRoles(policy, [...names]);
1638
1826
  }
1639
- /** Whether the principal holds `role` on a live membership of exactly this instance. */
1827
+ /**
1828
+ * Whether the principal holds `role` on a live membership of exactly this
1829
+ * instance.
1830
+ */
1640
1831
  function holdsAt(principal, role, scope, id, now) {
1641
1832
  return (principal.memberships ?? []).some((membership) => membership.scope === scope && sameId(membership.id, id) && !isMembershipExpired(membership, now) && membership.roles.includes(role));
1642
1833
  }
@@ -1644,8 +1835,8 @@ function includedRoles(role) {
1644
1835
  return isReadonlyArray(role.includes) ? role.includes.filter((name) => typeof name === "string") : [];
1645
1836
  }
1646
1837
  /**
1647
- * The membership kinds a custom role may be held through: those every
1648
- * included declared role with `for` allows. `undefined` when none restricts.
1838
+ * The membership kinds a custom role may be held through: those every included
1839
+ * declared role with `for` allows. `undefined` when none restricts.
1649
1840
  */
1650
1841
  function customForKinds(policy, role) {
1651
1842
  let kinds;
@@ -1691,10 +1882,10 @@ function countRules(rules, holders, delta, deny) {
1691
1882
  }
1692
1883
  /**
1693
1884
  * The rules of a role change that need no subject: `assigns`, `for`,
1694
- * `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
1695
- * the target's roles alone. `decideRoleChange` runs the same function after
1696
- * its actor, tenant and ceiling checks; a service that holds only the
1697
- * catalog calls it with the `CatalogRole` entries.
1885
+ * `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and the
1886
+ * target's roles alone. `decideRoleChange` runs the same function after its
1887
+ * actor, tenant and ceiling checks; a service that holds only the catalog calls
1888
+ * it with the `CatalogRole` entries.
1698
1889
  */
1699
1890
  function checkRoleChange(role, input) {
1700
1891
  const name = role.key;
@@ -1769,12 +1960,12 @@ function heldAnchor(principal, scopes, scope, id, now) {
1769
1960
  * the instance's own principal; nothing in `change` can stand in for it.
1770
1961
  */
1771
1962
  /**
1772
- * Whether the subject of `permdock` may assign, revoke or transfer a role
1773
- * in one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`,
1774
- * `min`, `max` and `transferOnly`. It never writes; the application does,
1775
- * and generated RLS triggers re-check the holder counts at commit. A nested
1776
- * instance's tenant comes from a live membership the subject holds on it,
1777
- * or from `change.within` only with `{ trusted: true }`; otherwise
1963
+ * Whether the subject of `permdock` may assign, revoke or transfer a role in
1964
+ * one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`, `min`,
1965
+ * `max` and `transferOnly`. It never writes; the application does, and
1966
+ * generated RLS triggers re-check the holder counts at commit. A nested
1967
+ * instance's tenant comes from a live membership the subject holds on it, or
1968
+ * from `change.within` only with `{ trusted: true }`; otherwise
1778
1969
  * `no-membership`. An instance built from a snapshot denies with
1779
1970
  * `unsupported`.
1780
1971
  */
@@ -1931,8 +2122,8 @@ function field(value) {
1931
2122
  return /[",\r\n]/u.test(text) ? `"${text.replaceAll("\"", "\"\"")}"` : text;
1932
2123
  }
1933
2124
  /**
1934
- * One RFC 4180 row for a decision or approval event, without a line
1935
- * terminator; join rows with CRLF under a `CSV_COLUMNS` header.
2125
+ * One RFC 4180 row for a decision or approval event, without a line terminator;
2126
+ * join rows with CRLF under a `CSV_COLUMNS` header.
1936
2127
  */
1937
2128
  function toCsvRow(event) {
1938
2129
  return [
@@ -1949,4 +2140,4 @@ function toCsvRow(event) {
1949
2140
  ].map(field).join(",");
1950
2141
  }
1951
2142
  //#endregion
1952
- export { memoryCustomRoleSource as A, stripeEntitlementSource as C, validateApprovalPolicy as D, memoryApprovalPolicySource as E, sqlFunction as F, memoryMembershipSource as M, memorySettingsSource as N, defineOperations as O, memorySnapshotSource as P, memoryLimitStore as S, approvalPoliciesFor as T, arazzoFindings as _, normalizeMembership as a, memoryRelationSource as b, crud as c, snapshotFor as d, customRoleSource as f, localSnapshotManifest as g, defineApp as h, decideRoleChange as i, memoryEntitlementSource as j, isOperationEffect as k, readable as l, shadowMode as m, toCsvRow as n, normalizeMemberships as o, mayAccess as p, checkRoleChange as r, resolveScope as s, CSV_COLUMNS as t, writable as u, simulateArazzo as v, approvalPolicies as w, limits as x, signPolicyDocument as y };
2143
+ export { isOperationEffect as A, memoryLimitStore as C, memoryApprovalPolicySource as D, approvalPoliciesFor as E, memorySnapshotSource as F, sqlFunction as I, memoryEntitlementSource as M, memoryMembershipSource as N, validateApprovalPolicy as O, memorySettingsSource as P, limits as S, approvalPolicies as T, arazzoFindings as _, normalizeMembership as a, signPolicyDocument as b, crud as c, snapshotFor as d, customRoleSource as f, localSnapshotManifest as g, defineApp as h, decideRoleChange as i, memoryCustomRoleSource as j, defineOperations as k, readable as l, shadowMode as m, toCsvRow as n, normalizeMemberships as o, mayAccess as p, checkRoleChange as r, resolveScope as s, CSV_COLUMNS as t, writable as u, simulateArazzo as v, stripeEntitlementSource as w, memoryRelationSource as x, memoryVersionCache as y };
@@ -1,4 +1,4 @@
1
- import { A as SsfSubject, C as SsfEventName, D as SsfReceiver, E as SsfPermDockOptions, M as SsfTransmitterConfiguration, N as SsfVerification, O as SsfStreamConfiguration, S as SsfEventListener, T as SsfPermDock, _ as SetSubject, a as PollHandle, b as SsfEventHandler, c as PushSetOptions, d as SetDelivery, f as SetDeliveryFailureCause, g as SetQueue, h as SetPollHandlerOptions, i as CaepReason, j as SsfSubjectResolver, k as SsfStreamStatus, l as ReplayStore, m as SetEvent, n as CaepEventName, o as PollOptions, p as SetError, r as CaepInitiatingEntity, s as PollResult, t as CaepCommon, u as RiscEventName, v as SignSetOptions, w as SsfOnEvent, x as SsfEventInput, y as SsfAuditEvent } from "../types-cTos-H7p.js";
2
- import { t as memoryReplayStore } from "../replay-DCDD_ZfL.js";
3
- import { A as createPermDock, C as memorySsfStreamStore, D as PollSetsResult, E as PollSetsOptions, O as PolledSet, S as SsfStreamStore, T as setPollHandler, _ as SsfFanOut, a as CaepTokenClaimsChange, b as ssfTransmitter, c as RiscEvents, d as caepEvents, f as pushSet, g as FanOutSetOptions, h as streamVerificationEvent, i as CaepEvents, k as pollSets, l as SSF_POLL_DELIVERY, m as signSet, n as CaepCredentialChange, o as RiscAccountDisabled, p as riscEvents, r as CaepDeviceComplianceChange, s as RiscCredentialCompromise, t as CaepAssuranceLevelChange, u as SSF_PUSH_DELIVERY, v as SsfTransmitterOptions, w as memorySetQueue, x as SsfStream, y as fanOutSet } from "../index-CMiPH2Tv.js";
1
+ import { A as SsfSubject, C as SsfEventName, D as SsfReceiver, E as SsfPermDockOptions, M as SsfTransmitterConfiguration, N as SsfVerification, O as SsfStreamConfiguration, S as SsfEventListener, T as SsfPermDock, _ as SetSubject, a as PollHandle, b as SsfEventHandler, c as PushSetOptions, d as SetDelivery, f as SetDeliveryFailureCause, g as SetQueue, h as SetPollHandlerOptions, i as CaepReason, j as SsfSubjectResolver, k as SsfStreamStatus, l as ReplayStore, m as SetEvent, n as CaepEventName, o as PollOptions, p as SetError, r as CaepInitiatingEntity, s as PollResult, t as CaepCommon, u as RiscEventName, v as SignSetOptions, w as SsfOnEvent, x as SsfEventInput, y as SsfAuditEvent } from "../types-DsHGPtkR.js";
2
+ import { t as memoryReplayStore } from "../replay-Bs9Df2fQ.js";
3
+ import { A as createPermDock, C as memorySsfStreamStore, D as PollSetsResult, E as PollSetsOptions, O as PolledSet, S as SsfStreamStore, T as setPollHandler, _ as SsfFanOut, a as CaepTokenClaimsChange, b as ssfTransmitter, c as RiscEvents, d as caepEvents, f as pushSet, g as FanOutSetOptions, h as streamVerificationEvent, i as CaepEvents, k as pollSets, l as SSF_POLL_DELIVERY, m as signSet, n as CaepCredentialChange, o as RiscAccountDisabled, p as riscEvents, r as CaepDeviceComplianceChange, s as RiscCredentialCompromise, t as CaepAssuranceLevelChange, u as SSF_PUSH_DELIVERY, v as SsfTransmitterOptions, w as memorySetQueue, x as SsfStream, y as fanOutSet } from "../index-BinlXeU-.js";
4
4
  export { type CaepAssuranceLevelChange, type CaepCommon, type CaepCredentialChange, type CaepDeviceComplianceChange, type CaepEventName, type CaepEvents, type CaepInitiatingEntity, type CaepReason, type CaepTokenClaimsChange, type FanOutSetOptions, type PollHandle, type PollOptions, type PollResult, type PollSetsOptions, type PollSetsResult, type PolledSet, type PushSetOptions, type ReplayStore, type RiscAccountDisabled, type RiscCredentialCompromise, type RiscEventName, type RiscEvents, SSF_POLL_DELIVERY, SSF_PUSH_DELIVERY, type SetDelivery, type SetDeliveryFailureCause, type SetError, type SetEvent, type SetPollHandlerOptions, type SetQueue, type SetSubject, type SignSetOptions, type SsfAuditEvent, type SsfEventHandler, type SsfEventInput, type SsfEventListener, type SsfEventName, type SsfFanOut, type SsfOnEvent, type SsfPermDock, type SsfPermDockOptions, type SsfReceiver, type SsfStream, type SsfStreamConfiguration, type SsfStreamStatus, type SsfStreamStore, type SsfSubject, type SsfSubjectResolver, type SsfTransmitterConfiguration, type SsfTransmitterOptions, type SsfVerification, caepEvents, createPermDock, fanOutSet, memoryReplayStore, memorySetQueue, memorySsfStreamStore, pollSets, pushSet, riscEvents, setPollHandler, signSet, ssfTransmitter, streamVerificationEvent };