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,11 +1,11 @@
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-B-F-qAZk.js";
2
- import { f as PermissionTree, u as Permission } from "../permission-types-DhNEmoRG.js";
3
- import { a as PermDock, h as PrincipalSource, o as PermDockOptions, p as PrincipalIdentity } from "../permdock-Dco6dyCK.js";
4
- import { c as AccessReviewStore } from "../types-CfiKC5aN.js";
5
- import { i as SupabaseRpcCaller } from "../postgrest-CYacM_u7.js";
6
- import { a as CatalogDocument } from "../types-BXMYB7BY.js";
7
- import { _ as SupabaseSubjectOptions, d as SupabasePrincipal, h as SupabaseSessionLike } from "../types-BfVmNJO5.js";
8
- import { c as LinkPolicy, o as CapabilityPrincipal, t as Capability } from "../capability-D4UC9TTW.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";
9
9
  import { AuthorizationProvider } from "better-supabase/config";
10
10
  import { AuthSession, AuthorizationHooks, Authorizer, SupportAuthorize, SupportAuthorizeInput } from "better-supabase/server";
11
11
  import { EntitlementClaimOptions } from "better-supabase/blocks/entitlements";
@@ -18,32 +18,38 @@ import { AuthorizeHookOptions, ProtectWebHandlerOptions } from "better-supabase/
18
18
  //#region src/better-supabase/access-reviews.d.ts
