permdock 0.4.0 → 0.6.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 (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.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 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.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-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -1,45 +1,119 @@
1
- import { E as Policy, H as CredentialVerifier, Mt as PermDockOptions, jt as PermDock, kr as Subject, xt as CredentialPrincipal } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission, p as PermissionTree } from "../permission-types-Dg39z9Kv.js";
3
- import { g as SupabaseSubjectOptions, m as SupabaseSessionLike, u as SupabasePrincipal } from "../types-CqrjB9o6.js";
1
+ import { Rt as Instant, St as ApiKeyPrincipal, T as Policy, U as CredentialVerifier, ar as Subject, gt as SupportSession, pn as ApproverInput, qt as AuthEvent, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { E as PermissionTree, w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { d as PrincipalIdentity, i as PermDockOptions, p as PrincipalSource, r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { c as AccessReviewStore } from "../types-C_IiEs64.js";
5
+ import { i as SupabaseRpcCaller } from "../postgrest-CEgRbefE.js";
6
+ import { g as SupabaseSubjectOptions, m as SupabaseSessionLike, u as SupabasePrincipal } from "../types-BzzaHxt3.js";
7
+ import { c as LinkPolicy, o as CapabilityPrincipal, t as Capability } from "../capability-Drg-1YhL.js";
4
8
  import { AuthorizationProvider } from "better-supabase/config";
5
- import { AuthSession, Authorizer } from "better-supabase/server";
9
+ import { AuthSession, AuthorizationHooks, Authorizer, SupportAuthorize, SupportAuthorizeInput } from "better-supabase/server";
6
10
  import { EntitlementClaimOptions } from "better-supabase/blocks/entitlements";
7
11
  import { ApiKey, ApiKeyClaimsOptions, ApiKeys } from "better-supabase/blocks/api-keys";
8
12
  import { AccessTopicPolicy } from "better-supabase/realtime";
9
13
  import { AccessBucketPolicy } from "better-supabase/storage";
10
14
  import { CredentialProvider } from "better-supabase/credentials";
11
15
  import { ToolDecision, ToolRef } from "better-supabase/mcp";
12
- //#region src/better-supabase/provider.d.ts
13
- type AuthorizationProviderOptions = {
14
- /** `permdock.manifest.json`, parsed or as JSON text, from `permdock supabase inspect --out`. */
15
- readonly manifest: unknown;
16
+ import { AuthorizeHookOptions, ProtectWebHandlerOptions } from "better-supabase/workflow-sdk";
17
+ //#region src/better-supabase/access-reviews.d.ts
18
+ type AccessReviewApplierOptions = {
16
19
  /**
17
- * `permissions.catalog.json` from `permdock catalog`. Without it the
18
- * provider lists no permissions, so better-supabase refuses every key in
19
- * a bucket, topic or module check.
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.
20
23
  */
21
- readonly catalog?: unknown;
22
- /** The scope tenants are; defaults to the manifest's one root scope. */
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. */
23
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;
24
94
  /**
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.
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.
29
98
  */
30
- readonly approver?: Permission;
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">;
31
106
  };
32
107
  /**
33
- * better-supabase's `authorization` config value, built from PermDock's
34
- * manifest and catalog: the scopes, the `rls generate` helpers as SQL
35
- * templates, the membership tables, suspension rows, the token hook and
36
- * every catalog key with `sqlComplete` set from its `rowConditions`. A
37
- * `_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
40
- * tenant scope is ambiguous.
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.
41
113
  */
42
- export declare function authorizationProvider(options: AuthorizationProviderOptions): AuthorizationProvider;
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[]>;
43
117
  //#endregion
44
118
  //#region src/better-supabase/api-keys.d.ts
45
119
  /** The roles a tenant key holds in its tenant: a list, or one per key. */
@@ -99,7 +173,9 @@ type ApiKeySessionOptions = {
99
173
  };
100
174
  /** The claim, and the short code better-supabase writes for each feature key. */
101
175
  type FeatureClaim = EntitlementClaimOptions;
102
- type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "plans"> & {
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">;
103
179
  /** How `kind: 'apiKey'` sessions map. Without it they are anonymous. */
104
180
  readonly apiKeys?: ApiKeySessionOptions;
105
181
  /**
@@ -119,7 +195,146 @@ type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "plans"> & {
119
195
  * principal holding `serviceRoles`. Without `apiKeys`, and for `anon`,
120
196
  * `service` and `invalid` sessions, the subject is anonymous.
121
197
  */
122
- export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<CredentialPrincipal> | Subject;
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
296
+ //#region src/better-supabase/provider.d.ts
297
+ type AuthorizationProviderOptions = {
298
+ /** `permdock.manifest.json`, parsed or as JSON text, from `permdock supabase inspect --out`. */
299
+ readonly manifest: unknown;
300
+ /**
301
+ * `permissions.catalog.json` from `permdock catalog`. Without it the
302
+ * provider lists no permissions, so better-supabase refuses every key in
303
+ * a bucket, topic or module check.
304
+ */
305
+ readonly catalog?: unknown;
306
+ /** The scope tenants are; defaults to the manifest's one root scope. */
307
+ readonly scope?: string;
308
+ /**
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.
312
+ */
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;
323
+ };
324
+ /**
325
+ * better-supabase's `authorization` config value, built from PermDock's
326
+ * manifest and catalog: the scopes, the `rls generate` helpers as SQL
327
+ * templates, the membership tables, suspension rows, the token hook and
328
+ * every catalog key with `sqlComplete` set from its `rowConditions`. A
329
+ * `_for` template and `permissionsFor` are set only when the manifest lists
330
+ * their helper, which `rls.mode: 'database'` writes; `isApprover` only with
331
+ * `approvers` and `permdock_is_approver`, and otherwise `canApprove` only
332
+ * with `approver`. `holdersOf` (`permitted_<tenant scope>_users`) and
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
335
+ * tenant scope is ambiguous.
336
+ */
337
+ export declare function authorizationProvider(options: AuthorizationProviderOptions): AuthorizationProvider;
123
338
  //#endregion
124
339
  //#region src/better-supabase/authorizer.d.ts
125
340
  /** The table operations better-supabase's `permissions: true` resolves through `forOperation`. */
@@ -245,4 +460,116 @@ type ToolPolicy<C> = {
245
460
  */
246
461
  export declare function toolPolicy<C>(options: ToolPolicyOptions<C>): ToolPolicy<C>;
247
462
  //#endregion
248
- export type { AccessPolicyOptions, ApiKeySession, ApiKeySessionOptions, ApiKeyVerifierOptions, AuthorizationProviderOptions, AuthorizerOperation, AuthorizerOptions, BetterSupabaseSubjectOptions, BucketAccess, CredentialGuardOptions, McpToolDecision, McpToolRef, ServiceRoles, SupabasePrincipal, ToolPolicy, ToolPolicyOptions, TopicAccess };
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;
472
+ };
473
+ type Maybe<T> = T | null | undefined | Promise<T | null | undefined>;
474
+ type PrincipalSourceOptions = {
475
+ /**
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.
479
+ */
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">;
491
+ };
492
+ /**
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).
572
+ */
573
+ export declare function handlerCan(source: HandlerPermDockSource): ProtectWebHandlerOptions["can"];
574
+ //#endregion
575
+ export type { AccessPolicyOptions, AccessReviewApplierOptions, AccessReviewApplyFailure, AccessReviewApplyResult, ApiKeySession, ApiKeySessionOptions, ApiKeyVerifierOptions, AuthorizationHooksOptions, AuthorizationProviderOptions, AuthorizerOperation, AuthorizerOptions, BetterSupabaseIdentityLink, BetterSupabaseSubjectOptions, BucketAccess, CredentialGuardOptions, HandlerPermDockSource, McpToolDecision, McpToolRef, PendingSupportSession, PrincipalSourceOptions, ProviderApprovers, ServiceRoles, ShareLinkResolver, ShareLinkRow, ShareLinkSubjectOptions, ShareLinkTarget, SubscriberPolicyEvent, SubscriberPolicyOptions, SupabasePrincipal, SupportPolicyOptions, ToolPolicy, ToolPolicyOptions, TopicAccess };