permdock 0.7.0 → 0.8.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-CL-QCITA.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-BLs67P1l.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-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  14. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  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-3RhGfkAK.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.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-BAkBDMqn.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-DqEoWHBc.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-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  35. package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
  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-CNWaYJyr.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
  45. package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
  46. package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
  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-BFpz2EmT.js} +20 -19
  52. package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
  53. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  54. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  55. package/dist/catalog-mRQQQhNK.js +1 -0
  56. package/dist/catalog-operations-Dadrl7Z-.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-BFlGMaak.js} +4 -5
  77. package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
  78. package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
  79. package/dist/collect-B5BL3klN.js +1 -0
  80. package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
  81. package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
  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-BFzysW3o.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.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-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
  98. package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
  99. package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
  100. package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
  101. package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
  102. package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
  103. package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
  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-CHNlVInN.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.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-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  127. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  128. package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
  130. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  131. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
  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-C1DCvpqV.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.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-B5kvbAoZ.js +58 -0
  150. package/dist/gen-DWCYcMQM.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-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
  164. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -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-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  169. package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
  170. package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
  171. package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
  172. package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
  173. package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
  174. package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
  175. package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +33 -33
  178. package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
  179. package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
  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-C-fYydV2.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-D-8tMqzo.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.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-BNWCJtmP.js} +14 -8
  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 +72 -26
  212. package/dist/next/index.js +110 -6
  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-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  223. package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
  224. package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
  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-files-BHOIlrfD.js +1 -0
  232. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  233. package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
  234. package/dist/ownership-B4L59T9u.js +1054 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-BQhTlLQS.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-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
  245. package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
  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-mDcTWoBs.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-Ba4bDhaj.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-CJgOm6aq.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-CCiDRZBH.d.ts} +738 -349
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
  262. package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
  263. package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
  264. package/dist/powersync-Djf-zCpB.js +1 -0
  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-BE7N_Luo.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-DXfq5c2d.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/pull-B65ndFNZ.js +1 -0
  282. package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
  283. package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
  284. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  285. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
  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-DNftIb_R.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.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-CF7xXLSG.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-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
  306. package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
  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-fNqAIqQk.js} +8 -5
  310. package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
  311. package/dist/run-D-JE8QWb.js +1 -0
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.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-iWnUdwCt.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.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-CIlpSA2G.d.ts} +81 -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-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  333. package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  334. package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
  335. package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.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-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
  344. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  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-DZ0l9UAg.js} +190 -100
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  351. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  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-C0Kta5Ft.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  357. package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  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-BL1qJzzY.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
  368. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
  369. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  370. package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
  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-DeMNEy6V.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 +224 -141
  394. package/dist/testing/index.js +299 -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-BIPIDa6a.d.ts +50 -0
  407. package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
  408. package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
  409. package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
  410. package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
  411. package/dist/types-B_d_g7T3.d.ts +262 -0
  412. package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
  413. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  414. package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
  415. package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
  416. package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
  417. package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  418. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  419. package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
  420. package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
  421. package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-CYeXek0p.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.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-YGg2mXyH.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-DZeqoWu5.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-Bu9zAlE0.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
  441. package/dist/watch-DB42U1ib.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-rI7dCR9Q.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-DlJE3gS_.d.ts} +8 -5
  452. package/package.json +7 -7
  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 +14 -22
  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,13 +1,13 @@
1
- import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-B-F-qAZk.js";
2
- import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-DhNEmoRG.js";
3
- import { a as RoleTree, r as Role } from "./vocabulary-Bg3eeT2H.js";
4
- import { a as PermDock, o as PermDockOptions } from "./permdock-Dco6dyCK.js";
5
- import { o as PolicyDocument } from "./hosted-BmjzxQhp.js";
6
- import { m as ApprovalStore } from "./types-DC44-hqb.js";
7
- import { t as InstanceOptions } from "./instance-options-CU0YQCLH.js";
8
- import { n as PermDockWrap } from "./wrap-B6R0cMRL.js";
9
- import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
10
- import { i as CatalogEventData, s as CloudEvent } from "./sink-Cp_Eot9W.js";
1
+ import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-CCiDRZBH.js";
2
+ import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-CAY-GU7e.js";
3
+ import { a as RoleTree, r as Role } from "./vocabulary-DEJ5j4mR.js";
4
+ import { a as PermDock, o as PermDockOptions } from "./permdock-B6Sf4T_S.js";
5
+ import { o as PolicyDocument } from "./hosted-Cmtxogd0.js";
6
+ import { m as ApprovalStore } from "./types-B_tiYvk8.js";
7
+ import { t as InstanceOptions } from "./instance-options-B0KXqTrJ.js";
8
+ import { n as PermDockWrap } from "./wrap-DlJE3gS_.js";
9
+ import { t as JsonSchemaNode } from "./json-schema-BfXgnRNT.js";
10
+ import { i as CatalogEventData, s as CloudEvent } from "./sink-Dvi7YZG_.js";
11
11
  import { StandardSchemaV1 } from "@standard-schema/spec";
12
12
  //#region src/conditions/refs.d.ts
13
13
  type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session" | "claims";
@@ -25,7 +25,10 @@ declare function claim(path: string): SubjectRef;
25
25
  //#endregion
26
26
  //#region src/core/custom-roles.d.ts
27
27
  type CustomRoleDropReason = "unknown-permission" | "outside-ceiling" | "condition-not-allowed" | "unknown-level";