19
19
  type AccessReviewApplierOptions = {
20
20
  /**
21
- * A supabase-js client that may call the organizations and invitations
22
- * block functions. Pass the reviewer's client so the block's own
23
- * 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.
24
24
  */
25
25
  readonly client: SupabaseRpcCaller;
26
26
  readonly reviews: AccessReviewStore;
27
- /** 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
+ */
28
31
  readonly policy: Policy;
29
32
  /**
30
- * The role a revoked member moves to with `update_member_role`: one role,
31
- * or a map from the roles in the item's `via` to their fallback. A
32
- * fallback that still grants the permission, or none, removes the member
33
- * 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.
34
37
  */
35
38
  readonly demoteTo?: string | Readonly<Record<string, string>>;
36
39
  /**
37
- * The member's email, for revoking the tenant's open invitations to it
38
- * 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.
39
42
  */
40
43
  readonly email?: (userId: string) => string | null | undefined | Promise<string | null | undefined>;
41
44
  /**
42
- * An instance for the member in the review's tenant, read after the
43
- * 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.
44
47
  */
45
48
  readonly permdockFor?: (principalId: string, tenant: string) => PermDock | Promise<PermDock>;
46
- /** 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
+ */
47
53
  readonly schema?: string;
48
54
  /** The scope review tenants are; defaults to the policy's first scope. */
49
55
  readonly scope?: string;
@@ -56,66 +62,32 @@ type AccessReviewApplyFailure = {
56
62
  type AccessReviewApplyResult = {
57
63
  /** Items marked applied, including those whose member was already gone. */
58
64
  readonly applied: readonly string[];
59
- /** 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
+ */
60
69
  readonly failed: readonly AccessReviewApplyFailure[];
61
70
  };
62
71
  /**
63
72
  * Applies the revoked items of an access review to better-supabase's
64
- * organizations and invitations blocks, then marks each one applied. A
65
- * revoked member moves to the `demoteTo` role when the policy says that
66
- * role lacks the permission, and is removed otherwise. With `email`, the
67
- * tenant's open invitations to the member whose role grants the permission
68
- * are revoked too. A member who is no longer in the organization counts as
69
- * applied. Any other error leaves the item unapplied in `failed`, and one
70
- * item's failure never stops the others. Throws `review-not-found` for an
71
- * 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.
72
80
  */
73
81
  export declare function accessReviewApplier(options: AccessReviewApplierOptions): (reviewId: string) => Promise<AccessReviewApplyResult>;
74
82
  //#endregion
75
83
  //#region src/better-supabase/approvers.d.ts
76
84
  /**
77
- * Who may approve each better-supabase request kind: `'ai-tool'` (a tool
78
- * call), `'support-session'`, or `'<subject type>.<action>'` from the
79
- * 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.
80
88
  */
81
89
  type ProviderApprovers = Readonly<Record<string, ApproverInput>>;
82
90
  //#endregion
83
- //#region src/better-supabase/subscribers.d.ts
84
- /** The fields of better-supabase's `OutboxEvent` the policy reads. */
85
- type SubscriberPolicyEvent = {
86
- readonly type: string;
87
- readonly tenant: string | null;
88
- readonly actorId: string | null;
89
- readonly payload: unknown;
90
- };
91
- type SubscriberPolicyOptions<E extends SubscriberPolicyEvent = SubscriberPolicyEvent> = {
92
- readonly policy: Policy;
93
- /** Loads the sender and every subscriber's principal. */
94
- readonly principals: PrincipalSource;
95
- /**
96
- * The permission a subscriber needs for each event type: an exact type,
97
- * `prefix.*` or `*`, with the exact type first and then the longest
98
- * pattern. A type with no entry reaches no one.
99
- */
100
- readonly events: Readonly<Record<string, Permission>>;
101
- /** The row the permission is decided on. Defaults to `event.payload`, validated against the resource schema. */
102
- readonly row?: (event: E) => unknown;
103
- /** The principal the fan-out runs as in the event's tenant. Defaults to `event.actorId`. */
104
- readonly sender?: (event: E) => string | null | undefined;
105
- /** Sources for the sender's and subscribers' instances. */
106
- readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt" | "principals">;
107
- };
108
- /**
109
- * The per-subscriber check for better-supabase's webhooks-out, outbox and
110
- * realtime fan-out: the subscribers whose `principal` `decideFor` grants
111
- * the event type's permission on its row, in the event's tenant, as the
112
- * sender. An unmapped type, an event without a tenant or sender, a sender
113
- * outside the tenant and a throw reach no one.
114
- */
115
- export declare function subscriberPolicy<E extends SubscriberPolicyEvent = SubscriberPolicyEvent>(options: SubscriberPolicyOptions<E>): <S extends {
116
- readonly principal: string;
117
- }>(event: E, subscribers: readonly S[]) => Promise<S[]>;
118
- //#endregion
119
91
  //#region src/better-supabase/api-keys.d.ts
120
92
  /** The roles a tenant key holds in its tenant: a list, or one per key. */
121
93
  type ServiceRoles<K> = readonly string[] | ((key: K) => readonly string[]);
@@ -123,8 +95,8 @@ type ApiKeyVerifierOptions = {
123
95
  /** `createApiKeys()` over a service transport. */
124
96
  readonly keys: Pick<ApiKeys, "verify">;
125
97
  /**
126
- * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the
127
- * default for `serviceRoles`.
98
+ * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the default
99
+ * for `serviceRoles`.
128
100
  */
129
101
  readonly manifest?: unknown;
130
102
  /**
@@ -133,95 +105,167 @@ type ApiKeyVerifierOptions = {
133
105
  * `null`.
134
106
  */
135
107
  readonly serviceRoles?: ServiceRoles<ApiKey>;
136
- /** 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
+ */
137
112
  readonly allPermissions?: readonly Permission[];
138
113
  };
139
114
  /**
140
- * better-supabase's API keys as a `CredentialVerifier`, for
141
- * `subjectFromApiKey` from `permdock/server`, which reads PermDock's
142
- * `pdk_<id>_<secret>` format: create the keys with `prefix: "pdk"`. The
143
- * credential id is the key's `publicId`, the id in the token. A personal key
144
- * is a `user` credential acting as its user (inside its tenant when the key
145
- * is limited to one), a tenant key a `service` credential holding
146
- * `serviceRoles` in its tenant, and the key's scopes are the credential's
147
- * permissions. better-supabase records the use when it verifies, so there is
148
- * no `touch`. A rotated key in its grace period verifies, and its credential
149
- * expires when the grace period ends. An invalid, revoked, expired or
150
- * rate-limited key, and a failed lookup, are `null`. `permdock/server` exports a different
151
- * `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.
152
127
  */
153
128
  export declare function apiKeyVerifier(options: ApiKeyVerifierOptions): CredentialVerifier;
154
129
  /**
155
- * The `claim` and `tenantClaim` options of better-supabase's
156
- * `apiKeyClaims()`, from the manifest's `rls.apiKeys`, so a key's token
157
- * carries the scopes ceiling, tenant and roles the `rls generate` helpers
158
- * 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`.
159
134
  */
160
135
  export declare function apiKeyClaimOptions(manifest: unknown): Pick<ApiKeyClaimsOptions, "claim" | "tenantClaim">;
161
136
  //#endregion
162
137
  //#region src/better-supabase/subject.d.ts
163
- /** 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
+ */
164
142
  type ApiKeySession = Extract<AuthSession, {
165
143
  readonly kind: "apiKey";
166
144
  }>;
167
145
  type ApiKeySessionOptions = {
168
- /** 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
+ */
169
150
  readonly permissions: PermissionTree;
170
- /** `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
+ */
171
155
  readonly manifest?: unknown;
172
- /** 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
+ */
173
160
  readonly serviceRoles?: ServiceRoles<ApiKeySession>;
174
161
  };
175
162
  /** The claim, and the short code better-supabase writes for each feature key. */
176
163
  type FeatureClaim = EntitlementClaimOptions;
177
164
  type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "claims"> & {
178
- /** 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
+ */
179
169
  readonly claims?: Omit<NonNullable<SupabaseSubjectOptions["claims"]>, "plans">;
180
170
  /** How `kind: 'apiKey'` sessions map. Without it they are anonymous. */
181
171
  readonly apiKeys?: ApiKeySessionOptions;
182
172
  /**
183
- * The claim `principal.plans` reads: its name (default `features`), or
184
- * `{ claim, keys }` with the same `entitlements.claim.keys` better-supabase
185
- * writes short codes with, so `plans` holds the feature keys. A code
186
- * 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.
187
177
  */
188
178
  readonly plans?: string | FeatureClaim;
189
179
  };
190
180
  /**
191
181
  * `subjectFromSupabaseSession` for better-supabase's `AuthSession`, reading
192
182
  * `memberships` for the memberships and the entitlements module's `features`
193
- * claim for `principal.plans` (`plans` names another claim). With `apiKeys`,
194
- * 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
195
185
  * acts as its user within the key's scopes, a tenant key as a `service`
196
186
  * principal holding `serviceRoles`. Without `apiKeys`, and for `anon`,
197
187
  * `service` and `invalid` sessions, the subject is anonymous.
198
188
  */
199
189
  export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<ApiKeyPrincipal> | Subject;
200
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
201
233
  //#region src/better-supabase/support.d.ts
202
- /** 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
+ */
203
238
  type PendingSupportSession = {
204
239
  readonly token: string;
205
240
  readonly session: SupportSession;
206
241
  };
207
242
  type SupportPolicyOptions = {
208
243
  readonly policy: Policy;
209
- /** 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
+ */
210
248
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
211
- /** 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
+ */
212
253
  readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
213
254
  /**
214
- * The session's permissions when a start asks for `readOnly: false`.
215
- * Without it such a start is refused; a read-only start gets every
216
- * `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.
217
258
  */
218
259
  readonly writable?: readonly Permission[];
219
- /** 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
+ */
220
264
  readonly approval?: boolean;
221
265
  /**
222
- * The approval the application recorded for `pending.token`, or
223
- * `undefined` while none exists. `approvedBy` is the approver's principal
224
- * 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.
225
269
  */
226
270
  readonly approved?: (input: SupportAuthorizeInput, pending: PendingSupportSession) => {
227
271
  readonly approvedBy: string;
@@ -234,8 +278,8 @@ type SupportPolicyOptions = {
234
278
  * verified claims become a PermDock subject, and the start is decided with
235
279
  * `permdock.decideSupportSession` in the requested tenant. `true` only for
236
280
  * `granted`: an `approval-required` start passes once `approved` returns a
237
- * distinct approver for its token. `readOnly: false` needs `writable`. A
238
- * throw is `false`.
281
+ * distinct approver for its token. `readOnly: false` needs `writable`. A throw
282
+ * is `false`.
239
283
  */
240
284
  export declare function supportPolicy(options: SupportPolicyOptions): SupportAuthorize;
241
285
  //#endregion
@@ -251,30 +295,42 @@ type AuthorizationHooksOptions = {
251
295
  readonly claims: (userId: string, options: {
252
296
  readonly tenant?: string;
253
297
  }) => Maybe$1<Claims>;
254
- /** 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
+ */
255
302
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
256
303
  /** Sources for every instance the hooks build. */
257
304
  readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
258
305
  /**
259
- * The claims an organization-owned automation runs as in `tenant`, such
260
- * as its default service principal's. Without it such an automation runs
261
- * 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.
262
309
  */
263
310
  readonly service?: (tenant: string | null) => Maybe$1<Claims>;
264
- /** 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
+ */
265
315
  readonly principals?: PrincipalSource;
266
- /** 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
+ */
267
320
  readonly events?: Readonly<Record<string, Permission>>;
268
321
  /** The row a delivery check decides on; defaults to `event.payload`. */
269
322
  readonly row?: (event: SubscriberPolicyEvent) => unknown;
270
- /** 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
+ */
271
327
  readonly approvers?: ProviderApprovers;
272
328
  /** `supportPolicy`'s options without `policy`; sets `support.authorize`. */
273
329
  readonly support?: Omit<SupportPolicyOptions, "policy">;
274
330
  /**
275
- * The user and tenant a run ticket stands for, looked up in the app's
276
- * store; `null` refuses the ticket. Sets `tickets.subject`, which loads
277
- * 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.
278
334
  */
279
335
  readonly tickets?: (ticket: string) => Maybe$1<{
280
336
  readonly userId: string;
@@ -282,91 +338,110 @@ type AuthorizationHooksOptions = {
282
338
  }>;
283
339
  };
284
340
  /**
285
- * better-supabase's `AuthorizationHooks` (`createServer(betterSupabase,
286
- * { authorization })`), decided by `policy`. Every hook builds the
287
- * principal's instance from the claims `claims` loads now, never from the
288
- * request, and fails closed: a throw, an unknown key and `approval-required`
289
- * refuse. `automation` and `delegation` are always set; `identities`,
290
- * `delivery`, `approverOf`, `support` and `tickets` only with the options
291
- * they read. `delegation.permissions` maps each scope to the keys whose
292
- * `.scope` it is, was renamed from, or that a policy `oauthScopes` entry
293
- * 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`.
294
350
  */
295
351
  export declare function authorizationHooks(options: AuthorizationHooksOptions): AuthorizationHooks;
296
352
  //#endregion
297
353
  //#region src/better-supabase/provider.d.ts
298
354
  type AuthorizationProviderOptions = {
299
- /** `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
+ */
300
359
  readonly manifest: unknown;
301
360
  /**
302
- * `permissions.catalog.json` from `permdock catalog`. Without it the
303
- * provider lists no permissions, so better-supabase refuses every key in
304
- * 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.
305
364
  */
306
365
  readonly catalog?: unknown;
307
366
  /** The scope tenants are; defaults to the manifest's one root scope. */
308
367
  readonly scope?: string;
309
368
  /**
310
- * The permission that lets a user decide a tool call waiting for
311
- * approval: the `'ai-tool'` entry of `approvers` (`holder(approver)`)
312
- * 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.
313
372
  */
314
373
  readonly approver?: Permission;
315
374
  /**
316
375
  * Who may approve each request kind, for better-supabase's `isApprover`:
317
- * `'ai-tool'`, `'support-session'` or the approvals block's
318
- * `'<subject type>.<action>'`, each mapped to `user()`, `holder()` or
319
- * `anyOf()` approvers. A kind it does not name has no provider approver,
320
- * which for tool calls and support sessions means nobody but the service
321
- * 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`.
322
381
  */
323
382
  readonly approvers?: ProviderApprovers;
324
383
  };
325
384
  /**
326
385
  * better-supabase's `authorization` config value, built from PermDock's
327
386
  * manifest and catalog: the scopes, the `rls generate` helpers as SQL
328
- * templates, the membership tables, suspension rows, the token hook and
329
- * every catalog key with `sqlComplete` set from its `rowConditions`. A
330
- * `_for` template and `permissionsFor` are set only when the manifest lists
331
- * their helper, which `rls.mode: 'database'` writes; `isApprover` only with
332
- * `approvers` and `permdock_is_approver`, and otherwise `canApprove` only
333
- * 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
334
393
  * `actorMayWrite` (`permdock_actor_may_write()`) are set when the manifest
335
- * lists their helper. Throws when the manifest or catalog is invalid, or when the
336
- * 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.
337
397
  */
338
398
  export declare function authorizationProvider(options: AuthorizationProviderOptions): AuthorizationProvider;
339
399
  //#endregion
340
400
  //#region src/better-supabase/authorizer.d.ts
341
- /** 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
+ */
342
405
  type AuthorizerOperation = "list" | "get" | "create" | "update" | "delete";
343
406
  type AuthorizerOptions = {
344
407
  readonly policy: Policy;
345
- /** 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
+ */
346
412
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
347
413
  /**
348
- * The permission of each table operation, so a resource with
349
- * `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.
350
416
  */
351
417
  readonly operations?: Readonly<Record<string, Partial<Record<AuthorizerOperation, Permission>>>>;
352
- /** 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
+ */
353
422
  readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
354
423
  };
355
424
  /**
356
425
  * better-supabase's `authorizer` for PermDock: every resource, action, route
357
- * guard and MCP tool that declares a `permission` is decided with `decide`.
358
- * The subject is mapped from the verified claims with
359
- * `subjectFromBetterSupabase`; the request's `context.tenant` selects the
360
- * active tenant only among the memberships the claims hold. A caller without
361
- * 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.
362
431
  */
363
432
  export declare function authorizer(options: AuthorizerOptions): Authorizer<Permission>;
364
433
  //#endregion
365
434
  //#region src/better-supabase/policies.d.ts
366
435
  type AccessScope = {
367
- /** 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
+ */
368
440
  readonly scope: string;
369
- /** 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
+ */
370
445
  readonly segment?: number;
371
446
  };
372
447
  /**
@@ -375,16 +450,28 @@ type AccessScope = {
375
450
  * the scopes a permission is granted at come from the definitions.
376
451
  */
377
452
  type AccessPolicyOptions = AccessScope & ({
378
- /** `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
+ */
379
457
  readonly manifest: unknown;
380
- /** `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
+ */
381
462
  readonly catalog: unknown;
382
463
  readonly policy?: undefined;
383
464
  readonly schema?: undefined;
384
465
  } | {
385
- /** 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
+ */
386
470
  readonly policy: Policy;
387
- /** 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
+ */
388
475
  readonly schema?: string;
389
476
  readonly manifest?: undefined;
390
477
  readonly catalog?: undefined;
@@ -404,11 +491,10 @@ type TopicAccess = {
404
491
  readonly send?: Permission;
405
492
  };
406
493
  /**
407
- * A better-supabase bucket `policy` that checks PermDock permissions with
408
- * the `rls generate` helpers at `scope`. The helpers check role and scope
409
- * only, so a permission with row conditions (`rowConditions: true` in the
410
- * catalog, or a conditioned grant in `policy`), or one not granted at
411
- * `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.
412
498
  */
413
499
  export declare function bucketPolicy(access: BucketAccess, options: AccessPolicyOptions): AccessBucketPolicy;
414
500
  /** As {@link bucketPolicy}, for a better-supabase Realtime topic. */
@@ -418,7 +504,10 @@ export declare function topicPolicy(access: TopicAccess, options: AccessPolicyOp
418
504
  type CredentialGuardOptions = {
419
505
  /** The request's PermDock instance. */
420
506
  readonly permdock: () => PermDock | Promise<PermDock>;
421
- /** 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
+ */
422
511
  readonly use: Permission;
423
512
  /** The permission that revokes a stored credential; defaults to `use`. */
424
513
  readonly revoke?: Permission;
@@ -426,10 +515,10 @@ type CredentialGuardOptions = {
426
515
  /**
427
516
  * `provider` with every `getToken`, `startAuthorization`,
428
517
  * `completeAuthorization` and `revoke` decided by PermDock first, on the
429
- * `CredentialRef` as the row. Anything but `granted` is a `forbidden`
430
- * error with hint `PERMDOCK_DENIED`, and a failed check is one too.
431
- * `capabilities` and `verifyInbound` (a third party's request, with no
432
- * 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.
433
522
  */
434
523
  export declare function credentialGuard(provider: CredentialProvider, options: CredentialGuardOptions): CredentialProvider;
435
524
  //#endregion
@@ -442,9 +531,9 @@ type ToolPolicyOptions<C> = {
442
531
  /** The request's PermDock instance, from the hook's context. */
443
532
  readonly permdock: (ctx: C) => PermDock | Promise<PermDock>;
444
533
  /**
445
- * The row an instance permission is decided on, from the validated
446
- * arguments. Without it the call is decided without a row, which an
447
- * 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.
448
537
  */
449
538
  readonly data?: (ctx: C, tool: McpToolRef, args: unknown) => unknown;
450
539
  };
@@ -454,15 +543,18 @@ type ToolPolicy<C> = {
454
543
  };
455
544
  /**
456
545
  * The `authorize` and `visible` hooks of better-supabase's `createMcp`, for
457
- * tools whose `meta` is a PermDock permission. A tool without a permission
458
- * is hidden and refused. `authorize` grants only a `granted` decision: an
459
- * approval-required call is refused, because `createMcp`
460
- * 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.
461
550
  */
462
551
  export declare function toolPolicy<C>(options: ToolPolicyOptions<C>): ToolPolicy<C>;
463
552
  //#endregion
464
553
  //#region src/better-supabase/memberships.d.ts
465
- /** A row of the better-supabase `memberships` table (organizations block), as `select user_id, organization_id, role, disabled_at` returns it. */
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
+ */
466
558
  type BetterSupabaseMembershipRow = {
467
559
  readonly user_id: string;
468
560
  readonly organization_id: string;
@@ -470,7 +562,10 @@ type BetterSupabaseMembershipRow = {
470
562
  readonly disabled_at?: string | null;
471
563
  };
472
564
  type PrincipalFromMembershipsOptions = {
473
- /** The policy scope an `organization_id` is an instance of; defaults to `tenant`, the first declared scope. */
565
+ /**
566
+ * The policy scope an `organization_id` is an instance of; defaults to
567
+ * `tenant`, the first declared scope.
568
+ */
474
569
  readonly scope?: string;
475
570
  /**
476
571
  * The organization the request acts in, the principal's active tenant. A
@@ -481,16 +576,16 @@ type PrincipalFromMembershipsOptions = {
481
576
  };
482
577
  /**
483
578
  * The principal `userId` is in the better-supabase organizations block: one
484
- * membership per organization, keyed on `organization_id`, holding the role
485
- * of each of the user's rows. Rows of another user, disabled rows and
486
- * malformed rows are dropped, so a user with none holds no membership.
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.
487
582
  */
488
583
  export declare function principalFromMemberships(userId: string, rows: readonly BetterSupabaseMembershipRow[], options?: PrincipalFromMembershipsOptions): Principal;
489
584
  //#endregion
490
585
  //#region src/better-supabase/principals.d.ts
491
586
  /**
492
- * Where an identity link points: an app user, whose claims `principal`
493
- * 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'`.
494
589
  */
495
590
  type BetterSupabaseIdentityLink = {
496
591
  readonly user: string;
@@ -501,34 +596,43 @@ type Maybe<T> = T | null | undefined | Promise<T | null | undefined>;
501
596
  type PrincipalSourceOptions = {
502
597
  /**
503
598
  * The claims better-supabase mints for `userId` now, or `null` for a user
504
- * deleted, suspended or unknown. `sqlSupportStore(…).claims`, which runs
505
- * the custom access token hook, fills it.
599
+ * deleted, suspended or unknown. `sqlSupportStore(…).claims`, which runs the
600
+ * custom access token hook, fills it.
506
601
  */
507
602
  readonly claims: (userId: string, options: {
508
603
  readonly tenant?: string;
509
604
  }) => Maybe<Readonly<Record<string, unknown>>>;
510
605
  /**
511
- * The identity link for an email address or chat user. Only links the
512
- * app created through a signed-in link flow or a verified address count.
513
- * 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`.
514
609
  */
515
610
  readonly identities?: (identity: PrincipalIdentity) => Maybe<BetterSupabaseIdentityLink>;
516
- /** 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
+ */
517
615
  readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
518
616
  };
519
617
  /**
520
618
  * A `PrincipalSource` over better-supabase: `principal(id)` maps the claims
521
619
  * `claims` loads with `subjectFromBetterSupabase`, and `principalByIdentity`
522
- * follows `identities` to a user or a contact. Claims for another user, a
523
- * 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`.
524
622
  */
525
623
  export declare function principalSource(options: PrincipalSourceOptions): PrincipalSource;
526
624
  //#endregion
527
625
  //#region src/better-supabase/role-order.d.ts
528
626
  type RoleOrderOptions = {
529
- /** Keep only roles declared `on` this scope, such as the scope SSO assigns memberships in. */
627
+ /**
628
+ * Keep only roles declared `on` this scope, such as the scope SSO assigns
629
+ * memberships in.
630
+ */
530
631
  readonly scope?: string;
531
- /** The owner role, left out because better-supabase's `roleOrder` must not list it. */
632
+ /**
633
+ * The owner role, left out because better-supabase's `roleOrder` must not
634
+ * list it.
635
+ */
532
636
  readonly owner?: string;
533
637
  };
534
638
  /**
@@ -540,12 +644,23 @@ type RoleOrderOptions = {
540
644
  export declare function roleOrderFromCatalog(catalog: CatalogDocument, options?: RoleOrderOptions): readonly string[];
541
645
  //#endregion
542
646
  //#region src/better-supabase/share-links.d.ts
543
- /** The fields of better-supabase's `ResolvedShareLink` a link subject is built from. */
544
- type ShareLinkRow = {
545
- readonly id: string;
546
- 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
+ } | {
547
658
  readonly subjectType: string;
548
659
  readonly subjectId: string;
660
+ });
661
+ type ShareLinkRowFields = {
662
+ readonly id: string;
663
+ readonly organizationId: string;
549
664
  readonly role: string;
550
665
  /** Set on a link pinned to one version, which `subjectFromShareLink` refuses. */
551
666
  readonly versionId?: string;
@@ -553,7 +668,7 @@ type ShareLinkRow = {
553
668
  };
554
669
  /** better-supabase's `ShareLinks`, or anything with its `resolve`. */
555
670
  type ShareLinkResolver = {
556
- resolve(token: string): PromiseLike<{
671
+ resolve: (token: string) => PromiseLike<{
557
672
  readonly ok: true;
558
673
  readonly data: ShareLinkRow | null;
559
674
  } | {
@@ -562,21 +677,33 @@ type ShareLinkResolver = {
562
677
  };
563
678
  /** How links on one better-supabase subject type map to PermDock. */
564
679
  type ShareLinkTarget = {
565
- /** 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
+ */
566
684
  readonly resource: Permission | PermissionTree;
567
- /** 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
+ */
568
689
  readonly roles: Readonly<Record<string, readonly string[]>>;
569
690
  };
570
691
  type ShareLinkSubjectOptions = {
571
692
  readonly shareLinks: ShareLinkResolver;
572
- /** 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
+ */
573
697
  readonly links: Readonly<Record<string, ShareLinkTarget>>;
574
- /** 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
+ */
575
702
  readonly ttl?: number;
576
703
  /**
577
- * The link policies of the link's organization (`row.organizationId`);
578
- * every one must hold, and a throw denies. A row carries no creation
579
- * 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.
580
707
  */
581
708
  readonly linkPolicy?: (capability: Capability, row: ShareLinkRow) => LinkPolicy | readonly LinkPolicy[] | undefined | Promise<LinkPolicy | readonly LinkPolicy[] | undefined>;
582
709
  readonly onAuth?: (event: AuthEvent) => void;
@@ -584,33 +711,36 @@ type ShareLinkSubjectOptions = {
584
711
  readonly now?: Instant;
585
712
  };
586
713
  /**
587
- * Resolves a better-supabase share-link token into the `link` subject it
588
- * acts as, for `exchangeCapability` and `--capabilities` RLS. The row is
589
- * read on every call, so a revoked or expired link stops resolving at
590
- * once. An unknown token, subject type or role, a malformed row, a broken
591
- * link policy, a `resolve` error and a throw are the anonymous subject. So
592
- * is a link pinned to a version: a capability grants the subject's current
593
- * 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.
594
721
  */
595
722
  export declare function subjectFromShareLink(token: string | undefined | null, options: ShareLinkSubjectOptions): Promise<Subject<CapabilityPrincipal>>;
596
723
  //#endregion
597
724
  //#region src/better-supabase/workflow.d.ts
598
- /** 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
+ */
599
729
  type HandlerPermDockSource = {
600
730
  readonly getPermDock: (request: Request) => PermDock | Promise<PermDock>;
601
731
  };
602
732
  /**
603
733
  * The `can` option of better-supabase's `authorizeHook`, for the caller's
604
- * `permdock`: `true` only when the caller is a member of the hook's tenant
605
- * and `decide` grants the permission its `hookMetadata` names there. An
606
- * 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`.
607
737
  */
608
738
  export declare function hookCan(permdock: PermDock): NonNullable<AuthorizeHookOptions["can"]>;
609
739
  /**
610
- * The `can` option of better-supabase's `protectWebHandler`: `undefined`
611
- * (401) when the request has no signed-in principal or `getPermDock`
612
- * throws, otherwise whether `decide` grants the permission in the request's
613
- * 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).
614
744
  */
615
745
  export declare function handlerCan(source: HandlerPermDockSource): ProtectWebHandlerOptions["can"];
616
746
  //#endregion