permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -1,14 +1,298 @@
1
- import { $t as CredentialPrincipal, C as Policy, Pr as Subject, ln as PermDock, nt as CredentialVerifier } from "../policy-IB6yxpC3.js";
2
- import { f as Permission, m as PermissionTree } from "../permissions-DttnqqxC.js";
3
- import { g as SupabaseSubjectOptions, m as SupabaseSessionLike, u as SupabasePrincipal } from "../types-C97IskBw.js";
1
+ import { Rt as Instant, St as ApiKeyPrincipal, T as Policy, U as CredentialVerifier, gt as SupportSession, ir as Subject, pn as ApproverInput, qt as AuthEvent, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { E as PermissionTree, w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { d as PrincipalIdentity, i as PermDockOptions, p as PrincipalSource, r as PermDock } from "../permdock-D7eeLJER.js";
4
+ import { c as AccessReviewStore } from "../types-_sHy8BQf.js";
5
+ import { i as SupabaseRpcCaller } from "../postgrest-NUqZT-RB.js";
6
+ import { g as SupabaseSubjectOptions, m as SupabaseSessionLike, u as SupabasePrincipal } from "../types-CdlxsYQh.js";
7
+ import { c as LinkPolicy, o as CapabilityPrincipal, t as Capability } from "../capability-BSslw1QV.js";
4
8
  import { AuthorizationProvider } from "better-supabase/config";
9
+ import { AuthSession, AuthorizationHooks, Authorizer, SupportAuthorize, SupportAuthorizeInput } from "better-supabase/server";
10
+ import { EntitlementClaimOptions } from "better-supabase/blocks/entitlements";
11
+ import { ApiKey, ApiKeyClaimsOptions, ApiKeys } from "better-supabase/blocks/api-keys";
5
12
  import { AccessTopicPolicy } from "better-supabase/realtime";
6
13
  import { AccessBucketPolicy } from "better-supabase/storage";
7
- import { ApiKey, ApiKeyClaimsOptions, ApiKeys } from "better-supabase/blocks/api-keys";
8
14
  import { CredentialProvider } from "better-supabase/credentials";
9
15
  import { ToolDecision, ToolRef } from "better-supabase/mcp";
10
- import { EntitlementClaimOptions } from "better-supabase/blocks/entitlements";
11
- import { AuthSession } from "better-supabase/server";
16
+ import { AuthorizeHookOptions, ProtectWebHandlerOptions } from "better-supabase/workflow-sdk";
17
+ //#region src/better-supabase/access-reviews.d.ts
18
+ type AccessReviewApplierOptions = {
19
+ /**
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.
23
+ */
24
+ readonly client: SupabaseRpcCaller;
25
+ readonly reviews: AccessReviewStore;
26
+ /** Decides whether a fallback role or an invitation's role grants the reviewed permission. */
27
+ readonly policy: Policy;
28
+ /**
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
+ */
34
+ readonly demoteTo?: string | Readonly<Record<string, string>>;
35
+ /**
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.
38
+ */
39
+ readonly email?: (userId: string) => string | null | undefined | Promise<string | null | undefined>;
40
+ /**
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.
43
+ */
44
+ readonly permdockFor?: (principalId: string, tenant: string) => PermDock | Promise<PermDock>;
45
+ /** The schema of the block functions; better-supabase's default is `better_supabase`. */
46
+ readonly schema?: string;
47
+ /** The scope review tenants are; defaults to the policy's first scope. */
48
+ readonly scope?: string;
49
+ readonly now?: Instant;
50
+ };
51
+ type AccessReviewApplyFailure = {
52
+ readonly item: string;
53
+ readonly cause: string;
54
+ };
55
+ type AccessReviewApplyResult = {
56
+ /** Items marked applied, including those whose member was already gone. */
57
+ readonly applied: readonly string[];
58
+ /** Items left unapplied, with the error the block function or the re-check gave. */
59
+ readonly failed: readonly AccessReviewApplyFailure[];
60
+ };
61
+ /**
62
+ * 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.
71
+ */
72
+ export declare function accessReviewApplier(options: AccessReviewApplierOptions): (reviewId: string) => Promise<AccessReviewApplyResult>;
73
+ //#endregion
74
+ //#region src/better-supabase/approvers.d.ts
75
+ /**
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.
79
+ */
80
+ type ProviderApprovers = Readonly<Record<string, ApproverInput>>;
81
+ //#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
+ //#region src/better-supabase/api-keys.d.ts
119
+ /** The roles a tenant key holds in its tenant: a list, or one per key. */
120
+ type ServiceRoles<K> = readonly string[] | ((key: K) => readonly string[]);
121
+ type ApiKeyVerifierOptions = {
122
+ /** `createApiKeys()` over a service transport. */
123
+ readonly keys: Pick<ApiKeys, "verify">;
124
+ /**
125
+ * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the
126
+ * default for `serviceRoles`.
127
+ */
128
+ readonly manifest?: unknown;
129
+ /**
130
+ * The roles a tenant key holds in its tenant, as a `service` principal.
131
+ * Without it or a manifest with `rls.apiKeys`, a tenant key verifies to
132
+ * `null`.
133
+ */
134
+ readonly serviceRoles?: ServiceRoles<ApiKey>;
135
+ /** The permissions `*` stands for. Without it, a key with `*` verifies to `null`. */
136
+ readonly allPermissions?: readonly Permission[];
137
+ };
138
+ /**
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.
151
+ */
152
+ export declare function apiKeyVerifier(options: ApiKeyVerifierOptions): CredentialVerifier;
153
+ /**
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`.
158
+ */
159
+ export declare function apiKeyClaimOptions(manifest: unknown): Pick<ApiKeyClaimsOptions, "claim" | "tenantClaim">;
160
+ //#endregion
161
+ //#region src/better-supabase/subject.d.ts
162
+ /** An `AuthSession` of kind `apiKey`, from better-supabase's api-keys middleware. */
163
+ type ApiKeySession = Extract<AuthSession, {
164
+ readonly kind: "apiKey";
165
+ }>;
166
+ type ApiKeySessionOptions = {
167
+ /** The definitions: the key's scopes become the subject's delegation, and `*` stands for all of them. */
168
+ readonly permissions: PermissionTree;
169
+ /** `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the default for `serviceRoles`. */
170
+ 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. */
172
+ readonly serviceRoles?: ServiceRoles<ApiKeySession>;
173
+ };
174
+ /** The claim, and the short code better-supabase writes for each feature key. */
175
+ type FeatureClaim = EntitlementClaimOptions;
176
+ type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "claims"> & {
177
+ /** Where the token carries roles, the active tenant and memberships; plans come from `plans`. */
178
+ readonly claims?: Omit<NonNullable<SupabaseSubjectOptions["claims"]>, "plans">;
179
+ /** How `kind: 'apiKey'` sessions map. Without it they are anonymous. */
180
+ readonly apiKeys?: ApiKeySessionOptions;
181
+ /**
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.
186
+ */
187
+ readonly plans?: string | FeatureClaim;
188
+ };
189
+ /**
190
+ * `subjectFromSupabaseSession` for better-supabase's `AuthSession`, reading
191
+ * `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
194
+ * acts as its user within the key's scopes, a tenant key as a `service`
195
+ * principal holding `serviceRoles`. Without `apiKeys`, and for `anon`,
196
+ * `service` and `invalid` sessions, the subject is anonymous.
197
+ */
198
+ export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<ApiKeyPrincipal> | Subject;
199
+ //#endregion
200
+ //#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. */
202
+ type PendingSupportSession = {
203
+ readonly token: string;
204
+ readonly session: SupportSession;
205
+ };
206
+ type SupportPolicyOptions = {
207
+ readonly policy: Policy;
208
+ /** How the admin's verified claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
209
+ readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
210
+ /** Sources and sinks for the admin's instance; `settings` also supplies the tenant's `supportSessions` rules. */
211
+ readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
212
+ /**
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.
216
+ */
217
+ readonly writable?: readonly Permission[];
218
+ /** Approval by someone other than the admin is required unless this is `false`. */
219
+ readonly approval?: boolean;
220
+ /**
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.
224
+ */
225
+ readonly approved?: (input: SupportAuthorizeInput, pending: PendingSupportSession) => {
226
+ readonly approvedBy: string;
227
+ } | undefined | Promise<{
228
+ readonly approvedBy: string;
229
+ } | undefined>;
230
+ };
231
+ /**
232
+ * The `authorize` option of better-supabase's `supportSessions`: the admin's
233
+ * verified claims become a PermDock subject, and the start is decided with
234
+ * `permdock.decideSupportSession` in the requested tenant. `true` only for
235
+ * `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`.
238
+ */
239
+ export declare function supportPolicy(options: SupportPolicyOptions): SupportAuthorize;
240
+ //#endregion
241
+ //#region src/better-supabase/hooks.d.ts
242
+ type Maybe$1<T> = T | null | undefined | Promise<T | null | undefined>;
243
+ type Claims = Readonly<Record<string, unknown>>;
244
+ type AuthorizationHooksOptions = {
245
+ readonly policy: Policy;
246
+ /**
247
+ * The claims better-supabase mints for `userId` now, or `null` for a user
248
+ * deleted, suspended or unknown: the same loader `principalSource` takes.
249
+ */
250
+ readonly claims: (userId: string, options: {
251
+ readonly tenant?: string;
252
+ }) => Maybe$1<Claims>;
253
+ /** How the claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
254
+ readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
255
+ /** Sources for every instance the hooks build. */
256
+ readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
257
+ /**
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.
261
+ */
262
+ readonly service?: (tenant: string | null) => Maybe$1<Claims>;
263
+ /** The `principalSource` for `identities` and `delivery`; without it neither hook is set. */
264
+ readonly principals?: PrincipalSource;
265
+ /** The permission each event type needs, for `delivery` (`subscriberPolicy`'s `events`). */
266
+ readonly events?: Readonly<Record<string, Permission>>;
267
+ /** The row a delivery check decides on; defaults to `event.payload`. */
268
+ readonly row?: (event: SubscriberPolicyEvent) => unknown;
269
+ /** Who may approve each request kind, as for `authorizationProvider`; sets `approverOf`. */
270
+ readonly approvers?: ProviderApprovers;
271
+ /** `supportPolicy`'s options without `policy`; sets `support.authorize`. */
272
+ readonly support?: Omit<SupportPolicyOptions, "policy">;
273
+ /**
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.
277
+ */
278
+ readonly tickets?: (ticket: string) => Maybe$1<{
279
+ readonly userId: string;
280
+ readonly tenant?: string;
281
+ }>;
282
+ };
283
+ /**
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`.
293
+ */
294
+ export declare function authorizationHooks(options: AuthorizationHooksOptions): AuthorizationHooks;
295
+ //#endregion
12
296
  //#region src/better-supabase/provider.d.ts
13
297
  type AuthorizationProviderOptions = {
14
298
  /** `permdock.manifest.json`, parsed or as JSON text, from `permdock supabase inspect --out`. */
@@ -22,12 +306,20 @@ type AuthorizationProviderOptions = {
22
306
  /** The scope tenants are; defaults to the manifest's one root scope. */
23
307
  readonly scope?: string;
24
308
  /**
25
- * The permission that lets a user decide a tool call waiting for approval
26
- * in a tenant, for better-supabase's `canApprove`. The approver is never
27
- * the user who asked (`approvals.distinctApprover`). Without it the chat's
28
- * owner decides.
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.
29
312
  */
30
313
  readonly approver?: Permission;
314
+ /**
315
+ * 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`.
321
+ */
322
+ readonly approvers?: ProviderApprovers;
31
323
  };
32
324
  /**
33
325
  * better-supabase's `authorization` config value, built from PermDock's
@@ -35,12 +327,40 @@ type AuthorizationProviderOptions = {
35
327
  * templates, the membership tables, suspension rows, the token hook and
36
328
  * every catalog key with `sqlComplete` set from its `rowConditions`. A
37
329
  * `_for` template and `permissionsFor` are set only when the manifest lists
38
- * their helper, which `rls.mode: 'database'` writes; `canApprove` only with
39
- * `approver`. Throws when the manifest or catalog is invalid, or when the
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
333
+ * `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
40
335
  * tenant scope is ambiguous.
41
336
  */
42
337
  export declare function authorizationProvider(options: AuthorizationProviderOptions): AuthorizationProvider;
43
338
  //#endregion
339
+ //#region src/better-supabase/authorizer.d.ts
340
+ /** The table operations better-supabase's `permissions: true` resolves through `forOperation`. */
341
+ type AuthorizerOperation = "list" | "get" | "create" | "update" | "delete";
342
+ type AuthorizerOptions = {
343
+ readonly policy: Policy;
344
+ /** How the verified claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
345
+ readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
346
+ /**
347
+ * The permission of each table operation, so a resource with
348
+ * `permissions: true` is checked. Without it such a resource is refused.
349
+ */
350
+ 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. */
352
+ readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
353
+ };
354
+ /**
355
+ * 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.
361
+ */
362
+ export declare function authorizer(options: AuthorizerOptions): Authorizer<Permission>;
363
+ //#endregion
44
364
  //#region src/better-supabase/policies.d.ts
45
365
  type AccessScope = {
46
366
  /** A scope in the policy's scopes (or the manifest's `rls.scopes`), or `platform` for permissions granted globally. */
@@ -93,49 +413,6 @@ export declare function bucketPolicy(access: BucketAccess, options: AccessPolicy
93
413
  /** As {@link bucketPolicy}, for a better-supabase Realtime topic. */
94
414
  export declare function topicPolicy(access: TopicAccess, options: AccessPolicyOptions): AccessTopicPolicy;
95
415
  //#endregion
96
- //#region src/better-supabase/api-keys.d.ts
97
- /** The roles a tenant key holds in its tenant: a list, or one per key. */
98
- type ServiceRoles<K> = readonly string[] | ((key: K) => readonly string[]);
99
- type ApiKeyVerifierOptions = {
100
- /** `createApiKeys()` over a service transport. */
101
- readonly keys: Pick<ApiKeys, "verify">;
102
- /**
103
- * `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the
104
- * default for `serviceRoles`.
105
- */
106
- readonly manifest?: unknown;
107
- /**
108
- * The roles a tenant key holds in its tenant, as a `service` principal.
109
- * Without it or a manifest with `rls.apiKeys`, a tenant key verifies to
110
- * `null`.
111
- */
112
- readonly serviceRoles?: ServiceRoles<ApiKey>;
113
- /** The permissions `*` stands for. Without it, a key with `*` verifies to `null`. */
114
- readonly allPermissions?: readonly Permission[];
115
- };
116
- /**
117
- * better-supabase's API keys as a `CredentialVerifier`, for
118
- * `subjectFromApiKey` from `permdock/server`, which reads PermDock's
119
- * `pdk_<id>_<secret>` format: create the keys with `prefix: "pdk"`. The
120
- * credential id is the key's `publicId`, the id in the token. A personal key
121
- * is a `user` credential acting as its user (inside its tenant when the key
122
- * is limited to one), a tenant key a `service` credential holding
123
- * `serviceRoles` in its tenant, and the key's scopes are the credential's
124
- * permissions. better-supabase records the use when it verifies, so there is
125
- * no `touch`. A rotated key in its grace period verifies, and its credential
126
- * expires when the grace period ends. An invalid, revoked, expired or
127
- * rate-limited key, and a failed lookup, are `null`. `permdock/server` exports a different
128
- * `apiKeyVerifier`, over the application's own key records.
129
- */
130
- export declare function apiKeyVerifier(options: ApiKeyVerifierOptions): CredentialVerifier;
131
- /**
132
- * The `claim` and `tenantClaim` options of better-supabase's
133
- * `apiKeyClaims()`, from the manifest's `rls.apiKeys`, so a key's token
134
- * carries the scopes ceiling, tenant and roles the `rls generate` helpers
135
- * read. Throws when the manifest has no `rls.apiKeys`.
136
- */
137
- export declare function apiKeyClaimOptions(manifest: unknown): Pick<ApiKeyClaimsOptions, "claim" | "tenantClaim">;
138
- //#endregion
139
416
  //#region src/better-supabase/credentials.d.ts
140
417
  type CredentialGuardOptions = {
141
418
  /** The request's PermDock instance. */
@@ -183,41 +460,116 @@ type ToolPolicy<C> = {
183
460
  */
184
461
  export declare function toolPolicy<C>(options: ToolPolicyOptions<C>): ToolPolicy<C>;
185
462
  //#endregion
186
- //#region src/better-supabase/subject.d.ts
187
- /** An `AuthSession` of kind `apiKey`, from better-supabase's api-keys middleware. */
188
- type ApiKeySession = Extract<AuthSession, {
189
- readonly kind: "apiKey";
190
- }>;
191
- type ApiKeySessionOptions = {
192
- /** The definitions: the key's scopes become the subject's delegation, and `*` stands for all of them. */
193
- readonly permissions: PermissionTree;
194
- /** `permdock.manifest.json`, whose `rls.apiKeys.serviceRoles` is the default for `serviceRoles`. */
195
- readonly manifest?: unknown;
196
- /** The roles a tenant key holds in its tenant. Without it or a manifest with `rls.apiKeys`, a tenant key is anonymous. */
197
- readonly serviceRoles?: ServiceRoles<ApiKeySession>;
463
+ //#region src/better-supabase/principals.d.ts
464
+ /**
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'`.
467
+ */
468
+ type BetterSupabaseIdentityLink = {
469
+ readonly user: string;
470
+ } | {
471
+ readonly contact: Principal;
198
472
  };
199
- /** The claim, and the short code better-supabase writes for each feature key. */
200
- type FeatureClaim = EntitlementClaimOptions;
201
- type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "plans"> & {
202
- /** How `kind: 'apiKey'` sessions map. Without it they are anonymous. */
203
- readonly apiKeys?: ApiKeySessionOptions;
473
+ type Maybe<T> = T | null | undefined | Promise<T | null | undefined>;
474
+ type PrincipalSourceOptions = {
204
475
  /**
205
- * The claim `principal.plans` reads: its name (default `features`), or
206
- * `{ claim, keys }` with the same `entitlements.claim.keys` better-supabase
207
- * writes short codes with, so `plans` holds the feature keys. A code
208
- * without a key is dropped.
476
+ * 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.
209
479
  */
210
- readonly plans?: string | FeatureClaim;
480
+ readonly claims: (userId: string, options: {
481
+ readonly tenant?: string;
482
+ }) => Maybe<Readonly<Record<string, unknown>>>;
483
+ /**
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`.
487
+ */
488
+ readonly identities?: (identity: PrincipalIdentity) => Maybe<BetterSupabaseIdentityLink>;
489
+ /** How the claims map to a principal; the defaults of `subjectFromBetterSupabase`. */
490
+ readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
211
491
  };
212
492
  /**
213
- * `subjectFromSupabaseSession` for better-supabase's `AuthSession`, reading
214
- * `memberships` for the memberships and the entitlements module's `features`
215
- * claim for `principal.plans` (`plans` names another claim). With `apiKeys`,
216
- * a verified `apiKey` session is the key's credential subject: a personal key
217
- * acts as its user within the key's scopes, a tenant key as a `service`
218
- * principal holding `serviceRoles`. Without `apiKeys`, and for `anon`,
219
- * `service` and `invalid` sessions, the subject is anonymous.
493
+ * A `PrincipalSource` over better-supabase: `principal(id)` maps the claims
494
+ * `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`.
497
+ */
498
+ export declare function principalSource(options: PrincipalSourceOptions): PrincipalSource;
499
+ //#endregion
500
+ //#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;
505
+ readonly subjectType: string;
506
+ readonly subjectId: string;
507
+ readonly role: string;
508
+ /** Set on a link pinned to one version, which `subjectFromShareLink` refuses. */
509
+ readonly versionId?: string;
510
+ readonly expiresAt?: Instant;
511
+ };
512
+ /** better-supabase's `ShareLinks`, or anything with its `resolve`. */
513
+ type ShareLinkResolver = {
514
+ resolve(token: string): PromiseLike<{
515
+ readonly ok: true;
516
+ readonly data: ShareLinkRow | null;
517
+ } | {
518
+ readonly ok: false;
519
+ }>;
520
+ };
521
+ /** How links on one better-supabase subject type map to PermDock. */
522
+ type ShareLinkTarget = {
523
+ /** The resource the subject type's rows are; RLS matches it against `capability.on.resource`. */
524
+ readonly resource: Permission | PermissionTree;
525
+ /** PermDock roles for each share-link role (`{ view: ['guest'] }`). A role with no entry is refused. */
526
+ readonly roles: Readonly<Record<string, readonly string[]>>;
527
+ };
528
+ type ShareLinkSubjectOptions = {
529
+ readonly shareLinks: ShareLinkResolver;
530
+ /** One entry per subject type a guest page serves, keyed by better-supabase's `subjectType`. */
531
+ 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. */
533
+ readonly ttl?: number;
534
+ /**
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.
538
+ */
539
+ readonly linkPolicy?: (capability: Capability, row: ShareLinkRow) => LinkPolicy | readonly LinkPolicy[] | undefined | Promise<LinkPolicy | readonly LinkPolicy[] | undefined>;
540
+ readonly onAuth?: (event: AuthEvent) => void;
541
+ readonly requestId?: string;
542
+ readonly now?: Instant;
543
+ };
544
+ /**
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.
552
+ */
553
+ export declare function subjectFromShareLink(token: string | undefined | null, options: ShareLinkSubjectOptions): Promise<Subject<CapabilityPrincipal>>;
554
+ //#endregion
555
+ //#region src/better-supabase/workflow.d.ts
556
+ /** Where `handlerCan` gets the request's instance, such as `permdock/server`'s `createPermDock` result. */
557
+ type HandlerPermDockSource = {
558
+ readonly getPermDock: (request: Request) => PermDock | Promise<PermDock>;
559
+ };
560
+ /**
561
+ * 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`.
565
+ */
566
+ export declare function hookCan(permdock: PermDock): NonNullable<AuthorizeHookOptions["can"]>;
567
+ /**
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).
220
572
  */
221
- export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<CredentialPrincipal> | Subject;
573
+ export declare function handlerCan(source: HandlerPermDockSource): ProtectWebHandlerOptions["can"];
222
574
  //#endregion
223
- export type { AccessPolicyOptions, ApiKeySession, ApiKeySessionOptions, ApiKeyVerifierOptions, AuthorizationProviderOptions, BetterSupabaseSubjectOptions, BucketAccess, CredentialGuardOptions, McpToolDecision, McpToolRef, ServiceRoles, SupabasePrincipal, ToolPolicy, ToolPolicyOptions, TopicAccess };
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 };