28
- /** Why part of a custom role was left out: a permission, or an undeclared include. */
28
+ /**
29
+ * Why part of a custom role was left out: a permission, or an undeclared
30
+ * include.
31
+ */
29
32
  type CustomRoleDrop = {
30
33
  readonly permission: string;
31
34
  readonly reason: CustomRoleDropReason;
@@ -44,10 +47,16 @@ type CustomRoleRename = {
44
47
  readonly to: string;
45
48
  };
46
49
  type ResolvedCustomRole = {
47
- /** Declared grants re-targeted to the custom role; conditions and approvals kept. */
50
+ /**
51
+ * Declared grants re-targeted to the custom role; conditions and approvals
52
+ * kept.
53
+ */
48
54
  readonly grants: readonly Grant[];
49
55
  readonly dropped: readonly CustomRoleDrop[];
50
- /** Grants stored under a former key (`definePermissions` `renamed`), resolved to the current one. */
56
+ /**
57
+ * Grants stored under a former key (`definePermissions` `renamed`), resolved
58
+ * to the current one.
59
+ */
51
60
  readonly renamed: readonly CustomRoleRename[];
52
61
  };
53
62
  type CustomRoleValidation = {
@@ -68,7 +77,10 @@ type CustomRoleValidation = {
68
77
  */
69
78
  declare function resolveCustomRole(policy: Policy, role: CustomRole): ResolvedCustomRole;
70
79
  type ValidateCustomRoleOptions = {
71
- /** The shared custom roles: a tenant role with one of their names is dropped as `name-taken`. */
80
+ /**
81
+ * The shared custom roles: a tenant role with one of their names is dropped
82
+ * as `name-taken`.
83
+ */
72
84
  readonly shared?: readonly CustomRole[];
73
85
  };
74
86
  declare function validateCustomRole(policy: Policy, role: CustomRole, options?: ValidateCustomRoleOptions): CustomRoleValidation;
@@ -91,10 +103,10 @@ declare function parseCustomRoleEntry(policy: Policy, entry: string, options?: {
91
103
  readonly scope?: string;
92
104
  }): CustomRoleEntry;
93
105
  /**
94
- * The compact JWT form of custom roles for the `memberships[].grants` claim
95
- * RLS reads in `jwt` mode: role name to entries, where `key` allows, `-key`
96
- * denies and `@role` includes. Put a team custom role on its team membership.
97
- * Pass `policy` to write keys stored under a former name as the current key.
106
+ * The compact JWT form of custom roles for the `memberships[].grants` claim RLS
107
+ * reads in `jwt` mode: role name to entries, where `key` allows, `-key` denies
108
+ * and `@role` includes. Put a team custom role on its team membership. Pass
109
+ * `policy` to write keys stored under a former name as the current key.
98
110
  */
99
111
  declare function customRoleClaim(roles: readonly CustomRole[], policy?: Policy): Readonly<Record<string, readonly string[]>>;
100
112
  //#endregion
@@ -112,18 +124,21 @@ declare function emptySnapshot(): Snapshot;
112
124
  declare function requiresApproval(approval: Grant["approval"] | undefined): boolean;
113
125
  //#endregion
114
126
  //#region src/core/policy.d.ts
115
- declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>>;
116
- /** The role names a policy declares: the keys of its `defineRoles` vocabulary, else `string`. */
127
+ declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>, S>;
128
+ /**
129
+ * The role names a policy declares: the keys of its `defineRoles` vocabulary,
130
+ * else `string`.
131
+ */
117
132
  type RoleNameOf<P> = P extends {
118
133
  readonly vocabulary: infer V;
119
134
  } ? V extends {
120
135
  readonly roles: infer R extends RoleTree;
121
136
  } ? R[keyof R]["key"] : string : string;
122
137
  /**
123
- * Whether `value` names a role the policy declares, for a role read as a
124
- * string from a database or a token. A name it rejects is an unknown role,
125
- * which grants nothing (`unknown-role`). A tenant's custom roles are not
126
- * declared; `CustomRoleSource` resolves them.
138
+ * Whether `value` names a role the policy declares, for a role read as a string
139
+ * from a database or a token. A name it rejects is an unknown role, which
140
+ * grants nothing (`unknown-role`). A tenant's custom roles are not declared;
141
+ * `CustomRoleSource` resolves them.
127
142
  */
128
143
  declare function isRoleName<P extends Policy<never>>(policy: P, value: unknown): value is RoleNameOf<P>;
129
144
  declare function separationConflicts(policy: Policy, memberships: readonly MembershipFixture[]): readonly SeparationConflict[];
@@ -158,16 +173,22 @@ declare function sqlFunction(name: string, options: {
158
173
  //#region src/core/memory-sources.d.ts
159
174
  declare function memoryEntitlementSource(entries: Readonly<Record<string, readonly string[]>>): EntitlementSource;
160
175
  declare function memorySettingsSource(settings: Readonly<Record<string, TenantSettings>>): SettingsSource;
161
- /** Memberships keyed by principal id; `tenant` is not a filter, as for a database source. */
176
+ /**
177
+ * Memberships keyed by principal id; `tenant` is not a filter, as for a
178
+ * database source.
179
+ */
162
180
  declare function memoryMembershipSource(entries: Readonly<Record<string, readonly Membership[]>>): MembershipSource;
163
181
  /** A snapshot held in memory; `set` replaces it and notifies every subscriber. */
164
182
  declare function memorySnapshotSource(initial: Snapshot | string): SnapshotSource & {
165
- set(snapshot: Snapshot | string): void;
183
+ set: (snapshot: Snapshot | string) => void;
166
184
  };
167
185
  declare function memoryCustomRoleSource(customRoles: readonly CustomRole[]): CustomRoleSource;
168
186
  //#endregion
169
187
  //#region src/core/approval-state.d.ts
170
- /** The denial detail when an `ApprovalPolicySource` threw or returned an invalid entry. */
188
+ /**
189
+ * The denial detail when an `ApprovalPolicySource` threw or returned an invalid
190
+ * entry.
191
+ */
171
192
  declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
172
193
  //#endregion
173
194
  //#region src/core/memberships.d.ts
@@ -179,23 +200,26 @@ declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
179
200
  */
180
201
  declare function composeMemberships(sources: readonly MembershipSource[]): MembershipSource;
181
202
  /**
182
- * Trust the memberships the verified token carries, and read `source` only
183
- * when the token marks them truncated. With `version`, a token minted before
184
- * the latest membership change is stale for the policy's `fresh` permissions,
185
- * or with `onStale: 'reread'` has its memberships read from `source` instead.
203
+ * Trust the memberships the verified token carries, and read `source` only when
204
+ * the token marks them truncated. With `version`, a token minted before the
205
+ * latest membership change is stale for the policy's `fresh` permissions, or
206
+ * with `onStale: 'reread'` has its memberships read from `source` instead.
186
207
  */
187
208
  declare function claimsFirst(source: MembershipSource | readonly MembershipSource[], options?: {
188
209
  readonly version?: MembershipSource["version"];
189
210
  readonly onStale?: "deny" | "reread";
190
211
  }): MembershipSource;
191
- /** Whether the identity provider owns `membership`: the application must not add, change or remove it. */
212
+ /**
213
+ * Whether the identity provider owns `membership`: the application must not
214
+ * add, change or remove it.
215
+ */
192
216
  declare function isExternallyManaged(membership: Membership): boolean;
193
217
  /**
194
- * How many principals hold `role` in one scope instance now, from the
195
- * source's member list (`MembershipSource.list`): live memberships of exactly
196
- * that scope and instance, each principal counted once. The `holders` a
197
- * `decideRoleChange` with `min`, `max` or `transferOnly` needs. `undefined`
198
- * when the source cannot list or the read fails, which that check denies.
218
+ * How many principals hold `role` in one scope instance now, from the source's
219
+ * member list (`MembershipSource.list`): live memberships of exactly that scope
220
+ * and instance, each principal counted once. The `holders` a `decideRoleChange`
221
+ * with `min`, `max` or `transferOnly` needs. `undefined` when the source cannot
222
+ * list or the read fails, which that check denies.
199
223
  */
200
224
  declare function countHolders(source: MembershipSource | readonly MembershipSource[], query: {
201
225
  readonly scope: string;
@@ -206,15 +230,18 @@ declare function countHolders(source: MembershipSource | readonly MembershipSour
206
230
  }): Promise<number | undefined>;
207
231
  //#endregion
208
232
  //#region src/core/stripe-entitlements.d.ts
209
- /** The part of the Stripe Node SDK this source calls: `stripe.entitlements.activeEntitlements.list`. */
233
+ /**
234
+ * The part of the Stripe Node SDK this source calls:
235
+ * `stripe.entitlements.activeEntitlements.list`.
236
+ */
210
237
  type StripeEntitlementsClient = {
211
238
  readonly entitlements: {
212
239
  readonly activeEntitlements: {
213
- list(params: {
240
+ list: (params: {
214
241
  readonly customer: string;
215
242
  readonly limit?: number;
216
243
  readonly starting_after?: string;
217
- }): PromiseLike<{
244
+ }) => PromiseLike<{
218
245
  readonly data: readonly {
219
246
  readonly id: string;
220
247
  readonly lookup_key: string;
@@ -246,14 +273,17 @@ type MemoryEdge = {
246
273
  readonly expiresAt?: number;
247
274
  };
248
275
  type MemoryRelationSourceData = {
249
- /** Rows per resource: parent pointers, links, restricted flags and relation columns are read from them. */
276
+ /**
277
+ * Rows per resource: parent pointers, links, restricted flags and relation
278
+ * columns are read from them.
279
+ */
250
280
  readonly rows?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
251
281
  /** Edge-table rows per resource and relation. */
252
282
  readonly edges?: Readonly<Record<string, Readonly<Record<string, readonly MemoryEdge[]>>>>;
253
283
  /**
254
- * Edge tables as the database holds them, keyed by `edge` name: each row
255
- * is read through the relation's `object`, `subject`, `expiresAt`, `match`
256
- * and `groups` columns. A relation whose table is here ignores `edges`.
284
+ * Edge tables as the database holds them, keyed by `edge` name: each row is
285
+ * read through the relation's `object`, `subject`, `expiresAt`, `match` and
286
+ * `groups` columns. A relation whose table is here ignores `edges`.
257
287
  */
258
288
  readonly tables?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
259
289
  };
@@ -273,7 +303,10 @@ type HoldingVia = {
273
303
  readonly kind: "relation";
274
304
  readonly resource: string;
275
305
  readonly relation: string;
276
- /** The instance the relation is held on: the object or one of its ancestors. */
306
+ /**
307
+ * The instance the relation is held on: the object or one of its
308
+ * ancestors.
309
+ */
277
310
  readonly id: string;
278
311
  } | {
279
312
  readonly kind: "share";
@@ -281,7 +314,10 @@ type HoldingVia = {
281
314
  readonly relation: string;
282
315
  readonly id: string;
283
316
  readonly expiresAt?: number;
284
- /** The group the share names, when the principal holds it as one of its members. */
317
+ /**
318
+ * The group the share names, when the principal holds it as one of its
319
+ * members.
320
+ */
285
321
  readonly group?: RelationGroup;
286
322
  };
287
323
  type Holder = {
@@ -291,10 +327,10 @@ type Holder = {
291
327
  readonly via: readonly HoldingVia[];
292
328
  };
293
329
  /**
294
- * Who holds a permission on one object, for share dialogs and access
295
- * reviews. It lists and never grants. `complete: false` means some grantee
296
- * could not be enumerated (a global role, a plan, a source without `list`,
297
- * an unavailable relation): holders may be missing, so check with `decide`.
330
+ * Who holds a permission on one object, for share dialogs and access reviews.
331
+ * It lists and never grants. `complete: false` means some grantee could not be
332
+ * enumerated (a global role, a plan, a source without `list`, an unavailable
333
+ * relation): holders may be missing, so check with `decide`.
298
334
  */
299
335
  type WhoCan = {
300
336
  readonly permission: string;
@@ -302,11 +338,11 @@ type WhoCan = {
302
338
  readonly complete: boolean;
303
339
  };
304
340
  /**
305
- * Who holds `permission` on `resource` for the instance's policy and how
306
- * (role, relation or share), from `MembershipSource.list` and
307
- * `RelationSource.related`. It lists and never grants; `complete: false`
308
- * means some holders could not be listed. An instance built from a
309
- * snapshot answers an empty, incomplete list.
341
+ * Who holds `permission` on `resource` for the instance's policy and how (role,
342
+ * relation or share), from `MembershipSource.list` and
343
+ * `RelationSource.related`. It lists and never grants; `complete: false` means
344
+ * some holders could not be listed. An instance built from a snapshot answers
345
+ * an empty, incomplete list.
310
346
  */
311
347
  declare function whoCan(permdock: InstanceHandle, permission: Permission<string, unknown, "instance">, resource: unknown): Promise<WhoCan>;
312
348
  //#endregion
@@ -314,7 +350,10 @@ declare function whoCan(permdock: InstanceHandle, permission: Permission<string,
314
350
  type SignPolicyDocumentOptions = {
315
351
  /** `aud`: the environment URL `cloud().policies` checks it against. */
316
352
  readonly audience: string | readonly string[];
317
- /** `exp`, a NumericDate; the signer's default (one hour after `iat`) when absent. */
353
+ /**
354
+ * `exp`, a NumericDate; the signer's default (one hour after `iat`) when
355
+ * absent.
356
+ */
318
357
  readonly expiresAt?: number;
319
358
  };
320
359
  /**
@@ -329,14 +368,20 @@ type SignSnapshotOptions = {
329
368
  /** `aud`; a signer with no default audience refuses to sign without one. */
330
369
  readonly audience?: string | readonly string[];
331
370
  };
332
- /** The claims of a `vnd.permdock.snapshot+jwt` apart from `iss`, `aud` and `jti`. */
371
+ /**
372
+ * The claims of a `vnd.permdock.snapshot+jwt` apart from `iss`, `aud` and
373
+ * `jti`.
374
+ */
333
375
  type SnapshotClaims = {
334
376
  readonly snapshot: Omit<Snapshot, "issuedAt" | "expiresAt">;
335
377
  /** The principal's id; absent for an anonymous snapshot. */
336
378
  readonly sub?: string;
337
379
  /** `issuedAt` in NumericDate seconds; absent when it is not after the epoch. */
338
380
  readonly iat?: number;
339
- /** `expiresAt` in NumericDate seconds; absent when the snapshot has none, and the signer then sets its default. */
381
+ /**
382
+ * `expiresAt` in NumericDate seconds; absent when the snapshot has none, and
383
+ * the signer then sets its default.
384
+ */
340
385
  readonly exp?: number;
341
386
  };
342
387
  /**
@@ -345,7 +390,10 @@ type SnapshotClaims = {
345
390
  * claims are the only times a verifier reads.
346
391
  */
347
392
  declare function snapshotClaims(snapshot: Snapshot): SnapshotClaims;
348
- /** Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims `snapshotClaims` answers. */
393
+ /**
394
+ * Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims
395
+ * `snapshotClaims` answers.
396
+ */
349
397
  declare function signSnapshot(snapshot: Snapshot, signer: TokenSigner, options?: SignSnapshotOptions): Promise<string>;
350
398
  /**
351
399
  * The snapshot a verified `vnd.permdock.snapshot+jwt` carries, parsed as
@@ -390,10 +438,9 @@ type ArazzoFinding = {
390
438
  };
391
439
  declare function arazzoFindings(input: ArazzoSimulateInput, tree: PermissionTree | undefined): readonly ArazzoFinding[];
392
440
  /**
393
- * Walks an Arazzo workflow against `permdock`: each step's operation is
394
- * decided as `permdock.simulate` would, and a server instance emits one
395
- * simulate event for the whole plan. Works on an instance built from a
396
- * snapshot too.
441
+ * Walks an Arazzo workflow against `permdock`: each step's operation is decided
442
+ * as `permdock.simulate` would, and a server instance emits one simulate event
443
+ * for the whole plan. Works on an instance built from a snapshot too.
397
444
  */
398
445
  declare function simulateArazzo(permdock: PermDock, input: ArazzoSimulateInput): ArazzoPlan;
399
446
  //#endregion
@@ -407,16 +454,17 @@ declare function localSnapshotManifest(policy: Policy): LocalSnapshotManifest;
407
454
  //#endregion
408
455
  //#region src/core/app.d.ts
409
456
  /**
410
- * How strict `defineApp` is about the services the policy needs. `dev`
411
- * fills in in-process defaults (a memory approval store and a memory limit
412
- * store) so a new app runs before any infrastructure exists. `prod` throws at startup when a grant needs a
413
- * service the app does not configure, instead of denying at run time.
457
+ * How strict `defineApp` is about the services the policy needs. `dev` fills in
458
+ * in-process defaults (a memory approval store and a memory limit store) so a
459
+ * new app runs before any infrastructure exists. `prod` throws at startup when
460
+ * a grant needs a service the app does not configure, instead of denying at run
461
+ * time.
414
462
  */
415
463
  type AppProfile = "dev" | "prod";
416
464
  /**
417
- * Everything an app wires once and every adapter reads: the data sources,
418
- * the opt-in features and the services. An adapter's own options win over
419
- * these, key by key.
465
+ * Everything an app wires once and every adapter reads: the data sources, the
466
+ * opt-in features and the services. An adapter's own options win over these,
467
+ * key by key.
420
468
  */
421
469
  type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
422
470
  /** Where approval requests open and resume, for every adapter. */
@@ -426,10 +474,10 @@ type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
426
474
  //#endregion
427
475
  //#region src/app/define-app.d.ts
428
476
  /**
429
- * Binds the app's sources, features and services to `policy`. The result
430
- * is a policy: pass it wherever a policy goes (`createPermDock`, every
431
- * adapter, the CLI) and each picks up the app definition, with its own
432
- * options taking precedence. The profile defaults to `prod`.
477
+ * Binds the app's sources, features and services to `policy`. The result is a
478
+ * policy: pass it wherever a policy goes (`createPermDock`, every adapter, the
479
+ * CLI) and each picks up the app definition, with its own options taking
480
+ * precedence. The profile defaults to `prod`.
433
481
  */
434
482
  declare function defineApp<TUser, TPrincipal extends Principal, V extends PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options?: AppOptions): Policy<TUser, TPrincipal, V>;
435
483
  //#endregion
@@ -453,20 +501,20 @@ type ShadowMismatch = {
453
501
  type ShadowOptions = {
454
502
  readonly legacy: LegacyCheck;
455
503
  /**
456
- * Permissions PermDock decides; every other check returns the legacy
457
- * answer. `"all"` once every mismatch is resolved; default none.
504
+ * Permissions PermDock decides; every other check returns the legacy answer.
505
+ * `"all"` once every mismatch is resolved; default none.
458
506
  */
459
507
  readonly enforce?: readonly Permission[] | "all";
460
508
  /** Called for each disagreement; a throw here is ignored. */
461
509
  readonly onMismatch?: (mismatch: ShadowMismatch) => void;
462
510
  };
463
511
  /**
464
- * Runs PermDock beside the application's existing checks while adopting
465
- * it. Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both;
466
- * the legacy answer is returned unless the permission is in `enforce`, and
467
- * every disagreement reaches `onMismatch`. Promote permissions one by one
468
- * as their mismatches are resolved, then remove the wrap. Pass it as an
469
- * adapter's `wrap` option, or call it on a core instance.
512
+ * Runs PermDock beside the application's existing checks while adopting it.
513
+ * Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both; the
514
+ * legacy answer is returned unless the permission is in `enforce`, and every
515
+ * disagreement reaches `onMismatch`. Promote permissions one by one as their
516
+ * mismatches are resolved, then remove the wrap. Pass it as an adapter's `wrap`
517
+ * option, or call it on a core instance.
470
518
  */
471
519
  declare function shadowMode(options: ShadowOptions): PermDockWrap;
472
520
  //#endregion
@@ -483,28 +531,41 @@ declare function mayAccess(policy: Policy, user: unknown, permission: Permission
483
531
  }): boolean;
484
532
  //#endregion
485
533
  //#region src/core/custom-role-source.d.ts
486
- /** Reads custom roles from the application's store, as `customRoleSource` takes them. */
534
+ /**
535
+ * Reads custom roles from the application's store, as `customRoleSource` takes
536
+ * them.
537
+ */
487
538
  type CustomRoleReader = {
488
- /** Every custom role of `tenant`, whether or not anyone in the request holds it. */
489
- rolesFor(tenant: string): CustomRole[] | Promise<CustomRole[]>;
490
- assignable?(tenant: string): string[] | Promise<string[]>;
539
+ /**
540
+ * Every custom role of `tenant`, whether or not anyone in the request holds
541
+ * it.
542
+ */
543
+ rolesFor: (tenant: string) => CustomRole[] | Promise<CustomRole[]>;
544
+ assignable?: (tenant: string) => string[] | Promise<string[]>;
491
545
  /** Platform custom roles (`scope: 'global'`). */
492
- globalRoles?(): CustomRole[] | Promise<CustomRole[]>;
546
+ globalRoles?: () => CustomRole[] | Promise<CustomRole[]>;
493
547
  /** Shared custom roles (`shared: true`), the same for every tenant. */
494
- sharedRoles?(): CustomRole[] | Promise<CustomRole[]>;
548
+ sharedRoles?: () => CustomRole[] | Promise<CustomRole[]>;
495
549
  };
496
550
  type CustomRoleSourceOptions = {
497
- /** `'all'` (default): read every custom role of each tenant, so `assignableRoles` and `decideRoleChange` see them all. */
551
+ /**
552
+ * `'all'` (default): read every custom role of each tenant, so
553
+ * `assignableRoles` and `decideRoleChange` see them all.
554
+ */
498
555
  readonly read?: "all";
499
556
  } | {
500
- /** `'held'`: skip a tenant's read, and the platform read, when every role the subject holds there is declared in `policy`. For requests that never manage roles. */
557
+ /**
558
+ * `'held'`: skip a tenant's read, and the platform read, when every role
559
+ * the subject holds there is declared in `policy`. For requests that
560
+ * never manage roles.
561
+ */
501
562
  readonly read: "held";
502
563
  readonly policy: Policy;
503
564
  };
504
565
  /**
505
- * A `CustomRoleSource` over a reader that returns every custom role of a tenant.
506
- * It keeps only the roles of the requested tenant. With `read: 'held'` it
507
- * skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
566
+ * A `CustomRoleSource` over a reader that returns every custom role of a
567
+ * tenant. It keeps only the roles of the requested tenant. With `read: 'held'`
568
+ * it skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
508
569
  * subject holds only declared roles there.
509
570
  */
510
571
  declare function customRoleSource(reader: CustomRoleReader, options?: CustomRoleSourceOptions): CustomRoleSource;
@@ -522,7 +583,10 @@ type SnapshotForOptions = {
522
583
  readonly memberships?: readonly Membership[];
523
584
  /** The tenant's custom roles, typically from a shared, tagged cache. */
524
585
  readonly customRoles?: readonly CustomRole[];
525
- /** Per tenant, the role names `CustomRoleSource.assignable` returns; narrows `assignable`. */
586
+ /**
587
+ * Per tenant, the role names `CustomRoleSource.assignable` returns; narrows
588
+ * `assignable`.
589
+ */
526
590
  readonly assignable?: Readonly<Record<string, readonly string[]>>;
527
591
  /** Plans of the active tenant; replaces `principal.plans`. */
528
592
  readonly plans?: readonly string[];
@@ -532,10 +596,10 @@ type SnapshotForOptions = {
532
596
  readonly now?: Instant;
533
597
  };
534
598
  /**
535
- * Builds the serializable access snapshot for a subject without a request,
536
- * a network call or a cache directive: call it inside the app's own
537
- * `'use cache: private'` function. Synchronous; the policy's `subject` and
538
- * `context` mappers must be synchronous too.
599
+ * Builds the serializable access snapshot for a subject without a request, a
600
+ * network call or a cache directive: call it inside the app's own `'use cache:
601
+ * private'` function. Synchronous; the policy's `subject` and `context` mappers
602
+ * must be synchronous too.
539
603
  */
540
604
  declare function snapshotFor<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: SnapshotForOptions): Snapshot;
541
605
  //#endregion
@@ -548,8 +612,12 @@ declare function definePermissions<const Input, PX = never, RX = never>(input: I
548
612
  * renames and for one that crossed a serialisation boundary.
549
613
  */
550
614
  declare function formerKeys(permission: object): readonly string[];
551
- declare function resource<T, const A extends ActionList = readonly [], const C extends ActionList = readonly []>(schema: StandardSchemaV1<unknown, T>, options?: ResourceOptions<A, C>): ResourceInit<T, A, C>;
552
- declare function resource<const A extends ActionList = readonly [], const C extends ActionList = readonly []>(options: ResourceOptions<A, C>): ResourceInit<unknown, A, C>;
615
+ declare function resource<T, const A extends ActionList = readonly [], const C extends ActionList = readonly [], const N extends string = never>(schema: StandardSchemaV1<unknown, T>, options?: ResourceOptions<A, C> & {
616
+ readonly name?: N;
617
+ }): ResourceInit<T, A, C, N>;
618
+ declare function resource<const A extends ActionList = readonly [], const C extends ActionList = readonly [], const N extends string = never>(options: ResourceOptions<A, C> & {
619
+ readonly name?: N;
620
+ }): ResourceInit<unknown, A, C, N>;
553
621
  //#endregion
554
622
  //#region src/core/presets.d.ts
555
623
  type ReadOnlyMeta = {
@@ -612,7 +680,10 @@ declare function writable<const A extends ActionList | undefined = undefined, co
612
680
  //#endregion
613
681
  //#region src/core/role-builder.d.ts
614
682
  type RoleGrants = readonly (Omit<Grant, "role" | "scope"> | readonly Omit<Grant, "role" | "scope">[])[];
615
- /** A role held at a named scope: `on` is checked against `definePolicy({ scopes })`. */
683
+ /**
684
+ * A role held at a named scope: `on` is checked against `definePolicy({ scopes
685
+ * })`.
686
+ */
616
687
  declare function role<const S extends string>(name: string | Role, grants: RoleGrants, options: RoleOptions<S> & {
617
688
  readonly on: S;
618
689
  }): RoleBinding<S>;
@@ -625,13 +696,16 @@ declare function normalizeAssurance(input: AssuranceRequirement | undefined): As
625
696
  //#region src/core/grant-builders.d.ts
626
697
  declare function allow<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
627
698
  /**
628
- * Every action of a resource (`permissions.post`), of several, or of the
629
- * whole tree, unconditionally. Each grant is listed in the policy as if
630
- * written out, and an action added to the resource later is granted too.
699
+ * Every action of a resource (`permissions.post`), of several, or of the whole
700
+ * tree, unconditionally. Each grant is listed in the policy as if written out,
701
+ * and an action added to the resource later is granted too.
631
702
  */
632
703
  declare function allow(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
633
704
  declare function deny<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
634
- /** Every action of a resource, of several, or of the whole tree, unconditionally. */
705
+ /**
706
+ * Every action of a resource, of several, or of the whole tree,
707
+ * unconditionally.
708
+ */
635
709
  declare function deny(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
636
710
  //#endregion
637
711
  //#region src/core/approval-normalize.d.ts
@@ -657,7 +731,10 @@ declare function supportAccess<const S extends string>(options: SupportAccessOpt
657
731
  declare function supportAccess(options: SupportAccessOptions<never>): RoleBinding<"tenant">;
658
732
  type ActivateInput = {
659
733
  readonly role: string | Role;
660
- /** The scope the activation applies in (a declared name or the `tenant` / `team` alias). */
734
+ /**
735
+ * The scope the activation applies in (a declared name or the `tenant` /
736
+ * `team` alias).
737
+ */
661
738
  readonly scope: string;
662
739
  readonly id: string;
663
740
  /** Ancestor scope ids, keyed by scope name, for a nested-scope activation. */
@@ -667,30 +744,32 @@ type ActivateInput = {
667
744
  readonly reason?: string;
668
745
  };
669
746
  /**
670
- * Requests a just-in-time role activation. It never writes: a granted
671
- * decision carries the elevated membership under `elevation` for the app to
672
- * write. `approval-required` comes back first when the role's `activation`
673
- * sets `approval`. Fail-closed: an unknown role, an ineligible subject, a
674
- * missing justification or stale authentication all deny.
747
+ * Requests a just-in-time role activation. It never writes: a granted decision
748
+ * carries the elevated membership under `elevation` for the app to write.
749
+ * `approval-required` comes back first when the role's `activation` sets
750
+ * `approval`. Fail-closed: an unknown role, an ineligible subject, a missing
751
+ * justification or stale authentication all deny.
675
752
  */
676
753
  /**
677
754
  * Requests a just-in-time activation of an eligible role for the subject of
678
755
  * `permdock`. It never writes: a granted decision carries the elevated
679
- * membership under `elevation` for the app to write, and
680
- * `approval-required` comes back first when the role's `activation` sets
681
- * `approval`. An instance built from a snapshot denies with `unsupported`.
756
+ * membership under `elevation` for the app to write, and `approval-required`
757
+ * comes back first when the role's `activation` sets `approval`. An instance
758
+ * built from a snapshot denies with `unsupported`.
682
759
  */
683
760
  declare function activate(permdock: InstanceHandle, input: ActivateInput): Decision;
684
761
  //#endregion
685
762
  //#region src/core/scope-helpers.d.ts
686
763
  /**
687
- * The canonical form PermDock evaluates one membership in, or `undefined`
688
- * when it is malformed and grants nothing. `scopes` is the policy's or the
689
- * catalog's scope list; absent or empty means the implicit `tenant` and
690
- * `team` pair.
764
+ * The canonical form PermDock evaluates one membership in, or `undefined` when
765
+ * it is malformed and grants nothing. `scopes` is the policy's or the catalog's
766
+ * scope list; absent or empty means the implicit `tenant` and `team` pair.
691
767
  */
692
768
  declare function normalizeMembership(input: unknown, scopes?: readonly Scope[]): Membership | undefined;
693
- /** Every well-formed membership of `input` in canonical form; malformed entries are dropped. */
769
+ /**
770
+ * Every well-formed membership of `input` in canonical form; malformed entries
771
+ * are dropped.
772
+ */
694
773
  declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[]): readonly Membership[];
695
774
  /**
696
775
  * The declared scope `name` stands for: the name itself, or the scope the
@@ -699,14 +778,23 @@ declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[])
699
778
  declare function resolveScope(scopes: readonly Scope[] | undefined, name: unknown): string | undefined;
700
779
  //#endregion
701
780
  //#region src/core/ownership.d.ts
702
- /** Who a role change is about: their principal id and their membership in the scope instance. */
781
+ /**
782
+ * Who a role change is about: their principal id and their membership in the
783
+ * scope instance.
784
+ */
703
785
  type RoleChangeTarget = {
704
786
  readonly id: string;
705
- /** The kind of the target's membership in the instance (`staff`, `contact`, ...). */
787
+ /**
788
+ * The kind of the target's membership in the instance (`staff`, `contact`,
789
+ * ...).
790
+ */
706
791
  readonly via?: string;
707
792
  /** The roles the target holds in the instance now. */
708
793
  readonly roles?: readonly string[];
709
- /** `idp` when the identity provider owns the target's membership: the application cannot change it. */
794
+ /**
795
+ * `idp` when the identity provider owns the target's membership: the
796
+ * application cannot change it.
797
+ */
710
798
  readonly managedBy?: "idp";
711
799
  };
712
800
  type RoleChangeBase = {
@@ -716,16 +804,15 @@ type RoleChangeBase = {
716
804
  readonly within?: Readonly<Record<string, string>>;
717
805
  readonly target: RoleChangeTarget;
718
806
  /**
719
- * How many principals hold `role` in the instance now, from the
720
- * application's store. Without it a role with `min`, `max` or
721
- * `transferOnly` is denied.
807
+ * How many principals hold `role` in the instance now, from the application's
808
+ * store. Without it a role with `min`, `max` or `transferOnly` is denied.
722
809
  */
723
810
  readonly holders?: number;
724
811
  };
725
812
  /**
726
813
  * A role held at a named scope instance (`scope` is a declared name or alias
727
- * and `id` the instance), or a global role: `scope: 'global'` with no `id`.
728
- * A global change has no tenant, so `within` and `holders` do not apply to it.
814
+ * and `id` the instance), or a global role: `scope: 'global'` with no `id`. A
815
+ * global change has no tenant, so `within` and `holders` do not apply to it.
729
816
  */
730
817
  type RoleChange = RoleChangeBase & ({
731
818
  /** The scope the role is held at (a declared name or alias). */
@@ -750,7 +837,10 @@ type RoleChangeDecision = {
750
837
  readonly change: RoleChange;
751
838
  readonly denials: readonly Denial[];
752
839
  };
753
- /** The holder-count, membership-kind, exclusivity and `assigns` rules of one role, as the catalog lists them (`CatalogRole`). */
840
+ /**
841
+ * The holder-count, membership-kind, exclusivity and `assigns` rules of one
842
+ * role, as the catalog lists them (`CatalogRole`).
843
+ */
754
844
  type RoleRules = {
755
845
  readonly key: string;
756
846
  readonly min?: number;
@@ -765,14 +855,26 @@ type RoleChangeCheckInput = {
765
855
  readonly kind: "assign" | "revoke" | "transfer";
766
856
  readonly target: Pick<RoleChangeTarget, "via" | "roles">;
767
857
  };
768
- /** How many principals hold the role in the instance now; without it a role with `min`, `max` or `transferOnly` is denied. */
858
+ /**
859
+ * How many principals hold the role in the instance now; without it a role
860
+ * with `min`, `max` or `transferOnly` is denied.
861
+ */
769
862
  readonly holders?: number;
770
- /** Every declared role: adds the `exclusiveWith` other roles declare against this one, and with `actorRoles` the `assigns` rule. */
863
+ /**
864
+ * Every declared role: adds the `exclusiveWith` other roles declare against
865
+ * this one, and with `actorRoles` the `assigns` rule.
866
+ */
771
867
  readonly roles?: readonly RoleRules[];
772
- /** The roles the actor holds at the instance, highest rank first. With `roles` naming any `assigns`, one of them must assign this role. */
868
+ /**
869
+ * The roles the actor holds at the instance, highest rank first. With `roles`
870
+ * naming any `assigns`, one of them must assign this role.
871
+ */
773
872
  readonly actorRoles?: readonly string[];
774
873
  };
775
- /** `by` names the actor role whose `assigns` allowed the change, `null` when the rule did not apply. */
874
+ /**
875
+ * `by` names the actor role whose `assigns` allowed the change, `null` when the
876
+ * rule did not apply.
877
+ */
776
878
  type RoleChangeCheck = {
777
879
  readonly ok: true;
778
880
  readonly by: string | null;
@@ -782,18 +884,18 @@ type RoleChangeCheck = {
782
884
  };
783
885
  /**
784
886
  * The rules of a role change that need no subject: `assigns`, `for`,
785
- * `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
786
- * the target's roles alone. `decideRoleChange` runs the same function after
787
- * its actor, tenant and ceiling checks; a service that holds only the
788
- * catalog calls it with the `CatalogRole` entries.
887
+ * `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and the
888
+ * target's roles alone. `decideRoleChange` runs the same function after its
889
+ * actor, tenant and ceiling checks; a service that holds only the catalog calls
890
+ * it with the `CatalogRole` entries.
789
891
  */
790
892
  declare function checkRoleChange(role: RoleRules, input: RoleChangeCheckInput): RoleChangeCheck;
791
893
  type RoleChangeOptions = {
792
894
  /**
793
- * `true` when the application loaded `change.within` from its own store
794
- * (the instance's stored parent), not from the request. Without it, a
795
- * nested instance's tenant comes only from a live membership the actor
796
- * holds on that instance or under it.
895
+ * `true` when the application loaded `change.within` from its own store (the
896
+ * instance's stored parent), not from the request. Without it, a nested
897
+ * instance's tenant comes only from a live membership the actor holds on that
898
+ * instance or under it.
797
899
  */
798
900
  readonly trusted?: boolean;
799
901
  };
@@ -802,12 +904,12 @@ type RoleChangeOptions = {
802
904
  * the instance's own principal; nothing in `change` can stand in for it.
803
905
  */
804
906
  /**
805
- * Whether the subject of `permdock` may assign, revoke or transfer a role
806
- * in one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`,
807
- * `min`, `max` and `transferOnly`. It never writes; the application does,
808
- * and generated RLS triggers re-check the holder counts at commit. A nested
809
- * instance's tenant comes from a live membership the subject holds on it,
810
- * or from `change.within` only with `{ trusted: true }`; otherwise
907
+ * Whether the subject of `permdock` may assign, revoke or transfer a role in
908
+ * one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`, `min`,
909
+ * `max` and `transferOnly`. It never writes; the application does, and
910
+ * generated RLS triggers re-check the holder counts at commit. A nested
911
+ * instance's tenant comes from a live membership the subject holds on it, or
912
+ * from `change.within` only with `{ trusted: true }`; otherwise
811
913
  * `no-membership`. An instance built from a snapshot denies with
812
914
  * `unsupported`.
813
915
  */
@@ -815,17 +917,20 @@ declare function decideRoleChange(permdock: InstanceHandle, change: RoleChange,
815
917
  //#endregion
816
918
  //#region src/core/parse-sink-events.d.ts
817
919
  /**
818
- * Validates one untrusted sink event against its family's schema and returns
819
- * a frozen copy, or `null` for anything else. Never throws.
920
+ * Validates one untrusted sink event against its family's schema and returns a
921
+ * frozen copy, or `null` for anything else. Never throws.
820
922
  */
821
923
  declare function parseSinkEvent(value: unknown): SinkEvent | null;
822
924
  /**
823
925
  * Validates an untrusted list of sink events, such as a request body a sink
824
- * receiver read. Each event that fails its schema is dropped, and a value
825
- * that is not an array yields no events. Never throws.
926
+ * receiver read. Each event that fails its schema is dropped, and a value that
927
+ * is not an array yields no events. Never throws.
826
928
  */
827
929
  declare function parseSinkEvents(value: unknown): readonly SinkEvent[];
828
- /** Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it does not match. */
930
+ /**
931
+ * Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it
932
+ * does not match.
933
+ */
829
934
  declare function parseCatalogEventData(value: unknown): CatalogEventData | null;
830
935
  /**
831
936
  * Validates one CloudEvent against the closed type list, its `dataschema` and
@@ -840,7 +945,10 @@ declare function parseCloudEvent(value: unknown): CloudEvent | null;
840
945
  declare function parseCloudEventBatch(value: unknown): readonly CloudEvent[] | null;
841
946
  //#endregion
842
947
  //#region src/core/event-schemas.d.ts
843
- /** The URL each event family's schema is published at, and its CloudEvents `dataschema`. */
948
+ /**
949
+ * The URL each event family's schema is published at, and its CloudEvents
950
+ * `dataschema`.
951
+ */
844
952
  declare const EVENT_SCHEMA_IDS: {
845
953
  readonly decision: "https://permdock.com/schemas/decision-event-v1.json";
846
954
  readonly directory: "https://permdock.com/schemas/directory-event-v1.json";
@@ -874,9 +982,9 @@ declare const SINK_EVENT_SCHEMAS: {
874
982
  /** The OCSF schema version `toOcsf` emits. */
875
983
  declare const OCSF_VERSION = "1.9.0";
876
984
  /**
877
- * An OCSF Authorize Session (class 3003, category Identity and Access Management) event.
878
- * API Activity (6003) would fit a per-request decision, but it requires `api` and
879
- * `src_endpoint`, which a decision event does not carry.
985
+ * An OCSF Authorize Session (class 3003, category Identity and Access
986
+ * Management) event. API Activity (6003) would fit a per-request decision, but
987
+ * it requires `api` and `src_endpoint`, which a decision event does not carry.
880
988
  */
881
989
  type OcsfAuthorizeSession = {
882
990
  readonly class_uid: 3003;
@@ -934,15 +1042,16 @@ type OcsfAuthorizeSession = {
934
1042
  };
935
1043
  };
936
1044
  /**
937
- * Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged.
938
- * An event whose `at` does not parse has no OCSF `time` and projects to `undefined`.
1045
+ * Projects a decision or approval event onto OCSF Authorize Session; the event
1046
+ * itself is unchanged. An event whose `at` does not parse has no OCSF `time`
1047
+ * and projects to `undefined`.
939
1048
  */
940
1049
  declare function toOcsf(event: DecisionEvent): OcsfAuthorizeSession | undefined;
941
1050
  /**
942
1051
  * An OCSF User Management (class 3007) event for a support-access lifecycle
943
1052
  * event: `started` enables the session, `ended` and `revoked` disable it.
944
- * Support access is high severity, so a SIEM can alert on vendor access.
945
- * OCSF 1.9.0 deprecates Account Change (3001) in favour of this class.
1053
+ * Support access is high severity, so a SIEM can alert on vendor access. OCSF
1054
+ * 1.9.0 deprecates Account Change (3001) in favour of this class.
946
1055
  */
947
1056
  type OcsfUserManagement = {
948
1057
  readonly class_uid: 3007;
@@ -987,16 +1096,17 @@ declare function accessToOcsf(event: AccessEvent): OcsfUserManagement | undefine
987
1096
  /** The CSV export columns, in order; the header row of every CSV file. */
988
1097
  declare const CSV_COLUMNS: readonly ["time", "principal", "actor", "tenant", "permission", "outcome", "matched.role", "via", "denials.reason", "token"];
989
1098
  /**
990
- * One RFC 4180 row for a decision or approval event, without a line
991
- * terminator; join rows with CRLF under a `CSV_COLUMNS` header.
1099
+ * One RFC 4180 row for a decision or approval event, without a line terminator;
1100
+ * join rows with CRLF under a `CSV_COLUMNS` header.
992
1101
  */
993
1102
  declare function toCsvRow(event: DecisionEvent): string;
994
1103
  //#endregion
995
1104
  //#region src/core/catalog-fingerprint.d.ts
996
1105
  /**
997
- * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON without `generatedAt`, `generator`, `fingerprint`
998
- * and every `permissions[].usages`, so neither the CLI version, the clock nor
999
- * call sites change it.
1106
+ * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
1107
+ * without `generatedAt`, `generator`, `fingerprint` and every
1108
+ * `permissions[].usages`, so neither the CLI version, the clock nor call sites
1109
+ * change it.
1000
1110
  */
1001
1111
  declare function catalogFingerprint(catalog: unknown): string;
1002
1112
  //#endregion
@@ -1012,8 +1122,8 @@ declare function canonicalJson(value: unknown): string;
1012
1122
  //#endregion
1013
1123
  //#region src/core/sha256.d.ts
1014
1124
  /**
1015
- * The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
1016
- * of `text`. An RFC 9651 sf-token, so it fits a structured header as is.
1125
+ * The one digest notation: `sha-256:` plus the unpadded base64url SHA-256 of
1126
+ * `text`. An RFC 9651 sf-token, so it fits a structured header as is.
1017
1127
  */
1018
1128
  declare function sha256Digest(text: string): string;
1019
1129
  //#endregion
@@ -1021,17 +1131,17 @@ declare function sha256Digest(text: string): string;
1021
1131
  type DelegatedPermission = Pick<Permission, "scope" | "resource" | "action">;
1022
1132
  /**
1023
1133
  * Whether a delegated caller may use a permission its principal holds, through
1024
- * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
1025
- * `undefined` means covered; otherwise the denial reason `decide` would add.
1134
+ * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`. `undefined`
1135
+ * means covered; otherwise the denial reason `decide` would add.
1026
1136
  */
1027
1137
  declare function coveredByDelegation(permission: DelegatedPermission, delegation: Delegation | undefined, resourceId?: string, hasActor?: boolean): DenialReason | undefined;
1028
1138
  /**
1029
1139
  * The permission keys the policy's delegations let `subject.actor` use for
1030
1140
  * `subject.principal` right now: the union over every active delegation whose
1031
- * `to` matches the actor and whose `from` the principal holds. `undefined`
1032
- * when none applies, so the call falls back to the token delegation alone.
1033
- * An actor with `readOnly: true` gets only each delegation's read-only keys.
1034
- * Attenuation only: a key here still needs a matching allow and no deny.
1141
+ * `to` matches the actor and whose `from` the principal holds. `undefined` when
1142
+ * none applies, so the call falls back to the token delegation alone. An actor
1143
+ * with `readOnly: true` gets only each delegation's read-only keys. Attenuation
1144
+ * only: a key here still needs a matching allow and no deny.
1035
1145
  */
1036
1146
  declare function delegatedPermissions(delegations: readonly PolicyDelegation[] | undefined, subject: Subject, heldRoles: ReadonlySet<string>, now: number): ReadonlySet<string> | undefined;
1037
1147
  //#endregion