permdock 0.6.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 (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,10 +1,11 @@
1
- import { Rt as Instant, St as ApiKeyPrincipal, T as Policy, U as CredentialVerifier, ar as Subject, gt as SupportSession, pn as ApproverInput, qt as AuthEvent, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { E as PermissionTree, w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { d as PrincipalIdentity, i as PermDockOptions, p as PrincipalSource, r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { c as AccessReviewStore } from "../types-C_IiEs64.js";
5
- import { i as SupabaseRpcCaller } from "../postgrest-CEgRbefE.js";
6
- import { g as SupabaseSubjectOptions, m as SupabaseSessionLike, u as SupabasePrincipal } from "../types-BzzaHxt3.js";
7
- import { c as LinkPolicy, o as CapabilityPrincipal, t as Capability } from "../capability-Drg-1YhL.js";
1
+ import { Rt as Instant, St as ApiKeyPrincipal, T as Policy, U as CredentialVerifier, Zt as AuthEvent, _n as ApproverInput, gt as SupportSession, lr as Subject, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { f as PermissionTree, u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { _ as PrincipalSource, a as PermDock, h as PrincipalIdentity, o as PermDockOptions } from "../permdock-B6Sf4T_S.js";
4
+ import { c as AccessReviewStore } from "../types-B2mlGuhW.js";
5
+ import { i as SupabaseRpcCaller } from "../postgrest-DicQyqm-.js";
6
+ import { a as CatalogDocument } from "../types-ZzRGoViD.js";
7
+ import { d as SupabasePrincipal, g as SupabaseSessionLike, v as SupabaseSubjectOptions } from "../types-ah9NlU6j.js";
8
+ import { c as LinkPolicy, o as CapabilityPrincipal, t as Capability } from "../capability-ChuiONQU.js";
8
9
  import { AuthorizationProvider } from "better-supabase/config";
9
10
  import { AuthSession, AuthorizationHooks, Authorizer, SupportAuthorize, SupportAuthorizeInput } from "better-supabase/server";
10
11
  import { EntitlementClaimOptions } from "better-supabase/blocks/entitlements";
@@ -17,32 +18,38 @@ import { AuthorizeHookOptions, ProtectWebHandlerOptions } from "better-supabase/
17
18
  //#region src/better-supabase/access-reviews.d.ts
18
19
  type AccessReviewApplierOptions = {
19
20
  /**
20
- * A supabase-js client that may call the organizations and invitations
21
- * block functions. Pass the reviewer's client so the block's own
22
- * permission and role-ceiling checks run as the reviewer.
21
+ * A supabase-js client that may call the organizations and invitations block
22
+ * functions. Pass the reviewer's client so the block's own permission and
23
+ * role-ceiling checks run as the reviewer.
23
24
  */
24
25
  readonly client: SupabaseRpcCaller;
25
26
  readonly reviews: AccessReviewStore;
26
- /** Decides whether a fallback role or an invitation's role grants the reviewed permission. */
27
+ /**
28
+ * Decides whether a fallback role or an invitation's role grants the reviewed
29
+ * permission.
30
+ */
27
31
  readonly policy: Policy;
28
32
  /**
29
- * The role a revoked member moves to with `update_member_role`: one role,
30
- * or a map from the roles in the item's `via` to their fallback. A
31
- * fallback that still grants the permission, or none, removes the member
32
- * with `remove_member` instead.
33
+ * The role a revoked member moves to with `update_member_role`: one role, or
34
+ * a map from the roles in the item's `via` to their fallback. A fallback that
35
+ * still grants the permission, or none, removes the member with
36
+ * `remove_member` instead.
33
37
  */
34
38
  readonly demoteTo?: string | Readonly<Record<string, string>>;
35
39
  /**
36
- * The member's email, for revoking the tenant's open invitations to it
37
- * whose role grants the permission. Without it invitations are left alone.
40
+ * The member's email, for revoking the tenant's open invitations to it whose
41
+ * role grants the permission. Without it invitations are left alone.
38
42
  */
39
43
  readonly email?: (userId: string) => string | null | undefined | Promise<string | null | undefined>;
40
44
  /**
41
- * An instance for the member in the review's tenant, read after the
42
- * change. An item it still grants is not marked applied.
45
+ * An instance for the member in the review's tenant, read after the change.
46
+ * An item it still grants is not marked applied.
43
47
  */
44
48
  readonly permdockFor?: (principalId: string, tenant: string) => PermDock | Promise<PermDock>;
45
- /** The schema of the block functions; better-supabase's default is `better_supabase`. */
49
+ /**
50
+ * The schema of the block functions; better-supabase's default is
51
+ * `better_supabase`.
52
+ */
46
53
  readonly schema?: string;
47
54
  /** The scope review tenants are; defaults to the policy's first scope. */
48
55
  readonly scope?: string;
@@ -55,66 +62,32 @@ type AccessReviewApplyFailure = {
55
62
  type AccessReviewApplyResult = {
56
63
  /** Items marked applied, including those whose member was already gone. */
57
64
  readonly applied: readonly string[];
58
- /** Items left unapplied, with the error the block function or the re-check gave. */
65
+ /**
66
+ * Items left unapplied, with the error the block function or the re-check
67
+ * gave.
68
+ */
59
69
  readonly failed: readonly AccessReviewApplyFailure[];
60
70
  };
61
71
  /**
62
72
  * Applies the revoked items of an access review to better-supabase's
63
- * organizations and invitations blocks, then marks each one applied. A
64
- * revoked member moves to the `demoteTo` role when the policy says that
65
- * role lacks the permission, and is removed otherwise. With `email`, the
66
- * tenant's open invitations to the member whose role grants the permission
67
- * are revoked too. A member who is no longer in the organization counts as
68
- * applied. Any other error leaves the item unapplied in `failed`, and one
69
- * item's failure never stops the others. Throws `review-not-found` for an
70
- * unknown review.
73
+ * organizations and invitations blocks, then marks each one applied. A revoked
74
+ * member moves to the `demoteTo` role when the policy says that role lacks the
75
+ * permission, and is removed otherwise. With `email`, the tenant's open
76
+ * invitations to the member whose role grants the permission are revoked too. A
77
+ * member who is no longer in the organization counts as applied. Any other
78
+ * error leaves the item unapplied in `failed`, and one item's failure never
79
+ * stops the others. Throws `review-not-found` for an unknown review.
71
80
  */
72
81
  export declare function accessReviewApplier(options: AccessReviewApplierOptions): (reviewId: string) => Promise<AccessReviewApplyResult>;
73
82
  //#endregion
74
83
  //#region src/better-supabase/approvers.d.ts
75
84
  /**
76
- * Who may approve each better-supabase request kind: `'ai-tool'` (a tool
77
- * call), `'support-session'`, or `'<subject type>.<action>'` from the
78
- * approvals block.
85
+ * Who may approve each better-supabase request kind: `'ai-tool'` (a tool call),
86
+ * `'support-session'`, or `'<subject type>.<action>'` from the approvals
87
+ * block.
79
88
  */
80
89
  type ProviderApprovers = Readonly<Record<string, ApproverInput>>;
81
90
  //#endregion
82
- //#region src/better-supabase/subscribers.d.ts
83
- /** The fields of better-supabase's `OutboxEvent` the policy reads. */
84
- type SubscriberPolicyEvent = {
85
- readonly type: string;
86
- readonly tenant: string | null;
87
- readonly actorId: string | null;
88
- readonly payload: unknown;
89
- };
90
- type SubscriberPolicyOptions<E extends SubscriberPolicyEvent = SubscriberPolicyEvent> = {
91
- readonly policy: Policy;
92
- /** Loads the sender and every subscriber's principal. */
93
- readonly principals: PrincipalSource;
94
- /**
95
- * The permission a subscriber needs for each event type: an exact type,
96
- * `prefix.*` or `*`, with the exact type first and then the longest
97
- * pattern. A type with no entry reaches no one.
98
- */
99
- readonly events: Readonly<Record<string, Permission>>;
100
- /** The row the permission is decided on. Defaults to `event.payload`, validated against the resource schema. */
101
- readonly row?: (event: E) => unknown;
102
- /** The principal the fan-out runs as in the event's tenant. Defaults to `event.actorId`. */
103
- readonly sender?: (event: E) => string | null | undefined;
104
- /** Sources for the sender's and subscribers' instances. */
105
- readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt" | "principals">;
106
- };
107
- /**
108
- * The per-subscriber check for better-supabase's webhooks-out, outbox and
109
- * realtime fan-out: the subscribers whose `principal` `decideFor` grants
110
- * the event type's permission on its row, in the event's tenant, as the
111
- * sender. An unmapped type, an event without a tenant or sender, a sender
112
- * outside the tenant and a throw reach no one.
113
- */
114
- export declare function subscriberPolicy<E extends SubscriberPolicyEvent = SubscriberPolicyEvent>(options: SubscriberPolicyOptions<E>): <S extends {
115
- readonly principal: string;
116
- }>(event: E, subscribers: readonly S[]) => Promise<S[]>;
117
- //#endregion
118
91
  //#region src/better-supabase/api-keys.d.ts
119
92
  /** The roles a tenant key holds in its tenant: a list, or one per key. */
120
93
  type ServiceRoles<K> = readonly string[] | ((key: K) => readonly string[]);
@@ -122,8 +95,8 @@ type ApiKeyVerifierOptions = {
122
95
  /** `createApiKeys()` over a service transport. */
123
96
  readonly keys: Pick<ApiKeys, "verify">;
124
97
  /**
125
- * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the
126
- * default for `serviceRoles`.
98
+ * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the default
99
+ * for `serviceRoles`.
127
100
  */
128
101
  readonly manifest?: unknown;
129
102
  /**
@@ -132,95 +105,167 @@ type ApiKeyVerifierOptions = {
132
105
  * `null`.
133
106
  */
134
107
  readonly serviceRoles?: ServiceRoles<ApiKey>;
135
- /** The permissions `*` stands for. Without it, a key with `*` verifies to `null`. */
108
+ /**
109
+ * The permissions `*` stands for. Without it, a key with `*` verifies to
110
+ * `null`.
111
+ */
136
112
  readonly allPermissions?: readonly Permission[];
137
113
  };
138
114
  /**
139
- * better-supabase's API keys as a `CredentialVerifier`, for
140
- * `subjectFromApiKey` from `permdock/server`, which reads PermDock's
141
- * `pdk_<id>_<secret>` format: create the keys with `prefix: "pdk"`. The
142
- * credential id is the key's `publicId`, the id in the token. A personal key
143
- * is a `user` credential acting as its user (inside its tenant when the key
144
- * is limited to one), a tenant key a `service` credential holding
145
- * `serviceRoles` in its tenant, and the key's scopes are the credential's
146
- * permissions. better-supabase records the use when it verifies, so there is
147
- * no `touch`. A rotated key in its grace period verifies, and its credential
148
- * expires when the grace period ends. An invalid, revoked, expired or
149
- * rate-limited key, and a failed lookup, are `null`. `permdock/server` exports a different
150
- * `apiKeyVerifier`, over the application's own key records.
115
+ * better-supabase's API keys as a `CredentialVerifier`, for `subjectFromApiKey`
116
+ * from `permdock/server`, which reads PermDock's `pdk_<id>_<secret>` format:
117
+ * create the keys with `prefix: "pdk"`. The credential id is the key's
118
+ * `publicId`, the id in the token. A personal key is a `user` credential acting
119
+ * as its user (inside its tenant when the key is limited to one), a tenant key
120
+ * a `service` credential holding `serviceRoles` in its tenant, and the key's
121
+ * scopes are the credential's permissions. better-supabase records the use when
122
+ * it verifies, so there is no `touch`. A rotated key in its grace period
123
+ * verifies, and its credential expires when the grace period ends. An invalid,
124
+ * revoked, expired or rate-limited key, and a failed lookup, are `null`.
125
+ * `permdock/server` exports a different `apiKeyVerifier`, over the
126
+ * application's own key records.
151
127
  */
152
128
  export declare function apiKeyVerifier(options: ApiKeyVerifierOptions): CredentialVerifier;
153
129
  /**
154
- * The `claim` and `tenantClaim` options of better-supabase's
155
- * `apiKeyClaims()`, from the manifest's `rls.apiKeys`, so a key's token
156
- * carries the scopes ceiling, tenant and roles the `rls generate` helpers
157
- * read. Throws when the manifest has no `rls.apiKeys`.
130
+ * The `claim` and `tenantClaim` options of better-supabase's `apiKeyClaims()`,
131
+ * from the manifest's `rls.apiKeys`, so a key's token carries the scopes
132
+ * ceiling, tenant and roles the `rls generate` helpers read. Throws when the
133
+ * manifest has no `rls.apiKeys`.
158
134
  */
159
135
  export declare function apiKeyClaimOptions(manifest: unknown): Pick<ApiKeyClaimsOptions, "claim" | "tenantClaim">;
160
136
  //#endregion
161
137
  //#region src/better-supabase/subject.d.ts
162
- /** An `AuthSession` of kind `apiKey`, from better-supabase's api-keys middleware. */
138
+ /**
139
+ * An `AuthSession` of kind `apiKey`, from better-supabase's api-keys
140
+ * middleware.
141
+ */
163
142
  type ApiKeySession = Extract<AuthSession, {
164
143
  readonly kind: "apiKey";
165
144
  }>;
166
145
  type ApiKeySessionOptions = {
167
- /** The definitions: the key's scopes become the subject's delegation, and `*` stands for all of them. */
146
+ /**
147
+ * The definitions: the key's scopes become the subject's delegation, and `*`
148
+ * stands for all of them.
149
+ */
168
150
  readonly permissions: PermissionTree;
169
- /** `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the default for `serviceRoles`. */
151
+ /**
152
+ * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the default
153
+ * for `serviceRoles`.
154
+ */
170
155
  readonly manifest?: unknown;
171
- /** The roles a tenant key holds in its tenant. Without it or a manifest with `rls.apiKeys`, a tenant key is anonymous. */
156
+ /**
157
+ * The roles a tenant key holds in its tenant. Without it or a manifest with
158
+ * `rls.apiKeys`, a tenant key is anonymous.
159
+ */
172
160
  readonly serviceRoles?: ServiceRoles<ApiKeySession>;
173
161
  };
174
162
  /** The claim, and the short code better-supabase writes for each feature key. */
175
163
  type FeatureClaim = EntitlementClaimOptions;
176
164
  type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "claims"> & {
177
- /** Where the token carries roles, the active tenant and memberships; plans come from `plans`. */
165
+ /**
166
+ * Where the token carries roles, the active tenant and memberships; plans
167
+ * come from `plans`.
168
+ */
178
169
  readonly claims?: Omit<NonNullable<SupabaseSubjectOptions["claims"]>, "plans">;
179
170
  /** How `kind: 'apiKey'` sessions map. Without it they are anonymous. */
180
171
  readonly apiKeys?: ApiKeySessionOptions;
181
172
  /**
182
- * The claim `principal.plans` reads: its name (default `features`), or
183
- * `{ claim, keys }` with the same `entitlements.claim.keys` better-supabase
184
- * writes short codes with, so `plans` holds the feature keys. A code
185
- * without a key is dropped.
173
+ * The claim `principal.plans` reads: its name (default `features`), or `{
174
+ * claim, keys }` with the same `entitlements.claim.keys` better-supabase
175
+ * writes short codes with, so `plans` holds the feature keys. A code without
176
+ * a key is dropped.
186
177
  */
187
178
  readonly plans?: string | FeatureClaim;
188
179
  };
189
180
  /**
190
181
  * `subjectFromSupabaseSession` for better-supabase's `AuthSession`, reading
191
182
  * `memberships` for the memberships and the entitlements module's `features`
192
- * claim for `principal.plans` (`plans` names another claim). With `apiKeys`,
193
- * a verified `apiKey` session is the key's credential subject: a personal key
183
+ * claim for `principal.plans` (`plans` names another claim). With `apiKeys`, a
184
+ * verified `apiKey` session is the key's credential subject: a personal key
194
185
  * acts as its user within the key's scopes, a tenant key as a `service`
195
186
  * principal holding `serviceRoles`. Without `apiKeys`, and for `anon`,
196
187
  * `service` and `invalid` sessions, the subject is anonymous.
197
188
  */
198
189
  export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<ApiKeyPrincipal> | Subject;
199
190
  //#endregion
191
+ //#region src/better-supabase/subscribers.d.ts
192
+ /** The fields of better-supabase's `OutboxEvent` the policy reads. */
193
+ type SubscriberPolicyEvent = {
194
+ readonly type: string;
195
+ readonly tenant: string | null;
196
+ readonly actorId: string | null;
197
+ readonly payload: unknown;
198
+ };
199
+ type SubscriberPolicyOptions<E extends SubscriberPolicyEvent = SubscriberPolicyEvent> = {
200
+ readonly policy: Policy;
201
+ /** Loads the sender and every subscriber's principal. */
202
+ readonly principals: PrincipalSource;
203
+ /**
204
+ * The permission a subscriber needs for each event type: an exact type,
205
+ * `prefix.*` or `*`, with the exact type first and then the longest pattern.
206
+ * A type with no entry reaches no one.
207
+ */
208
+ readonly events: Readonly<Record<string, Permission>>;
209
+ /**
210
+ * The row the permission is decided on. Defaults to `event.payload`,
211
+ * validated against the resource schema.
212
+ */
213
+ readonly row?: (event: E) => unknown;
214
+ /**
215
+ * The principal the fan-out runs as in the event's tenant. Defaults to
216
+ * `event.actorId`.
217
+ */
218
+ readonly sender?: (event: E) => string | null | undefined;
219
+ /** Sources for the sender's and subscribers' instances. */
220
+ readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt" | "principals">;
221
+ };
222
+ /**
223
+ * The per-subscriber check for better-supabase's webhooks-out, outbox and
224
+ * realtime fan-out: the subscribers whose `principal` `decideFor` grants the
225
+ * event type's permission on its row, in the event's tenant, as the sender. An
226
+ * unmapped type, an event without a tenant or sender, a sender outside the
227
+ * tenant and a throw reach no one.
228
+ */
229
+ export declare function subscriberPolicy<E extends SubscriberPolicyEvent = SubscriberPolicyEvent>(options: SubscriberPolicyOptions<E>): <S extends {
230
+ readonly principal: string;
231
+ }>(event: E, subscribers: readonly S[]) => Promise<S[]>;
232
+ //#endregion
200
233
  //#region src/better-supabase/support.d.ts
201
- /** A start `decideSupportSession` holds for approval: the session it would start and the token an approval binds to. */
234
+ /**
235
+ * A start `decideSupportSession` holds for approval: the session it would start
236
+ * and the token an approval binds to.
237
+ */
202
238
  type PendingSupportSession = {
203
239
  readonly token: string;
204
240
  readonly session: SupportSession;
205
241
  };
206
242
  type SupportPolicyOptions = {
207
243
  readonly policy: Policy;
208
- /** How the admin's verified claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
244
+ /**
245
+ * How the admin's verified claims map to a subject; the defaults of
246
+ * `subjectFromBetterSupabase`.
247
+ */
209
248
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
210
- /** Sources and sinks for the admin's instance; `settings` also supplies the tenant's `supportSessions` rules. */
249
+ /**
250
+ * Sources and sinks for the admin's instance; `settings` also supplies the
251
+ * tenant's `supportSessions` rules.
252
+ */
211
253
  readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
212
254
  /**
213
- * The session's permissions when a start asks for `readOnly: false`.
214
- * Without it such a start is refused; a read-only start gets every
215
- * `readOnlyHint` permission the admin can use.
255
+ * The session's permissions when a start asks for `readOnly: false`. Without
256
+ * it such a start is refused; a read-only start gets every `readOnlyHint`
257
+ * permission the admin can use.
216
258
  */
217
259
  readonly writable?: readonly Permission[];
218
- /** Approval by someone other than the admin is required unless this is `false`. */
260
+ /**
261
+ * Approval by someone other than the admin is required unless this is
262
+ * `false`.
263
+ */
219
264
  readonly approval?: boolean;
220
265
  /**
221
- * The approval the application recorded for `pending.token`, or
222
- * `undefined` while none exists. `approvedBy` is the approver's principal
223
- * id and never the admin's.
266
+ * The approval the application recorded for `pending.token`, or `undefined`
267
+ * while none exists. `approvedBy` is the approver's principal id and never
268
+ * the admin's.
224
269
  */
225
270
  readonly approved?: (input: SupportAuthorizeInput, pending: PendingSupportSession) => {
226
271
  readonly approvedBy: string;
@@ -233,8 +278,8 @@ type SupportPolicyOptions = {
233
278
  * verified claims become a PermDock subject, and the start is decided with
234
279
  * `permdock.decideSupportSession` in the requested tenant. `true` only for
235
280
  * `granted`: an `approval-required` start passes once `approved` returns a
236
- * distinct approver for its token. `readOnly: false` needs `writable`. A
237
- * throw is `false`.
281
+ * distinct approver for its token. `readOnly: false` needs `writable`. A throw
282
+ * is `false`.
238
283
  */
239
284
  export declare function supportPolicy(options: SupportPolicyOptions): SupportAuthorize;
240
285
  //#endregion
@@ -250,30 +295,42 @@ type AuthorizationHooksOptions = {
250
295
  readonly claims: (userId: string, options: {
251
296
  readonly tenant?: string;
252
297
  }) => Maybe$1<Claims>;
253
- /** How the claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
298
+ /**
299
+ * How the claims map to a subject; the defaults of
300
+ * `subjectFromBetterSupabase`.
301
+ */
254
302
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
255
303
  /** Sources for every instance the hooks build. */
256
304
  readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
257
305
  /**
258
- * The claims an organization-owned automation runs as in `tenant`, such
259
- * as its default service principal's. Without it such an automation runs
260
- * as no one.
306
+ * The claims an organization-owned automation runs as in `tenant`, such as
307
+ * its default service principal's. Without it such an automation runs as no
308
+ * one.
261
309
  */
262
310
  readonly service?: (tenant: string | null) => Maybe$1<Claims>;
263
- /** The `principalSource` for `identities` and `delivery`; without it neither hook is set. */
311
+ /**
312
+ * The `principalSource` for `identities` and `delivery`; without it neither
313
+ * hook is set.
314
+ */
264
315
  readonly principals?: PrincipalSource;
265
- /** The permission each event type needs, for `delivery` (`subscriberPolicy`'s `events`). */
316
+ /**
317
+ * The permission each event type needs, for `delivery` (`subscriberPolicy`'s
318
+ * `events`).
319
+ */
266
320
  readonly events?: Readonly<Record<string, Permission>>;
267
321
  /** The row a delivery check decides on; defaults to `event.payload`. */
268
322
  readonly row?: (event: SubscriberPolicyEvent) => unknown;
269
- /** Who may approve each request kind, as for `authorizationProvider`; sets `approverOf`. */
323
+ /**
324
+ * Who may approve each request kind, as for `authorizationProvider`; sets
325
+ * `approverOf`.
326
+ */
270
327
  readonly approvers?: ProviderApprovers;
271
328
  /** `supportPolicy`'s options without `policy`; sets `support.authorize`. */
272
329
  readonly support?: Omit<SupportPolicyOptions, "policy">;
273
330
  /**
274
- * The user and tenant a run ticket stands for, looked up in the app's
275
- * store; `null` refuses the ticket. Sets `tickets.subject`, which loads
276
- * the user's current claims, so a suspended user's ticket runs as no one.
331
+ * The user and tenant a run ticket stands for, looked up in the app's store;
332
+ * `null` refuses the ticket. Sets `tickets.subject`, which loads the user's
333
+ * current claims, so a suspended user's ticket runs as no one.
277
334
  */
278
335
  readonly tickets?: (ticket: string) => Maybe$1<{
279
336
  readonly userId: string;
@@ -281,91 +338,110 @@ type AuthorizationHooksOptions = {
281
338
  }>;
282
339
  };
283
340
  /**
284
- * better-supabase's `AuthorizationHooks` (`createServer(betterSupabase,
285
- * { authorization })`), decided by `policy`. Every hook builds the
286
- * principal's instance from the claims `claims` loads now, never from the
287
- * request, and fails closed: a throw, an unknown key and `approval-required`
288
- * refuse. `automation` and `delegation` are always set; `identities`,
289
- * `delivery`, `approverOf`, `support` and `tickets` only with the options
290
- * they read. `delegation.permissions` maps each scope to the keys whose
291
- * `.scope` it is, was renamed from, or that a policy `oauthScopes` entry
292
- * covers, and reads no `authorization_details`.
341
+ * better-supabase's `AuthorizationHooks` (`createServer(betterSupabase, {
342
+ * authorization })`), decided by `policy`. Every hook builds the principal's
343
+ * instance from the claims `claims` loads now, never from the request, and
344
+ * fails closed: a throw, an unknown key and `approval-required` refuse.
345
+ * `automation` and `delegation` are always set; `identities`, `delivery`,
346
+ * `approverOf`, `support` and `tickets` only with the options they read.
347
+ * `delegation.permissions` maps each scope to the keys whose `.scope` it is,
348
+ * was renamed from, or that a policy `oauthScopes` entry covers, and reads no
349
+ * `authorization_details`.
293
350
  */
294
351
  export declare function authorizationHooks(options: AuthorizationHooksOptions): AuthorizationHooks;
295
352
  //#endregion
296
353
  //#region src/better-supabase/provider.d.ts
297
354
  type AuthorizationProviderOptions = {
298
- /** `permdock.manifest.json`, parsed or as JSON text, from `permdock supabase inspect --out`. */
355
+ /**
356
+ * `permdock.manifest.json`, parsed or as JSON text, from `permdock supabase
357
+ * inspect --out`.
358
+ */
299
359
  readonly manifest: unknown;
300
360
  /**
301
- * `permissions.catalog.json` from `permdock catalog`. Without it the
302
- * provider lists no permissions, so better-supabase refuses every key in
303
- * a bucket, topic or module check.
361
+ * `permissions.catalog.json` from `permdock catalog`. Without it the provider
362
+ * lists no permissions, so better-supabase refuses every key in a bucket,
363
+ * topic or module check.
304
364
  */
305
365
  readonly catalog?: unknown;
306
366
  /** The scope tenants are; defaults to the manifest's one root scope. */
307
367
  readonly scope?: string;
308
368
  /**
309
- * The permission that lets a user decide a tool call waiting for
310
- * approval: the `'ai-tool'` entry of `approvers` (`holder(approver)`)
311
- * unless `approvers` names one. The requester is never their own approver.
369
+ * The permission that lets a user decide a tool call waiting for approval:
370
+ * the `'ai-tool'` entry of `approvers` (`holder(approver)`) unless
371
+ * `approvers` names one. The requester is never their own approver.
312
372
  */
313
373
  readonly approver?: Permission;
314
374
  /**
315
375
  * Who may approve each request kind, for better-supabase's `isApprover`:
316
- * `'ai-tool'`, `'support-session'` or the approvals block's
317
- * `'<subject type>.<action>'`, each mapped to `user()`, `holder()` or
318
- * `anyOf()` approvers. A kind it does not name has no provider approver,
319
- * which for tool calls and support sessions means nobody but the service
320
- * role. Needs `permdock_is_approver` from `rls.approvals`.
376
+ * `'ai-tool'`, `'support-session'` or the approvals block's `'<subject
377
+ * type>.<action>'`, each mapped to `user()`, `holder()` or `anyOf()`
378
+ * approvers. A kind it does not name has no provider approver, which for tool
379
+ * calls and support sessions means nobody but the service role. Needs
380
+ * `permdock_is_approver` from `rls.approvals`.
321
381
  */
322
382
  readonly approvers?: ProviderApprovers;
323
383
  };
324
384
  /**
325
385
  * better-supabase's `authorization` config value, built from PermDock's
326
386
  * manifest and catalog: the scopes, the `rls generate` helpers as SQL
327
- * templates, the membership tables, suspension rows, the token hook and
328
- * every catalog key with `sqlComplete` set from its `rowConditions`. A
329
- * `_for` template and `permissionsFor` are set only when the manifest lists
330
- * their helper, which `rls.mode: 'database'` writes; `isApprover` only with
331
- * `approvers` and `permdock_is_approver`, and otherwise `canApprove` only
332
- * with `approver`. `holdersOf` (`permitted_<tenant scope>_users`) and
387
+ * templates, the membership tables, suspension rows, the token hook and every
388
+ * catalog key with `sqlComplete` set from its `rowConditions`. A `_for`
389
+ * template and `permissionsFor` are set only when the manifest lists their
390
+ * helper, which `rls.mode: 'database'` writes; `isApprover` only with
391
+ * `approvers` and `permdock_is_approver`, and otherwise `canApprove` only with
392
+ * `approver`. `holdersOf` (`permitted_<tenant scope>_users`) and
333
393
  * `actorMayWrite` (`permdock_actor_may_write()`) are set when the manifest
334
- * lists their helper. Throws when the manifest or catalog is invalid, or when the
335
- * tenant scope is ambiguous.
394
+ * lists their helper, and so is `teamIdsOf` (`member_<scope>_ids_of({user})`)
395
+ * for a scope named `team` or `teams`. Throws when the manifest or catalog is
396
+ * invalid, or when the tenant scope is ambiguous.
336
397
  */
337
398
  export declare function authorizationProvider(options: AuthorizationProviderOptions): AuthorizationProvider;
338
399
  //#endregion
339
400
  //#region src/better-supabase/authorizer.d.ts
340
- /** The table operations better-supabase's `permissions: true` resolves through `forOperation`. */
401
+ /**
402
+ * The table operations better-supabase's `permissions: true` resolves through
403
+ * `forOperation`.
404
+ */
341
405
  type AuthorizerOperation = "list" | "get" | "create" | "update" | "delete";
342
406
  type AuthorizerOptions = {
343
407
  readonly policy: Policy;
344
- /** How the verified claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
408
+ /**
409
+ * How the verified claims map to a subject; the defaults of
410
+ * `subjectFromBetterSupabase`.
411
+ */
345
412
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
346
413
  /**
347
- * The permission of each table operation, so a resource with
348
- * `permissions: true` is checked. Without it such a resource is refused.
414
+ * The permission of each table operation, so a resource with `permissions:
415
+ * true` is checked. Without it such a resource is refused.
349
416
  */
350
417
  readonly operations?: Readonly<Record<string, Partial<Record<AuthorizerOperation, Permission>>>>;
351
- /** Sources and sinks for each instance. The subject, actor and tenant always come from the verified request. */
418
+ /**
419
+ * Sources and sinks for each instance. The subject, actor and tenant always
420
+ * come from the verified request.
421
+ */
352
422
  readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
353
423
  };
354
424
  /**
355
425
  * better-supabase's `authorizer` for PermDock: every resource, action, route
356
- * guard and MCP tool that declares a `permission` is decided with `decide`.
357
- * The subject is mapped from the verified claims with
358
- * `subjectFromBetterSupabase`; the request's `context.tenant` selects the
359
- * active tenant only among the memberships the claims hold. A caller without
360
- * claims is anonymous, and a throw denies.
426
+ * guard and MCP tool that declares a `permission` is decided with `decide`. The
427
+ * subject is mapped from the verified claims with `subjectFromBetterSupabase`;
428
+ * the request's `context.tenant` selects the active tenant only among the
429
+ * memberships the claims hold. A caller without claims is anonymous, and a
430
+ * throw denies.
361
431
  */
362
432
  export declare function authorizer(options: AuthorizerOptions): Authorizer<Permission>;
363
433
  //#endregion
364
434
  //#region src/better-supabase/policies.d.ts
365
435
  type AccessScope = {
366
- /** A scope in the policy's scopes (or the manifest's `rls.scopes`), or `platform` for permissions granted globally. */
436
+ /**
437
+ * A scope in the policy's scopes (or the manifest's `rls.scopes`), or
438
+ * `platform` for permissions granted globally.
439
+ */
367
440
  readonly scope: string;
368
- /** 1-based path or topic segment holding the scope id; better-supabase's default is the `{organizationId}` segment. */
441
+ /**
442
+ * 1-based path or topic segment holding the scope id; better-supabase's
443
+ * default is the `{organizationId}` segment.
444
+ */
369
445
  readonly segment?: number;
370
446
  };
371
447
  /**
@@ -374,16 +450,28 @@ type AccessScope = {
374
450
  * the scopes a permission is granted at come from the definitions.
375
451
  */
376
452
  type AccessPolicyOptions = AccessScope & ({
377
- /** `permdock.manifest.json`, parsed or as JSON text: it names the helpers' schema and the scopes. */
453
+ /**
454
+ * `permdock.manifest.json`, parsed or as JSON text: it names the
455
+ * helpers' schema and the scopes.
456
+ */
378
457
  readonly manifest: unknown;
379
- /** `permissions.catalog.json`: only keys it marks `rowConditions: false` are accepted. */
458
+ /**
459
+ * `permissions.catalog.json`: only keys it marks `rowConditions: false`
460
+ * are accepted.
461
+ */
380
462
  readonly catalog: unknown;
381
463
  readonly policy?: undefined;
382
464
  readonly schema?: undefined;
383
465
  } | {
384
- /** The `definePolicy` result: only keys with no row condition in it are accepted. */
466
+ /**
467
+ * The `definePolicy` result: only keys with no row condition in it are
468
+ * accepted.
469
+ */
385
470
  readonly policy: Policy;
386
- /** The schema `rls generate` put the helpers in (`rls.schema`). Default `permdock`. */
471
+ /**
472
+ * The schema `rls generate` put the helpers in (`rls.schema`). Default
473
+ * `permdock`.
474
+ */
387
475
  readonly schema?: string;
388
476
  readonly manifest?: undefined;
389
477
  readonly catalog?: undefined;
@@ -403,11 +491,10 @@ type TopicAccess = {
403
491
  readonly send?: Permission;
404
492
  };
405
493
  /**
406
- * A better-supabase bucket `policy` that checks PermDock permissions with
407
- * the `rls generate` helpers at `scope`. The helpers check role and scope
408
- * only, so a permission with row conditions (`rowConditions: true` in the
409
- * catalog, or a conditioned grant in `policy`), or one not granted at
410
- * `scope`, throws.
494
+ * A better-supabase bucket `policy` that checks PermDock permissions with the
495
+ * `rls generate` helpers at `scope`. The helpers check role and scope only, so
496
+ * a permission with row conditions (`rowConditions: true` in the catalog, or a
497
+ * conditioned grant in `policy`), or one not granted at `scope`, throws.
411
498
  */
412
499
  export declare function bucketPolicy(access: BucketAccess, options: AccessPolicyOptions): AccessBucketPolicy;
413
500
  /** As {@link bucketPolicy}, for a better-supabase Realtime topic. */
@@ -417,7 +504,10 @@ export declare function topicPolicy(access: TopicAccess, options: AccessPolicyOp
417
504
  type CredentialGuardOptions = {
418
505
  /** The request's PermDock instance. */
419
506
  readonly permdock: () => PermDock | Promise<PermDock>;
420
- /** The permission that resolves a token or connects an account; decided on the ref. */
507
+ /**
508
+ * The permission that resolves a token or connects an account; decided on the
509
+ * ref.
510
+ */
421
511
  readonly use: Permission;
422
512
  /** The permission that revokes a stored credential; defaults to `use`. */
423
513
  readonly revoke?: Permission;
@@ -425,10 +515,10 @@ type CredentialGuardOptions = {
425
515
  /**
426
516
  * `provider` with every `getToken`, `startAuthorization`,
427
517
  * `completeAuthorization` and `revoke` decided by PermDock first, on the
428
- * `CredentialRef` as the row. Anything but `granted` is a `forbidden`
429
- * error with hint `PERMDOCK_DENIED`, and a failed check is one too.
430
- * `capabilities` and `verifyInbound` (a third party's request, with no
431
- * user) pass through. Build it per request, with that request's PermDock.
518
+ * `CredentialRef` as the row. Anything but `granted` is a `forbidden` error
519
+ * with hint `PERMDOCK_DENIED`, and a failed check is one too. `capabilities`
520
+ * and `verifyInbound` (a third party's request, with no user) pass through.
521
+ * Build it per request, with that request's PermDock.
432
522
  */
433
523
  export declare function credentialGuard(provider: CredentialProvider, options: CredentialGuardOptions): CredentialProvider;
434
524
  //#endregion
@@ -441,9 +531,9 @@ type ToolPolicyOptions<C> = {
441
531
  /** The request's PermDock instance, from the hook's context. */
442
532
  readonly permdock: (ctx: C) => PermDock | Promise<PermDock>;
443
533
  /**
444
- * The row an instance permission is decided on, from the validated
445
- * arguments. Without it the call is decided without a row, which an
446
- * instance permission with a row condition denies.
534
+ * The row an instance permission is decided on, from the validated arguments.
535
+ * Without it the call is decided without a row, which an instance permission
536
+ * with a row condition denies.
447
537
  */
448
538
  readonly data?: (ctx: C, tool: McpToolRef, args: unknown) => unknown;
449
539
  };
@@ -453,17 +543,49 @@ type ToolPolicy<C> = {
453
543
  };
454
544
  /**
455
545
  * The `authorize` and `visible` hooks of better-supabase's `createMcp`, for
456
- * tools whose `meta` is a PermDock permission. A tool without a permission
457
- * is hidden and refused. `authorize` grants only a `granted` decision: an
458
- * approval-required call is refused, because `createMcp`
459
- * has no approval flow. A throw anywhere refuses.
546
+ * tools whose `meta` is a PermDock permission. A tool without a permission is
547
+ * hidden and refused. `authorize` grants only a `granted` decision: an
548
+ * approval-required call is refused, because `createMcp` has no approval flow.
549
+ * A throw anywhere refuses.
460
550
  */
461
551
  export declare function toolPolicy<C>(options: ToolPolicyOptions<C>): ToolPolicy<C>;
462
552
  //#endregion
553
+ //#region src/better-supabase/memberships.d.ts
554
+ /**
555
+ * A row of the better-supabase `memberships` table (organizations block), as
556
+ * `select user_id, organization_id, role, disabled_at` returns it.
557
+ */
558
+ type BetterSupabaseMembershipRow = {
559
+ readonly user_id: string;
560
+ readonly organization_id: string;
561
+ readonly role: string;
562
+ readonly disabled_at?: string | null;
563
+ };
564
+ type PrincipalFromMembershipsOptions = {
565
+ /**
566
+ * The policy scope an `organization_id` is an instance of; defaults to
567
+ * `tenant`, the first declared scope.
568
+ */
569
+ readonly scope?: string;
570
+ /**
571
+ * The organization the request acts in, the principal's active tenant. A
572
+ * scoped grant applies only there; without it, pick one per request with
573
+ * `permdock.tenant(id)`, or every scoped check denies with `no-tenant`.
574
+ */
575
+ readonly tenant?: string;
576
+ };
577
+ /**
578
+ * The principal `userId` is in the better-supabase organizations block: one
579
+ * membership per organization, keyed on `organization_id`, holding the role of
580
+ * each of the user's rows. Rows of another user, disabled rows and malformed
581
+ * rows are dropped, so a user with none holds no membership.
582
+ */
583
+ export declare function principalFromMemberships(userId: string, rows: readonly BetterSupabaseMembershipRow[], options?: PrincipalFromMembershipsOptions): Principal;
584
+ //#endregion
463
585
  //#region src/better-supabase/principals.d.ts
464
586
  /**
465
- * Where an identity link points: an app user, whose claims `principal`
466
- * loads, or a contact the app stores itself, which must be `kind: 'contact'`.
587
+ * Where an identity link points: an app user, whose claims `principal` loads,
588
+ * or a contact the app stores itself, which must be `kind: 'contact'`.
467
589
  */
468
590
  type BetterSupabaseIdentityLink = {
469
591
  readonly user: string;
@@ -474,36 +596,71 @@ type Maybe<T> = T | null | undefined | Promise<T | null | undefined>;
474
596
  type PrincipalSourceOptions = {
475
597
  /**
476
598
  * The claims better-supabase mints for `userId` now, or `null` for a user
477
- * deleted, suspended or unknown. `sqlSupportStore(…).claims`, which runs
478
- * the custom access token hook, fills it.
599
+ * deleted, suspended or unknown. `sqlSupportStore(…).claims`, which runs the
600
+ * custom access token hook, fills it.
479
601
  */
480
602
  readonly claims: (userId: string, options: {
481
603
  readonly tenant?: string;
482
604
  }) => Maybe<Readonly<Record<string, unknown>>>;
483
605
  /**
484
- * The identity link for an email address or chat user. Only links the
485
- * app created through a signed-in link flow or a verified address count.
486
- * Without it the source has no `principalByIdentity`.
606
+ * The identity link for an email address or chat user. Only links the app
607
+ * created through a signed-in link flow or a verified address count. Without
608
+ * it the source has no `principalByIdentity`.
487
609
  */
488
610
  readonly identities?: (identity: PrincipalIdentity) => Maybe<BetterSupabaseIdentityLink>;
489
- /** How the claims map to a principal; the defaults of `subjectFromBetterSupabase`. */
611
+ /**
612
+ * How the claims map to a principal; the defaults of
613
+ * `subjectFromBetterSupabase`.
614
+ */
490
615
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
491
616
  };
492
617
  /**
493
618
  * A `PrincipalSource` over better-supabase: `principal(id)` maps the claims
494
619
  * `claims` loads with `subjectFromBetterSupabase`, and `principalByIdentity`
495
- * follows `identities` to a user or a contact. Claims for another user, a
496
- * link to a non-contact principal and a missing link are `null`.
620
+ * follows `identities` to a user or a contact. Claims for another user, a link
621
+ * to a non-contact principal and a missing link are `null`.
497
622
  */
498
623
  export declare function principalSource(options: PrincipalSourceOptions): PrincipalSource;
499
624
  //#endregion
625
+ //#region src/better-supabase/role-order.d.ts
626
+ type RoleOrderOptions = {
627
+ /**
628
+ * Keep only roles declared `on` this scope, such as the scope SSO assigns
629
+ * memberships in.
630
+ */
631
+ readonly scope?: string;
632
+ /**
633
+ * The owner role, left out because better-supabase's `roleOrder` must not
634
+ * list it.
635
+ */
636
+ readonly owner?: string;
637
+ };
638
+ /**
639
+ * The catalog's role keys highest first, for better-supabase's
640
+ * `blocks.sso.options.roleOrder`: a role that `assigns` another comes before
641
+ * it, and roles the `assigns` lists do not order keep catalog order. Roles that
642
+ * assign each other stay together in catalog order, at the first one's place.
643
+ */
644
+ export declare function roleOrderFromCatalog(catalog: CatalogDocument, options?: RoleOrderOptions): readonly string[];
645
+ //#endregion
500
646
  //#region src/better-supabase/share-links.d.ts
501
- /** The fields of better-supabase's `ResolvedShareLink` a link subject is built from. */
502
- type ShareLinkRow = {
503
- readonly id: string;
504
- readonly organizationId: string;
647
+ /**
648
+ * The fields of better-supabase's `ResolvedShareLink` a link subject is built
649
+ * from: `subject` from better-supabase 0.14, `subjectType` and `subjectId`
650
+ * before it.
651
+ */
652
+ type ShareLinkRow = ShareLinkRowFields & ({
653
+ readonly subject: {
654
+ readonly type: string;
655
+ readonly id: string;
656
+ };
657
+ } | {
505
658
  readonly subjectType: string;
506
659
  readonly subjectId: string;
660
+ });
661
+ type ShareLinkRowFields = {
662
+ readonly id: string;
663
+ readonly organizationId: string;
507
664
  readonly role: string;
508
665
  /** Set on a link pinned to one version, which `subjectFromShareLink` refuses. */
509
666
  readonly versionId?: string;
@@ -511,7 +668,7 @@ type ShareLinkRow = {
511
668
  };
512
669
  /** better-supabase's `ShareLinks`, or anything with its `resolve`. */
513
670
  type ShareLinkResolver = {
514
- resolve(token: string): PromiseLike<{
671
+ resolve: (token: string) => PromiseLike<{
515
672
  readonly ok: true;
516
673
  readonly data: ShareLinkRow | null;
517
674
  } | {
@@ -520,21 +677,33 @@ type ShareLinkResolver = {
520
677
  };
521
678
  /** How links on one better-supabase subject type map to PermDock. */
522
679
  type ShareLinkTarget = {
523
- /** The resource the subject type's rows are; RLS matches it against `capability.on.resource`. */
680
+ /**
681
+ * The resource the subject type's rows are; RLS matches it against
682
+ * `capability.on.resource`.
683
+ */
524
684
  readonly resource: Permission | PermissionTree;
525
- /** PermDock roles for each share-link role (`{ view: ['guest'] }`). A role with no entry is refused. */
685
+ /**
686
+ * PermDock roles for each share-link role (`{ view: ['guest'] }`). A role
687
+ * with no entry is refused.
688
+ */
526
689
  readonly roles: Readonly<Record<string, readonly string[]>>;
527
690
  };
528
691
  type ShareLinkSubjectOptions = {
529
692
  readonly shareLinks: ShareLinkResolver;
530
- /** One entry per subject type a guest page serves, keyed by better-supabase's `subjectType`. */
693
+ /**
694
+ * One entry per subject type a guest page serves, keyed by better-supabase's
695
+ * `subjectType`.
696
+ */
531
697
  readonly links: Readonly<Record<string, ShareLinkTarget>>;
532
- /** Lifetime of the subject in seconds, capped by the link's own expiry. Default 300, at most 3600. */
698
+ /**
699
+ * Lifetime of the subject in seconds, capped by the link's own expiry.
700
+ * Default 300, at most 3600.
701
+ */
533
702
  readonly ttl?: number;
534
703
  /**
535
- * The link policies of the link's organization (`row.organizationId`);
536
- * every one must hold, and a throw denies. A row carries no creation
537
- * time, so a `maxLifetime` rule refuses every share link.
704
+ * The link policies of the link's organization (`row.organizationId`); every
705
+ * one must hold, and a throw denies. A row carries no creation time, so a
706
+ * `maxLifetime` rule refuses every share link.
538
707
  */
539
708
  readonly linkPolicy?: (capability: Capability, row: ShareLinkRow) => LinkPolicy | readonly LinkPolicy[] | undefined | Promise<LinkPolicy | readonly LinkPolicy[] | undefined>;
540
709
  readonly onAuth?: (event: AuthEvent) => void;
@@ -542,34 +711,37 @@ type ShareLinkSubjectOptions = {
542
711
  readonly now?: Instant;
543
712
  };
544
713
  /**
545
- * Resolves a better-supabase share-link token into the `link` subject it
546
- * acts as, for `exchangeCapability` and `--capabilities` RLS. The row is
547
- * read on every call, so a revoked or expired link stops resolving at
548
- * once. An unknown token, subject type or role, a malformed row, a broken
549
- * link policy, a `resolve` error and a throw are the anonymous subject. So
550
- * is a link pinned to a version: a capability grants the subject's current
551
- * rows, so a pinned link reads through `versions.getShared(token)` instead.
714
+ * Resolves a better-supabase share-link token into the `link` subject it acts
715
+ * as, for `exchangeCapability` and `--capabilities` RLS. The row is read on
716
+ * every call, so a revoked or expired link stops resolving at once. An unknown
717
+ * token, subject type or role, a malformed row, a broken link policy, a
718
+ * `resolve` error and a throw are the anonymous subject. So is a link pinned to
719
+ * a version: a capability grants the subject's current rows, so a pinned link
720
+ * reads through `versions.getShared(token)` instead.
552
721
  */
553
722
  export declare function subjectFromShareLink(token: string | undefined | null, options: ShareLinkSubjectOptions): Promise<Subject<CapabilityPrincipal>>;
554
723
  //#endregion
555
724
  //#region src/better-supabase/workflow.d.ts
556
- /** Where `handlerCan` gets the request's instance, such as `permdock/server`'s `createPermDock` result. */
725
+ /**
726
+ * Where `handlerCan` gets the request's instance, such as `permdock/server`'s
727
+ * `createPermDock` result.
728
+ */
557
729
  type HandlerPermDockSource = {
558
730
  readonly getPermDock: (request: Request) => PermDock | Promise<PermDock>;
559
731
  };
560
732
  /**
561
733
  * The `can` option of better-supabase's `authorizeHook`, for the caller's
562
- * `permdock`: `true` only when the caller is a member of the hook's tenant
563
- * and `decide` grants the permission its `hookMetadata` names there. An
564
- * unknown key, `approval-required` and a throw are `false`.
734
+ * `permdock`: `true` only when the caller is a member of the hook's tenant and
735
+ * `decide` grants the permission its `hookMetadata` names there. An unknown
736
+ * key, `approval-required` and a throw are `false`.
565
737
  */
566
738
  export declare function hookCan(permdock: PermDock): NonNullable<AuthorizeHookOptions["can"]>;
567
739
  /**
568
- * The `can` option of better-supabase's `protectWebHandler`: `undefined`
569
- * (401) when the request has no signed-in principal or `getPermDock`
570
- * throws, otherwise whether `decide` grants the permission in the request's
571
- * active tenant. An unknown key and `approval-required` are `false` (403).
740
+ * The `can` option of better-supabase's `protectWebHandler`: `undefined` (401)
741
+ * when the request has no signed-in principal or `getPermDock` throws,
742
+ * otherwise whether `decide` grants the permission in the request's active
743
+ * tenant. An unknown key and `approval-required` are `false` (403).
572
744
  */
573
745
  export declare function handlerCan(source: HandlerPermDockSource): ProtectWebHandlerOptions["can"];
574
746
  //#endregion
575
- export type { AccessPolicyOptions, AccessReviewApplierOptions, AccessReviewApplyFailure, AccessReviewApplyResult, ApiKeySession, ApiKeySessionOptions, ApiKeyVerifierOptions, AuthorizationHooksOptions, AuthorizationProviderOptions, AuthorizerOperation, AuthorizerOptions, BetterSupabaseIdentityLink, BetterSupabaseSubjectOptions, BucketAccess, CredentialGuardOptions, HandlerPermDockSource, McpToolDecision, McpToolRef, PendingSupportSession, PrincipalSourceOptions, ProviderApprovers, ServiceRoles, ShareLinkResolver, ShareLinkRow, ShareLinkSubjectOptions, ShareLinkTarget, SubscriberPolicyEvent, SubscriberPolicyOptions, SupabasePrincipal, SupportPolicyOptions, ToolPolicy, ToolPolicyOptions, TopicAccess };
747
+ export type { AccessPolicyOptions, AccessReviewApplierOptions, AccessReviewApplyFailure, AccessReviewApplyResult, ApiKeySession, ApiKeySessionOptions, ApiKeyVerifierOptions, AuthorizationHooksOptions, AuthorizationProviderOptions, AuthorizerOperation, AuthorizerOptions, BetterSupabaseIdentityLink, BetterSupabaseMembershipRow, BetterSupabaseSubjectOptions, BucketAccess, CredentialGuardOptions, HandlerPermDockSource, McpToolDecision, McpToolRef, PendingSupportSession, PrincipalFromMembershipsOptions, PrincipalSourceOptions, ProviderApprovers, RoleOrderOptions, ServiceRoles, ShareLinkResolver, ShareLinkRow, ShareLinkSubjectOptions, ShareLinkTarget, SubscriberPolicyEvent, SubscriberPolicyOptions, SupabasePrincipal, SupportPolicyOptions, ToolPolicy, ToolPolicyOptions, TopicAccess };