permdock 0.5.0 → 0.7.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 (399) hide show
  1. package/README.md +1 -0
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +5 -5
  4. package/dist/a2a/index.js +4 -4
  5. package/dist/{adoption-scan-B4R5fnMU.js → adoption-scan-D-feE7BE.js} +1 -1
  6. package/dist/agent/index.d.ts +3 -3
  7. package/dist/agent/index.js +1 -1
  8. package/dist/ai-sdk/index.d.ts +21 -6
  9. package/dist/ai-sdk/index.js +19 -9
  10. package/dist/{approval-prompt-Djo_PyZc.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
  11. package/dist/approvals/index.d.ts +4 -4
  12. package/dist/approvals/index.js +4 -4
  13. package/dist/{approvals-DJ6Yd5z1.js → approvals-CMRfsbBh.js} +74 -48
  14. package/dist/{arazzo-B6lebmiQ.js → arazzo-ClrF3PVb.js} +2 -2
  15. package/dist/{arazzo-BWhNF-k0.js → arazzo-rdeJ8n1J.js} +4 -4
  16. package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
  17. package/dist/astro/index.d.ts +6 -6
  18. package/dist/astro/index.js +2 -2
  19. package/dist/{audience-Dg8XsRaO.js → audience-BrMs8c4o.js} +1 -1
  20. package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
  21. package/dist/authzen/index.d.ts +162 -22
  22. package/dist/authzen/index.js +315 -146
  23. package/dist/{automation-BMZPIVUM.d.ts → automation-DOtAFWdy.d.ts} +3 -3
  24. package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
  25. package/dist/base-url-BQbddZO5.js +9 -0
  26. package/dist/better-auth/index.d.ts +2 -2
  27. package/dist/better-auth/index.js +2 -2
  28. package/dist/better-supabase/index.d.ts +50 -8
  29. package/dist/better-supabase/index.js +94 -32
  30. package/dist/{bind-CZzhx-Vj.js → bind-D1nO6fiC.js} +5 -5
  31. package/dist/{bind--9EFVYWF.d.ts → bind-JDuvxjuW.d.ts} +7 -7
  32. package/dist/{build-instance-BMnAudHn.js → build-instance-DxE7czo9.js} +1 -1
  33. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  34. package/dist/{capability-BSslw1QV.d.ts → capability-D4UC9TTW.d.ts} +2 -2
  35. package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
  36. package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
  37. package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
  38. package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
  39. package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
  40. package/dist/catalog/index.d.ts +70 -10
  41. package/dist/catalog/index.js +112 -6
  42. package/dist/catalog-BCCjSAdH.js +1 -0
  43. package/dist/{catalog-R_A__RsH.js → catalog-BaMQfQ6Y.js} +3 -3
  44. package/dist/{catalog-BECMPrwc.js → catalog-D69WhFii.js} +43 -13
  45. package/dist/{catalog-doc-C9wjsfNY.js → catalog-doc-CV9s6B1S.js} +28 -5
  46. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
  47. package/dist/{create-BWRSXgOF.js → challenge-nGWma08S.js} +122 -25
  48. package/dist/chat/index.d.ts +1 -1
  49. package/dist/chat/index.js +2 -2
  50. package/dist/chat-sdk/index.d.ts +3 -3
  51. package/dist/checks-BC_0mPIq.js +37 -0
  52. package/dist/claude-agent/index.d.ts +3 -3
  53. package/dist/claude-agent/index.js +2 -2
  54. package/dist/clerk/index.d.ts +3 -3
  55. package/dist/clerk/index.js +1 -1
  56. package/dist/cli/bin.js +2 -2
  57. package/dist/cli/index.d.ts +3 -3
  58. package/dist/cli/index.js +3 -3
  59. package/dist/cloud/index.d.ts +127 -11
  60. package/dist/cloud/index.js +251 -3
  61. package/dist/{cloud-CIoHNevm.js → cloud-CO8pYtwr.js} +5 -5
  62. package/dist/{codemod-Cxvvc70T.js → codemod-BP6n8N9L.js} +3 -3
  63. package/dist/{codemod-Bmj9dWMH.js → codemod-i4N2BhDc.js} +3 -3
  64. package/dist/{collect-CrZJJnEF.js → collect-BaWeMjwV.js} +17 -8
  65. package/dist/{collect-DloHbDVa.js → collect-DNm3oKOk.js} +6 -5
  66. package/dist/collect-k_Dulxr5.js +1 -0
  67. package/dist/compile/index.d.ts +1 -1
  68. package/dist/compile/index.js +1 -1
  69. package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
  70. package/dist/{compile-Ckm2HqBZ.d.ts → compile-COM2VKuN.d.ts} +3 -3
  71. package/dist/{completion-BqhRBJD8.js → completion-BNdVf7X2.js} +3 -3
  72. package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
  73. package/dist/{config-B46rm9sc.js → config-DGZzMV1B.js} +2 -2
  74. package/dist/{config-report-DUgj62Ai.js → config-report-Cm7UITNA.js} +3 -3
  75. package/dist/connector-schema-_VCSsdtD.js +433 -0
  76. package/dist/{context-bbFHR-0D.js → context--uM9V3Ui.js} +2 -2
  77. package/dist/convex/index.d.ts +5 -5
  78. package/dist/convex/index.js +2 -2
  79. package/dist/core-B5-w6Kw9.js +335 -0
  80. package/dist/core-CQkE8Esr.d.ts +179 -0
  81. package/dist/{create-0VZ7Pdiu.d.ts → create-B2-CQqCI.d.ts} +5 -5
  82. package/dist/{create-C3b4B5eF.js → create-Cb86Z8Im.js} +9 -8
  83. package/dist/{create-DnrmLnLW.js → create-DJrlhEp9.js} +5 -5
  84. package/dist/{create-BFfm17UA.d.ts → create-QHuuPw3q.d.ts} +7 -7
  85. package/dist/{create-BDS7wc3y.d.ts → create-UTnUVETj.d.ts} +30 -10
  86. package/dist/{credential-DM2um3ha.js → credential-CIM7wHwA.js} +4 -4
  87. package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
  88. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
  89. package/dist/{delegation-DaXVdDhM.js → delegation-C5rOdTp5.js} +5 -5
  90. package/dist/delivery/index.d.ts +5 -5
  91. package/dist/delivery/index.js +4 -3
  92. package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
  93. package/dist/{denied-text-D8jDHgsl.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
  94. package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
  95. package/dist/{describe-BZUsixiL.d.ts → describe-O0SwYIK8.d.ts} +2 -2
  96. package/dist/{diff-CxZo9pTq.js → diff-Btr1c1Ow.js} +2 -2
  97. package/dist/{diff-DCePiN6M.js → diff-DzT-xD13.js} +10 -10
  98. package/dist/{doctor-DFjUxf2f.js → doctor-BU1szn63.js} +241 -49
  99. package/dist/{doctor-CxiwSfqH.js → doctor-BoK_y0KO.js} +4 -4
  100. package/dist/drizzle/index.d.ts +3 -3
  101. package/dist/drizzle/index.js +1 -1
  102. package/dist/elysia/index.d.ts +5 -5
  103. package/dist/elysia/index.js +3 -3
  104. package/dist/{errors-C2PXIv4c.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
  105. package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
  106. package/dist/{evaluate-_R8QkWaf.js → evaluate-B_oqFbWC.js} +130 -34
  107. package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
  108. package/dist/{evaluations-DZ2CbV5k.js → evaluations-DReoiVBw.js} +4 -4
  109. package/dist/eve/index.d.ts +5 -5
  110. package/dist/eve/index.js +3 -3
  111. package/dist/express/index.d.ts +5 -5
  112. package/dist/express/index.js +3 -3
  113. package/dist/fastify/index.d.ts +5 -5
  114. package/dist/fastify/index.js +3 -3
  115. package/dist/{fetch-adapter-qKJBuRqy.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
  116. package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-De-u6vhJ.js} +3 -3
  117. package/dist/{fields-D9tPVUUS.js → fields-ClcQLrVc.js} +48 -13
  118. package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
  119. package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
  120. package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
  121. package/dist/{from-snapshot-D2lZt4Dd.js → from-snapshot-Bz469dIh.js} +17 -10
  122. package/dist/generate-3FNO5P5Q.js +159 -0
  123. package/dist/{grantee-Cn1HyUsI.js → grantee-BrRANrpT.js} +14 -4
  124. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
  125. package/dist/{grantee-match-DHArqY82.js → grantee-match-0RtHWQDx.js} +3 -3
  126. package/dist/h3/index.d.ts +4 -4
  127. package/dist/h3/index.js +3 -3
  128. package/dist/{helpers-DTcZOzhF.js → helpers-DY3vXuGs.js} +3 -3
  129. package/dist/hono/index.d.ts +5 -5
  130. package/dist/hono/index.js +3 -3
  131. package/dist/{hosted-DBDX0M-P.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
  132. package/dist/{hosted-BZIAYvon.js → hosted-XBgU6RGT.js} +34 -12
  133. package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
  134. package/dist/{import-DMmOG27O.js → import-Bz0GefWg.js} +5 -5
  135. package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
  136. package/dist/{index-CxGUswIC.d.ts → index-BE8y3moU.d.ts} +50 -8
  137. package/dist/{index-Chrs5fQ-.d.ts → index-BSfRl0hZ.d.ts} +6 -6
  138. package/dist/{index-DOVf7RJv.d.ts → index-BTkwrK7v.d.ts} +155 -17
  139. package/dist/index-CMiPH2Tv.d.ts +206 -0
  140. package/dist/{index-SGdIQyzc.d.ts → index-DH9DUDEM.d.ts} +18 -3
  141. package/dist/{index-BcHcPyIo.d.ts → index-DLwcuCN_.d.ts} +86 -7
  142. package/dist/index.d.ts +18 -17
  143. package/dist/index.js +27 -25
  144. package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
  145. package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
  146. package/dist/{instance-options-Omfd793B.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
  147. package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-CjcwnEiV.js} +20 -14
  148. package/dist/jwt/index.d.ts +83 -5
  149. package/dist/jwt/index.js +143 -5
  150. package/dist/{kernel-5JatXyND.js → kernel-DVExUwkp.js} +138 -12
  151. package/dist/kysely/index.d.ts +3 -3
  152. package/dist/kysely/index.js +1 -1
  153. package/dist/load-DrMHXzgN.js +1 -0
  154. package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
  155. package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
  156. package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
  157. package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
  158. package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
  159. package/dist/{manifest-CtKR3GXL.js → manifest-Dv6q4i5s.js} +54 -35
  160. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
  161. package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
  162. package/dist/{map-error-TCAdw-eW.js → map-error-BQGyDm_M.js} +1 -1
  163. package/dist/mcp/index.d.ts +64 -10
  164. package/dist/mcp/index.js +151 -22
  165. package/dist/{migrate-BShP7Vf4.js → migrate-Dodel0IJ.js} +77 -24
  166. package/dist/nest/index.d.ts +5 -5
  167. package/dist/nest/index.js +3 -3
  168. package/dist/next/index.d.ts +9 -9
  169. package/dist/next/index.js +5 -5
  170. package/dist/next/plugin.d.ts +1 -1
  171. package/dist/next/plugin.js +2 -2
  172. package/dist/node/index.d.ts +5 -5
  173. package/dist/node/index.js +2 -2
  174. package/dist/openai/index.d.ts +5 -5
  175. package/dist/openai/index.js +3 -3
  176. package/dist/openapi/index.d.ts +14 -4
  177. package/dist/openapi/index.js +1 -1
  178. package/dist/{openapi-ahr8rHu3.js → openapi-DMocl1bh.js} +4 -4
  179. package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
  180. package/dist/{openapi-DTaEmTSW.js → openapi-ztVaux6j.js} +8 -8
  181. package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
  182. package/dist/{operations-CxybZErY.d.ts → operations-BNLes61x.d.ts} +1 -1
  183. package/dist/orpc/index.d.ts +6 -6
  184. package/dist/orpc/index.js +4 -4
  185. package/dist/otel/index.d.ts +3 -3
  186. package/dist/otel/index.js +1 -1
  187. package/dist/{output-Dyw8fyPF.js → output-DgSDLrta.js} +7 -3
  188. package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
  189. package/dist/output-files-DPAY7-GX.js +1 -0
  190. package/dist/{ownership-BatFgAA4.js → ownership-Z2LpxsGa.js} +1349 -883
  191. package/dist/parse-Ddhz2xf4.js +148 -0
  192. package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
  193. package/dist/{parse-local-manifest-DgqtruPn.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
  194. package/dist/pdp/index.d.ts +3 -3
  195. package/dist/pdp/index.js +7 -3
  196. package/dist/peer-12Q5I_RH.js +976 -0
  197. package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
  198. package/dist/{permdock-B9JxkBwC.js → permdock-BfWEeMqk.js} +177 -49
  199. package/dist/{permdock-D7eeLJER.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
  200. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
  201. package/dist/{vocabulary-D6lPdb4Z.d.ts → permission-types-DhNEmoRG.d.ts} +4 -62
  202. package/dist/{permissions-oEWfl-kl.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
  203. package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
  204. package/dist/{permissions-CZKiUfFM.js → permissions-DArULThq.js} +4 -4
  205. package/dist/pkce-5h8NgMQJ.js +21 -0
  206. package/dist/{policies-CO1oOymN.js → policies-B2lZIurj.js} +3 -3
  207. package/dist/{policy-Czo4n3Hs.d.ts → policy-B7dg_yzu.d.ts} +2 -2
  208. package/dist/{policy-DLZJ5gAp.js → policy-DaJy4nK4.js} +17 -8
  209. package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-DFWYkNdu.js} +9 -9
  210. package/dist/{policy-types-DzwivBgR.d.ts → policy-types-B-F-qAZk.d.ts} +109 -5
  211. package/dist/postgres-store-BL9M_CA1.js +1001 -0
  212. package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
  213. package/dist/{postgrest-CW0IqC-U.js → postgrest-r5faDIzD.js} +47 -5
  214. package/dist/{powersync-BHfuehf3.js → powersync-13odBwiM.js} +3 -3
  215. package/dist/powersync-53ryOZip.js +1059 -0
  216. package/dist/powersync-CExtTLyA.js +1 -0
  217. package/dist/preset/index.js +1 -1
  218. package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
  219. package/dist/prisma/index.d.ts +2 -2
  220. package/dist/prisma/index.js +1 -1
  221. package/dist/{problem-details-DXlt-vks.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
  222. package/dist/prompt-DwtVemER.js +935 -0
  223. package/dist/{protected-DEPHc2xV.d.ts → protected-BwZYL1X_.d.ts} +6 -5
  224. package/dist/{protected-DfjY5mLA.js → protected-DXE3cQYg.js} +2 -2
  225. package/dist/{provider-CC-u3bYP.js → provider-BQsTYYy0.js} +2 -2
  226. package/dist/{provider-DMVt6yYn.d.ts → provider-Csk-THAn.d.ts} +1 -1
  227. package/dist/{provider-store-B5Yrkhzr.js → provider-store-IgqQipCO.js} +2 -2
  228. package/dist/{pull-BgIfno6w.js → pull-CN5OLxrF.js} +7 -7
  229. package/dist/pull-Cty6Ovyu.js +1 -0
  230. package/dist/{push-CmFVBOeI.js → push-tVdG8dUL.js} +54 -14
  231. package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
  232. package/dist/{pushed-policy-DobP7AHI.js → pushed-policy-CmYeSQqq.js} +1 -1
  233. package/dist/react/index.d.ts +6 -6
  234. package/dist/react/index.js +3 -3
  235. package/dist/react/provider-client.d.ts +1 -1
  236. package/dist/react/provider-client.js +1 -1
  237. package/dist/react-native/index.d.ts +25 -11
  238. package/dist/react-native/index.js +214 -24
  239. package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
  240. package/dist/{replay-D7iKcLFe.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
  241. package/dist/{request-context-BTRTG7OT.js → request-context-BykKLmyE.js} +2 -2
  242. package/dist/resend/index.d.ts +4 -4
  243. package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
  244. package/dist/{rls-BA8an5Ap.js → rls-Ck_PocSp.js} +32 -8
  245. package/dist/{rls-j6t43t7n.js → rls-CxBZb4rZ.js} +478 -534
  246. package/dist/{role-builder-CXbis5-X.js → role-builder-C1VJzvcr.js} +3 -3
  247. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  248. package/dist/{rpc-aPyNi6tA.js → rpc-Bk1bE-ch.js} +1 -1
  249. package/dist/run-Bz7DXGEv.js +1 -0
  250. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
  251. package/dist/{run-ticket-BjhTOi6u.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
  252. package/dist/{run-DOfMtc9V.js → run-uLD2aWuO.js} +7 -7
  253. package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
  254. package/dist/{saas-FO-Q8oj0.js → saas-Az_Kz-4D.js} +7 -7
  255. package/dist/{scan-BOI5tJ-6.js → scan-DSljDE1Y.js} +1 -1
  256. package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
  257. package/dist/scim/index.d.ts +3 -2
  258. package/dist/scim/index.js +3 -1
  259. package/dist/scim-C7JYhySg.js +44 -0
  260. package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
  261. package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
  262. package/dist/server/index.d.ts +11 -11
  263. package/dist/server/index.js +7 -7
  264. package/dist/{server-DqCT4CgZ.js → server-Bnga6I50.js} +3 -3
  265. package/dist/{server-types-BLd4MnBX.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
  266. package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
  267. package/dist/{shared-CD11nBbC.js → shared-fMKOv8hP.js} +46 -39
  268. package/dist/{sink-Bj_lDUDq.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
  269. package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
  270. package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
  271. package/dist/{snapshot-CXUWfsNy.js → snapshot-CbGmYiJx.js} +4 -4
  272. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
  273. package/dist/{snapshot-cache-DqK9eDmM.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
  274. package/dist/solid/index.d.ts +6 -5
  275. package/dist/solid/index.js +4 -4
  276. package/dist/solid-start/index.d.ts +6 -6
  277. package/dist/solid-start/index.js +3 -3
  278. package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
  279. package/dist/{sources-BV9j0DeZ.d.ts → sources-DEEuGb8S.d.ts} +63 -14
  280. package/dist/sources-qoIJQrJv.js +11 -0
  281. package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
  282. package/dist/sql-CDEPCA0g.d.ts +10 -0
  283. package/dist/{src-DLfUWFAI.js → src-DLFrtrrC.js} +154 -53
  284. package/dist/ssf/index.d.ts +4 -4
  285. package/dist/ssf/index.js +640 -211
  286. package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
  287. package/dist/{store-4u_hxjWa.js → store-DSP9oGvh.js} +15 -7
  288. package/dist/{store-options-BqEakYRa.js → store-options-B_poyYvg.js} +6 -6
  289. package/dist/{stores-ClZUgeoP.d.ts → stores-BAZwSYZA.d.ts} +6 -5
  290. package/dist/{stores-BbsD4fAR.js → stores-BqEuHC05.js} +2 -2
  291. package/dist/{stream-7-xmnf3U.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
  292. package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
  293. package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
  294. package/dist/supabase/index.d.ts +8 -7
  295. package/dist/supabase/index.js +5 -5
  296. package/dist/supabase/middleware.d.ts +6 -6
  297. package/dist/supabase/middleware.js +6 -6
  298. package/dist/{supabase-Dxlp8A94.js → supabase--0aJdLEd.js} +9 -7
  299. package/dist/{supabase-9pqI57pW.js → supabase-Bqp7iIY2.js} +3 -3
  300. package/dist/supabase-hook-DJxC4PoP.js +1 -0
  301. package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-Dg0SrQWR.js} +1069 -123
  302. package/dist/supautils-MESd81bF.js +689 -0
  303. package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
  304. package/dist/svelte/index.d.ts +5 -5
  305. package/dist/svelte/index.js +5 -5
  306. package/dist/svelte/runtime.d.ts +3 -3
  307. package/dist/svelte/runtime.js +3 -3
  308. package/dist/svelte/source.d.ts +5 -5
  309. package/dist/svelte/source.js +2 -2
  310. package/dist/sveltekit/index.d.ts +6 -6
  311. package/dist/sveltekit/index.js +2 -2
  312. package/dist/tanstack-start/index.d.ts +6 -6
  313. package/dist/tanstack-start/index.js +2 -2
  314. package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
  315. package/dist/terminal/index.d.ts +6 -6
  316. package/dist/terminal/index.js +3 -3
  317. package/dist/testing/core.d.ts +2 -0
  318. package/dist/testing/core.js +1 -0
  319. package/dist/testing/fixtures/index.d.ts +12 -0
  320. package/dist/testing/fixtures/index.js +770 -0
  321. package/dist/testing/index.d.ts +41 -174
  322. package/dist/testing/index.js +241 -731
  323. package/dist/testing/saas/index.d.ts +5 -5
  324. package/dist/testing/saas/index.js +2 -2
  325. package/dist/testing/saas/permissions.d.ts +1 -1
  326. package/dist/testing/saas/permissions.js +1 -1
  327. package/dist/text-diff-DhITNCnD.js +444 -0
  328. package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
  329. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
  330. package/dist/trpc/index.d.ts +6 -6
  331. package/dist/trpc/index.js +3 -3
  332. package/dist/{types-5Ut_pbKy.d.ts → types-BWZybqs9.d.ts} +112 -8
  333. package/dist/{types-CZTnPFzM.d.ts → types-BXMYB7BY.d.ts} +2 -2
  334. package/dist/{types-CdlxsYQh.d.ts → types-BfVmNJO5.d.ts} +14 -3
  335. package/dist/{types-BqAKcRNW.d.ts → types-CIeZcG8v.d.ts} +2 -2
  336. package/dist/{types-BNORmDM8.d.ts → types-CKV71kKh.d.ts} +4 -4
  337. package/dist/{types-tIgIeIKJ.d.ts → types-CQVEQawv.d.ts} +4 -4
  338. package/dist/{types-BjV-fqcA.d.ts → types-CeIscIKp.d.ts} +4 -4
  339. package/dist/{types-_sHy8BQf.d.ts → types-CfiKC5aN.d.ts} +1 -1
  340. package/dist/{types-ClZaWzfb.d.ts → types-D3A19w4A.d.ts} +8 -4
  341. package/dist/{types-C8-KNsFf.d.ts → types-DBHftjgS.d.ts} +15 -8
  342. package/dist/{types-CCpc2Dcv.d.ts → types-DC44-hqb.d.ts} +2 -2
  343. package/dist/{types-fbZ7JEXr.d.ts → types-DXmwu78Z.d.ts} +4 -4
  344. package/dist/{types-DiQjupG2.d.ts → types-cTos-H7p.d.ts} +2 -2
  345. package/dist/{types-DX0LaKTb.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
  346. package/dist/unplugin/index.d.ts +1 -1
  347. package/dist/unplugin/index.js +2 -2
  348. package/dist/{usage-T5mXq98v.js → usage-Bybmck7f.js} +7 -7
  349. package/dist/{usage-DHtE8j4E.js → usage-CDaLXCfL.js} +2 -2
  350. package/dist/usage-y-kBNdqs.js +1 -0
  351. package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
  352. package/dist/{verify-DbCL9bnB.js → verify-pe8rL_Qw.js} +350 -83
  353. package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
  354. package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
  355. package/dist/vue/index.d.ts +6 -5
  356. package/dist/vue/index.js +4 -4
  357. package/dist/{waiter-CKy4MQSY.d.ts → waiter-DwEyouan.d.ts} +2 -2
  358. package/dist/watch-Bd9mx3rd.js +1 -0
  359. package/dist/{watch-CszoTJMq.js → watch-C-4VmFlL.js} +3 -3
  360. package/dist/webmcp/index.d.ts +2 -2
  361. package/dist/webmcp/index.js +2 -2
  362. package/dist/{where-scope-Dv-WTP-w.js → where-scope-wq2coopv.js} +41 -21
  363. package/dist/{who-can-D0QoYbEb.js → who-can-BwNsI_Js.js} +6 -6
  364. package/dist/workflow/index.d.ts +3 -3
  365. package/dist/workflow/index.js +5 -5
  366. package/dist/workflow-sdk/index.d.ts +5 -5
  367. package/dist/{wrap-Bd1Tejur.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
  368. package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
  369. package/package.json +22 -11
  370. package/schemas/cli-result-v1.json +1 -0
  371. package/schemas/cloud-api-v1.json +152 -7
  372. package/schemas/connector-v1.json +8 -0
  373. package/schemas/supabase-claims-v1.json +5 -0
  374. package/schemas/supabase-manifest-v1.json +276 -75
  375. package/skills/permdock/SKILL.md +1 -0
  376. package/skills/permdock-agents/references/runtimes.md +3 -1
  377. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  378. package/skills/permdock-data/references/queries-and-rls.md +5 -2
  379. package/skills/permdock-tenancy/SKILL.md +1 -1
  380. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -0
  381. package/skills/permdock-wire/references/adapters.md +14 -0
  382. package/skills/permdock-wire/references/policy-options.md +1 -0
  383. package/dist/catalog-DjhMYYCq.js +0 -1
  384. package/dist/collect-FlXJlhus.js +0 -1
  385. package/dist/index-D8EovfsP.d.ts +0 -91
  386. package/dist/load-BxEtwlBS.js +0 -1
  387. package/dist/output-files-B3IZJksC.js +0 -1
  388. package/dist/parse-Cxq0WxrA.js +0 -53
  389. package/dist/peer-C8swJ2GH.js +0 -50
  390. package/dist/powersync-CbzkqL_M.js +0 -1
  391. package/dist/powersync-bYUDLOAO.js +0 -538
  392. package/dist/prompt-DfZLJLIn.js +0 -32
  393. package/dist/pull-ByOks_Tg.js +0 -1
  394. package/dist/run-CNsApDpd.js +0 -1
  395. package/dist/supabase-hook-CXcGpHqq.js +0 -1
  396. package/dist/supautils-B6HYL9eL.js +0 -91
  397. package/dist/text-diff-BQcUapOb.js +0 -15
  398. package/dist/usage-CHOtwL19.js +0 -1
  399. package/dist/watch-Cb-NcaUw.js +0 -1
@@ -30,20 +30,20 @@ const SECTIONS = [
30
30
  docs: "init",
31
31
  effects: ["files"],
32
32
  config: false,
33
- load: async () => (await import("./init-GG6Jh8HD.js")).init
33
+ load: async () => (await import("./init-5TXNji88.js")).init
34
34
  }),
35
35
  group("preset", "Decode a preset code, or print its permdock.com/create link", "preset", [leaf("decode", "Print what a preset code holds", {
36
36
  examples: ["permdock preset decode p1AQIDBAc"],
37
37
  docs: "preset",
38
38
  effects: [],
39
39
  config: false,
40
- load: async () => (await import("./init-GG6Jh8HD.js")).presetDecode
40
+ load: async () => (await import("./init-5TXNji88.js")).presetDecode
41
41
  }), leaf("url", "Print the permdock.com/create link that opens a code", {
42
42
  examples: ["permdock preset url p1AQIDBAc"],
43
43
  docs: "preset",
44
44
  effects: [],
45
45
  config: false,
46
- load: async () => (await import("./init-GG6Jh8HD.js")).presetUrl
46
+ load: async () => (await import("./init-5TXNji88.js")).presetUrl
47
47
  })]),
48
48
  group("skills", "Install, update or list the PermDock Agent Skills", "skills", [
49
49
  leaf("install", "Copy the Agent Skills into the agent folders", {
@@ -55,21 +55,21 @@ const SECTIONS = [
55
55
  docs: "skills",
56
56
  effects: ["files"],
57
57
  config: false,
58
- load: async () => (await import("./skills-CTYwkl44.js")).install
58
+ load: async () => (await import("./skills-g_3BS9NC.js")).install
59
59
  }),
60
60
  leaf("update", "Replace installed skills with this version's", {
61
61
  examples: ["permdock skills update"],
62
62
  docs: "skills",
63
63
  effects: ["files"],
64
64
  config: false,
65
- load: async () => (await import("./skills-CTYwkl44.js")).update
65
+ load: async () => (await import("./skills-g_3BS9NC.js")).update
66
66
  }),
67
67
  leaf("list", "List the skills and where each is installed", {
68
68
  examples: ["permdock skills list"],
69
69
  docs: "skills",
70
70
  effects: [],
71
71
  config: false,
72
- load: async () => (await import("./skills-CTYwkl44.js")).list
72
+ load: async () => (await import("./skills-g_3BS9NC.js")).list
73
73
  })
74
74
  ]),
75
75
  leaf("doctor", "Check a PermDock installation and print a fix for each finding", {
@@ -82,7 +82,7 @@ const SECTIONS = [
82
82
  effects: ["files"],
83
83
  config: true,
84
84
  findings: true,
85
- load: async () => (await import("./doctor-CxiwSfqH.js")).doctor
85
+ load: async () => (await import("./doctor-BoK_y0KO.js")).doctor
86
86
  }),
87
87
  leaf("completion", "Print the shell completion script for bash, zsh or fish", {
88
88
  examples: ["permdock completion zsh > ~/.zfunc/_permdock", "eval \"$(permdock completion bash)\""],
@@ -90,7 +90,7 @@ const SECTIONS = [
90
90
  effects: [],
91
91
  config: false,
92
92
  shellOutput: true,
93
- load: async () => (await import("./completion-BqhRBJD8.js")).completion
93
+ load: async () => (await import("./completion-BNdVf7X2.js")).completion
94
94
  })
95
95
  ]
96
96
  },
@@ -106,14 +106,14 @@ const SECTIONS = [
106
106
  docs: "collect",
107
107
  effects: ["files"],
108
108
  config: true,
109
- load: async () => (await import("./collect-DloHbDVa.js")).collect
109
+ load: async () => (await import("./collect-DNm3oKOk.js")).collect
110
110
  }),
111
111
  leaf("catalog", "Export the catalog as catalog JSON, JSON Schema or Markdown", {
112
112
  examples: ["permdock catalog --out permissions.catalog.json", "permdock catalog --kind markdown"],
113
113
  docs: "catalog",
114
114
  effects: ["files"],
115
115
  config: true,
116
- load: async () => (await import("./catalog-R_A__RsH.js")).catalog
116
+ load: async () => (await import("./catalog-BaMQfQ6Y.js")).catalog
117
117
  }),
118
118
  leaf("usage", "Report unused, ungranted and role-less permissions and conditions on undeclared fields", {
119
119
  examples: ["permdock usage", "permdock usage --fail-on warning"],
@@ -121,14 +121,14 @@ const SECTIONS = [
121
121
  effects: [],
122
122
  config: true,
123
123
  findings: true,
124
- load: async () => (await import("./usage-DHtE8j4E.js")).usage
124
+ load: async () => (await import("./usage-CDaLXCfL.js")).usage
125
125
  }),
126
126
  leaf("diff", "Compare two policies or catalogs; exit 1 on a breaking change", {
127
127
  examples: ["permdock diff main.catalog.json permissions.catalog.json", "permdock diff ./old-policy.ts ./src/policy.ts --impact"],
128
128
  docs: "diff",
129
129
  effects: [],
130
130
  config: true,
131
- load: async () => (await import("./diff-CxZo9pTq.js")).diff
131
+ load: async () => (await import("./diff-Btr1c1Ow.js")).diff
132
132
  }),
133
133
  leaf("config", "Check permdock.config.ts for unknown keys, or print the effective config", {
134
134
  examples: ["permdock config", "permdock config --print"],
@@ -136,7 +136,7 @@ const SECTIONS = [
136
136
  effects: [],
137
137
  config: true,
138
138
  findings: true,
139
- load: async () => (await import("./config-B46rm9sc.js")).config
139
+ load: async () => (await import("./config-DGZzMV1B.js")).config
140
140
  })
141
141
  ]
142
142
  },
@@ -153,14 +153,14 @@ const SECTIONS = [
153
153
  "network"
154
154
  ],
155
155
  config: true,
156
- load: async () => (await import("./rls-BA8an5Ap.js")).generate
156
+ load: async () => (await import("./rls-Ck_PocSp.js")).generate
157
157
  }),
158
158
  leaf("import", "Turn existing RLS policies into a generated definition", {
159
159
  examples: ["permdock rls import --sql schema.sql --out src/permissions.generated.ts", "permdock rls import --db-url-stdin --out src/permissions.generated.ts"],
160
160
  docs: "rls",
161
161
  effects: ["files", "database:read"],
162
162
  config: true,
163
- load: async () => (await import("./rls-BA8an5Ap.js")).importPolicies
163
+ load: async () => (await import("./rls-Ck_PocSp.js")).importPolicies
164
164
  }),
165
165
  leaf("verify", "Run the fixtures against the policies, or compare a live database", {
166
166
  examples: [
@@ -169,16 +169,24 @@ const SECTIONS = [
169
169
  "permdock rls verify --introspect --db-url-stdin"
170
170
  ],
171
171
  docs: "rls",
172
- effects: ["database:read"],
172
+ effects: ["files", "database:read"],
173
173
  config: true,
174
- load: async () => (await import("./rls-BA8an5Ap.js")).verify
174
+ findings: true,
175
+ load: async () => (await import("./rls-Ck_PocSp.js")).verify
175
176
  }),
176
177
  leaf("migrate", "Rewrite hand-written policies onto the generated helpers", {
177
178
  examples: ["permdock rls migrate --sql supabase/migrations --dry-run", "permdock rls migrate --sql supabase/migrations"],
178
179
  docs: "rls",
179
180
  effects: ["rewrite", "files"],
180
181
  config: true,
181
- load: async () => (await import("./rls-BA8an5Ap.js")).migrate
182
+ load: async () => (await import("./rls-Ck_PocSp.js")).migrate
183
+ }),
184
+ leaf("explain", "Show the tables, membership sources and triggers the SQL binds to", {
185
+ examples: ["permdock rls explain", "permdock rls explain --db-url-stdin --json"],
186
+ docs: "rls",
187
+ effects: ["database:read"],
188
+ config: true,
189
+ load: async () => (await import("./rls-Ck_PocSp.js")).explain
182
190
  })
183
191
  ]),
184
192
  group("supabase", "Generate the Supabase Custom Access Token Hook, or inspect its manifest", "supabase", [group("hook", "The Custom Access Token Hook", "supabase", [leaf("generate", "Compile the membership sources into the hook migration", {
@@ -186,26 +194,37 @@ const SECTIONS = [
186
194
  docs: "supabase",
187
195
  effects: ["files", "database:read"],
188
196
  config: true,
189
- load: async () => (await import("./supabase-9pqI57pW.js")).hookGenerate
197
+ load: async () => (await import("./supabase-Bqp7iIY2.js")).hookGenerate
190
198
  })]), leaf("inspect", "Print or write the hook and helper manifest", {
191
199
  examples: ["permdock supabase inspect", "permdock supabase inspect --out"],
192
200
  docs: "supabase",
193
201
  effects: ["files"],
194
202
  config: true,
195
- load: async () => (await import("./supabase-9pqI57pW.js")).inspect
203
+ load: async () => (await import("./supabase-Bqp7iIY2.js")).inspect
196
204
  })]),
197
205
  group("powersync", "Generate PowerSync Sync Streams from the policy, or verify them", "powersync", [leaf("generate", "Compile the read grants into sync-config.yaml", {
198
206
  examples: ["permdock powersync generate", "permdock powersync generate --check"],
199
207
  docs: "powersync",
200
208
  effects: ["files"],
201
209
  config: true,
202
- load: async () => (await import("./powersync-BHfuehf3.js")).generate
210
+ load: async () => (await import("./powersync-13odBwiM.js")).generate
203
211
  }), leaf("verify", "Fail on stale streams or a stream that syncs a denied row", {
204
212
  examples: ["permdock powersync verify", "permdock powersync verify --db-url-stdin"],
205
213
  docs: "powersync",
206
214
  effects: ["database:read"],
207
215
  config: true,
208
- load: async () => (await import("./powersync-BHfuehf3.js")).verify
216
+ load: async () => (await import("./powersync-13odBwiM.js")).verify
217
+ })]),
218
+ group("scim", "Generate the Postgres tables postgresDirectoryStore keeps a SCIM directory in", "scim", [leaf("generate", "Write the tenant-keyed users, groups and members tables", {
219
+ examples: [
220
+ "permdock scim generate",
221
+ "permdock scim generate --dialect guc --out db/scim.sql",
222
+ "permdock scim generate --check"
223
+ ],
224
+ docs: "scim",
225
+ effects: ["files"],
226
+ config: true,
227
+ load: async () => (await import("./scim-C7JYhySg.js")).generate
209
228
  })])
210
229
  ]
211
230
  },
@@ -217,13 +236,13 @@ const SECTIONS = [
217
236
  docs: "openapi",
218
237
  effects: ["files"],
219
238
  config: true,
220
- load: async () => (await import("./openapi-ahr8rHu3.js")).emit
239
+ load: async () => (await import("./openapi-DMocl1bh.js")).emit
221
240
  }), leaf("import", "Turn an OpenAPI document into a generated definition", {
222
241
  examples: ["permdock openapi import --doc openapi.yaml --out src/permissions.generated.ts"],
223
242
  docs: "openapi",
224
243
  effects: ["files", "network"],
225
244
  config: false,
226
- load: async () => (await import("./openapi-ahr8rHu3.js")).importDocument
245
+ load: async () => (await import("./openapi-DMocl1bh.js")).importDocument
227
246
  })]),
228
247
  group("arazzo", "Check Arazzo workflows against the permissions", "arazzo", [leaf("check", "Resolve every Arazzo step to x-permdock-permissions", {
229
248
  examples: ["permdock arazzo check --doc arazzo.json --openapi openapi.json"],
@@ -231,7 +250,7 @@ const SECTIONS = [
231
250
  effects: [],
232
251
  config: true,
233
252
  findings: true,
234
- load: async () => (await import("./arazzo-B6lebmiQ.js")).check
253
+ load: async () => (await import("./arazzo-ClrF3PVb.js")).check
235
254
  })]),
236
255
  leaf("scan", "List authorization checks written without PermDock, to adopt it in an existing app", {
237
256
  examples: ["permdock scan", "permdock scan --src app,lib --pattern isBeta"],
@@ -239,21 +258,21 @@ const SECTIONS = [
239
258
  effects: [],
240
259
  config: true,
241
260
  findings: true,
242
- load: async () => (await import("./scan-BOI5tJ-6.js")).scan
261
+ load: async () => (await import("./scan-DSljDE1Y.js")).scan
243
262
  }),
244
263
  group("casl", "Import CASL rules into a generated module", "casl", [leaf("import", "Turn CASL rules per role into a permissions and policy module", {
245
264
  examples: ["permdock casl import --rules rules.json --out src/permissions.generated.ts"],
246
265
  docs: "casl",
247
266
  effects: ["files"],
248
267
  config: false,
249
- load: async () => (await import("./casl-64gpT-8x.js")).caslImport
268
+ load: async () => (await import("./casl-CmJlgziS.js")).caslImport
250
269
  })]),
251
270
  group("casbin", "Import a Casbin model and policy into a generated module", "casbin", [leaf("import", "Turn a Casbin RBAC model and policy into a permissions and policy module", {
252
271
  examples: ["permdock casbin import --model model.conf --policy policy.csv --out src/permissions.generated.ts"],
253
272
  docs: "casbin",
254
273
  effects: ["files"],
255
274
  config: false,
256
- load: async () => (await import("./casbin-Cr7RLtA3.js")).casbinImport
275
+ load: async () => (await import("./casbin-BHijLuHY.js")).casbinImport
257
276
  })])
258
277
  ]
259
278
  },
@@ -265,34 +284,34 @@ const SECTIONS = [
265
284
  docs: "login",
266
285
  effects: ["network", "files"],
267
286
  config: false,
268
- load: async () => (await import("./login-Dfe5RlYk.js")).login
287
+ load: async () => (await import("./login-ClSJh5t5.js")).login
269
288
  }),
270
289
  leaf("logout", "Revoke and delete the stored PermDock Cloud login", {
271
290
  examples: ["permdock logout"],
272
291
  docs: "login",
273
292
  effects: ["network", "files"],
274
293
  config: false,
275
- load: async () => (await import("./login-Dfe5RlYk.js")).logout
294
+ load: async () => (await import("./login-ClSJh5t5.js")).logout
276
295
  }),
277
296
  leaf("whoami", "Print the PermDock Cloud identity the CLI acts as", {
278
297
  examples: ["permdock whoami", "permdock whoami --json"],
279
298
  docs: "login",
280
299
  effects: [],
281
300
  config: false,
282
- load: async () => (await import("./login-Dfe5RlYk.js")).whoami
301
+ load: async () => (await import("./login-ClSJh5t5.js")).whoami
283
302
  }),
284
303
  group("cloud", "Publish to or pull from a PermDock Cloud project", "cloud", [leaf("push", "Publish the catalog, policy and manifest to a Cloud project", {
285
304
  examples: ["permdock cloud push --dry-run", "permdock cloud push --project prj_123"],
286
305
  docs: "cloud",
287
306
  effects: ["network", "cloud:write"],
288
307
  config: true,
289
- load: async () => (await import("./cloud-CIoHNevm.js")).push
308
+ load: async () => (await import("./cloud-CO8pYtwr.js")).push
290
309
  }), leaf("pull", "Write a Cloud project's published catalog and manifest", {
291
310
  examples: ["permdock cloud pull --project prj_123"],
292
311
  docs: "cloud",
293
312
  effects: ["network", "files"],
294
313
  config: true,
295
- load: async () => (await import("./cloud-CIoHNevm.js")).pull
314
+ load: async () => (await import("./cloud-CO8pYtwr.js")).pull
296
315
  })])
297
316
  ]
298
317
  },
@@ -303,7 +322,7 @@ const SECTIONS = [
303
322
  docs: "codemod",
304
323
  effects: ["rewrite"],
305
324
  config: false,
306
- load: async () => (await import("./codemod-Bmj9dWMH.js")).codemod
325
+ load: async () => (await import("./codemod-i4N2BhDc.js")).codemod
307
326
  })]
308
327
  }
309
328
  ];
@@ -315,7 +334,7 @@ const COMPLETE_LEAF = leaf("__complete", "Print completion candidates for a part
315
334
  config: false,
316
335
  shellOutput: true,
317
336
  hidden: true,
318
- load: async () => (await import("./completion-BqhRBJD8.js")).complete
337
+ load: async () => (await import("./completion-BNdVf7X2.js")).complete
319
338
  });
320
339
  const ROOT = group("permdock", "Collect, export, diff and check the permissions a PermDock policy declares", "", [...SECTIONS.flatMap((section) => section.entries), COMPLETE_LEAF]);
321
340
  /** Each leaf with its path from the root, in manifest order. */
@@ -10,13 +10,8 @@ const supabaseManifestSchema = freezeDeep({
10
10
  required: [
11
11
  "$schema",
12
12
  "version",
13
- "hook",
14
13
  "helpers",
15
14
  "tenantClaim",
16
- "budget",
17
- "claims",
18
- "authzVersion",
19
- "memberships",
20
15
  "rls",
21
16
  "decidingColumns",
22
17
  "markers"
@@ -95,6 +90,24 @@ const supabaseManifestSchema = freezeDeep({
95
90
  }
96
91
  },
97
92
  authzVersion: { type: "boolean" },
93
+ managementApi: {
94
+ description: "The Management API fields that make a hosted project call the generated hook, as `permdock supabase inspect` prints and `--out` writes them.",
95
+ type: "object",
96
+ required: [
97
+ "hook_custom_access_token_enabled",
98
+ "hook_custom_access_token_uri",
99
+ "jwt_exp"
100
+ ],
101
+ properties: {
102
+ hook_custom_access_token_enabled: { const: true },
103
+ hook_custom_access_token_uri: { type: "string" },
104
+ jwt_exp: {
105
+ description: "The access token lifetime in seconds: `[auth] jwt_expiry` of `supabase/config.toml`, or 3600 when it is unset.",
106
+ type: "integer"
107
+ }
108
+ },
109
+ additionalProperties: false
110
+ },
98
111
  authzVersionBump: {
99
112
  type: "object",
100
113
  required: [
@@ -222,6 +235,7 @@ const supabaseManifestSchema = freezeDeep({
222
235
  items: { type: "string" }
223
236
  } }
224
237
  },
238
+ tokenScopes: { type: "boolean" },
225
239
  apiKeys: {
226
240
  type: "object",
227
241
  required: [
@@ -349,7 +363,7 @@ const supabaseManifestSchema = freezeDeep({
349
363
  },
350
364
  helperName: {
351
365
  type: "string",
352
- pattern: "^(permdock_has(_for)?|permitted_[a-z][a-z0-9_]*_(ids|permission_keys)(_for)?|permitted_[a-z][a-z0-9_]*_users|member_[a-z][a-z0-9_]*_ids(_for)?|permdock_can_assign(_any|_custom_role)?(_for)?|permdock_api_key_allows|permdock_actor_may_write|permdock_is_approver|permdock_user_id)$"
366
+ pattern: "^(permdock_has(_for)?|permitted_[a-z][a-z0-9_]*_(ids|permission_keys)(_for)?|permitted_[a-z][a-z0-9_]*_users|member_[a-z][a-z0-9_]*_ids(_for)?|permdock_can_assign(_any|_custom_role)?(_for)?|permdock_api_key_allows|permdock_token_scope_allows|permdock_actor_may_write|permdock_is_approver|permdock_user_id)$"
353
367
  },
354
368
  column: {
355
369
  type: "object",
@@ -357,7 +371,23 @@ const supabaseManifestSchema = freezeDeep({
357
371
  additionalProperties: false,
358
372
  properties: { column: { $ref: "#/$defs/identifier" } }
359
373
  },
360
- role: { oneOf: [{ $ref: "#/$defs/value" }, { $ref: "#/$defs/through" }] },
374
+ role: { oneOf: [
375
+ { $ref: "#/$defs/value" },
376
+ { $ref: "#/$defs/through" },
377
+ { $ref: "#/$defs/mapped" }
378
+ ] },
379
+ mapped: {
380
+ type: "object",
381
+ required: ["column", "map"],
382
+ additionalProperties: false,
383
+ properties: {
384
+ column: { $ref: "#/$defs/identifier" },
385
+ map: {
386
+ type: "object",
387
+ additionalProperties: { type: ["string", "null"] }
388
+ }
389
+ }
390
+ },
361
391
  user: { oneOf: [{ $ref: "#/$defs/column" }, { $ref: "#/$defs/through" }] },
362
392
  through: {
363
393
  type: "object",
@@ -338,19 +338,22 @@ function mapClaimsToSubject(claims, options) {
338
338
  invalidChain: false
339
339
  };
340
340
  }
341
+ /** `true` when a verified token is not an OpenID Connect ID token for one of `clients`. */
342
+ function idTokenMismatch(claims, headerTyp, clients) {
343
+ const typ = headerTyp?.toLowerCase();
344
+ if (typ !== void 0 && typ !== "jwt" && typ !== "application/jwt") return true;
345
+ if (typeof claims.iat !== "number") return true;
346
+ const aud = claims.aud;
347
+ const audiences = Array.isArray(aud) ? aud : aud === void 0 ? [] : [aud];
348
+ const expected = clients === void 0 ? [] : typeof clients === "string" ? [clients] : clients;
349
+ const azp = claims["azp"];
350
+ if (azp === void 0) return audiences.length > 1;
351
+ return typeof azp !== "string" || !expected.includes(azp);
352
+ }
341
353
  function acceptMismatch(claims, headerTyp, options, audience) {
342
354
  const accept = options.accept ?? "access-token";
343
355
  const typ = headerTyp?.toLowerCase();
344
- if (accept === "id-token") {
345
- if (typ !== void 0 && typ !== "jwt" && typ !== "application/jwt") return true;
346
- if (typeof claims.iat !== "number") return true;
347
- const aud = claims.aud;
348
- const audiences = Array.isArray(aud) ? aud : aud === void 0 ? [] : [aud];
349
- const clients = audience === void 0 ? [] : typeof audience === "string" ? [audience] : audience;
350
- const azp = claims["azp"];
351
- if (azp === void 0) return audiences.length > 1;
352
- return typeof azp !== "string" || !clients.includes(azp);
353
- }
356
+ if (accept === "id-token") return idTokenMismatch(claims, headerTyp, audience);
354
357
  if (options.profile === "fapi2" && typ !== "at+jwt") return true;
355
358
  if (typeof claims["nonce"] === "string") return true;
356
359
  if (audience !== void 0 && typeof claims.aud === "string") {
@@ -360,4 +363,4 @@ function acceptMismatch(claims, headerTyp, options, audience) {
360
363
  return false;
361
364
  }
362
365
  //#endregion
363
- export { mapClaimsToSubject as n, validateCustomClaims as r, acceptMismatch as t };
366
+ export { validateCustomClaims as i, idTokenMismatch as n, mapClaimsToSubject as r, acceptMismatch as t };
@@ -2,7 +2,7 @@ import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
3
3
  import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "./errors-BKy0EfhN.js";
4
4
  import { c as problemResponse, i as decisionResponse } from "./problem-CTviyH5L.js";
5
- import { u as InvalidSignatureError } from "./evaluations-DZ2CbV5k.js";
5
+ import { l as InvalidSignatureError } from "./evaluations-DReoiVBw.js";
6
6
  //#region src/server/map-error.ts
7
7
  /**
8
8
  * Turns a thrown PermDock error into its Problem Details response, with the
@@ -1,14 +1,14 @@
1
- import { $n as Delegation, T as Policy, ir as Subject, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { m as ApprovalStore } from "../types-CCpc2Dcv.js";
4
- import { t as ApprovalHint } from "../errors-C2PXIv4c.js";
5
- import { t as InstanceOptions } from "../instance-options-Omfd793B.js";
1
+ import { T as Policy, Y as JwtClaims, dt as TokenVerifier, lr as Subject, rr as Delegation, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { m as ApprovalStore } from "../types-DC44-hqb.js";
4
+ import { t as ApprovalHint } from "../errors-B_Qg9D3e.js";
5
+ import { t as InstanceOptions } from "../instance-options-CU0YQCLH.js";
6
6
  import { t as RequestContext } from "../request-context-C2_1lchh.js";
7
- import { n as PermDockWrap } from "../wrap-Bd1Tejur.js";
8
- import { o as OtelWrap } from "../types-BqAKcRNW.js";
9
- import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-D8jDHgsl.js";
7
+ import { n as PermDockWrap } from "../wrap-B6R0cMRL.js";
8
+ import { o as OtelWrap } from "../types-CIeZcG8v.js";
9
+ import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-D4qkEtFz.js";
10
10
  import { t as ClientNames } from "../clients-C7zLFuWT.js";
11
- import { U as JwtSubjectOptions } from "../types-DiQjupG2.js";
11
+ import { U as JwtSubjectOptions } from "../types-cTos-H7p.js";
12
12
  import { CacheHint, Icon, McpServer, PromptCallback, ReadResourceCallback, ReadResourceTemplateCallback, RegisteredPrompt, RegisteredResource, RegisteredResourceTemplate, RegisteredTool, ResourceMetadata, ResourceTemplate, ScopeChallengeHandler, StandardSchemaWithJSON, ToolAnnotations, ToolCallback, Variables } from "@modelcontextprotocol/server";
13
13
  //#region src/mcp/types.d.ts
14
14
  /** The verified `AuthInfo` the MCP SDK's bearer auth puts on `ctx.http.authInfo`. */
@@ -54,6 +54,13 @@ type McpResourceConfig<TArgs extends readonly unknown[]> = Guard<TArgs> & Resour
54
54
  readonly cacheHint?: CacheHint;
55
55
  readonly scopeChallenge?: ScopeChallengeHandler;
56
56
  };
57
+ /**
58
+ * An MCP Apps view (`ui://`). Without `permission` it takes the permission of
59
+ * the tool whose `_meta.ui.resourceUri` names it, and denies while no tool does.
60
+ */
61
+ type McpUiResourceConfig = Omit<McpResourceConfig<[uri: URL]>, "permission"> & {
62
+ readonly permission?: Permission;
63
+ };
57
64
  type McpPromptConfig<TArgs extends StandardSchemaWithJSON | undefined = undefined> = Guard<[args: InputOf<TArgs>]> & {
58
65
  readonly title?: string;
59
66
  readonly description?: string;
@@ -65,6 +72,7 @@ type McpPromptConfig<TArgs extends StandardSchemaWithJSON | undefined = undefine
65
72
  /** `McpServer` whose `register*` methods take a `permission` and decide first. */
66
73
  type GuardedMcpServer = Omit<McpServer, "registerTool" | "registerResource" | "registerPrompt"> & {
67
74
  registerTool<TInput extends StandardSchemaWithJSON | undefined = undefined, TOutput extends StandardSchemaWithJSON | undefined = undefined>(name: string, config: McpToolConfig<TInput, TOutput>, handler: ToolCallback<TInput>): RegisteredTool;
75
+ registerResource(name: string, uri: `ui://${string}`, config: McpUiResourceConfig, read: ReadResourceCallback): RegisteredResource;
68
76
  registerResource(name: string, uri: string, config: McpResourceConfig<[uri: URL]>, read: ReadResourceCallback): RegisteredResource;
69
77
  registerResource(name: string, template: ResourceTemplate, config: McpResourceConfig<[uri: URL, variables: Variables]>, read: ReadResourceTemplateCallback): RegisteredResourceTemplate;
70
78
  registerPrompt<TArgs extends StandardSchemaWithJSON | undefined = undefined>(name: string, config: McpPromptConfig<TArgs>, handler: PromptCallback<TArgs>): RegisteredPrompt;
@@ -166,6 +174,52 @@ export declare function createPermDock<TUser, TPrincipal extends Principal = Pri
166
174
  /** `_meta` key on `tools/call`, `resources/read` and `prompts/get` carrying an approval token. */
167
175
  export declare const APPROVAL_META_KEY = "dev.permdock/approval";
168
176
  //#endregion
177
+ //#region src/mcp/resource-guard.d.ts
178
+ type McpResourceGuardOptions = {
179
+ /** The MCP server's resource identifier (RFC 8707); a token's `aud` must contain it. */
180
+ readonly resource: string | URL;
181
+ /** Scopes every request needs; a token without one of them gets `403 insufficient_scope`. */
182
+ readonly scopes?: readonly string[];
183
+ readonly verifier: TokenVerifier;
184
+ /** The authorization server's issuer, when the verifier does not check `iss` itself. */
185
+ readonly issuer?: string;
186
+ /** `true` for a revoked token; a throw also refuses it. */
187
+ readonly revoked?: (claims: JwtClaims) => boolean | Promise<boolean>;
188
+ /** The RFC 9728 metadata URL in challenges; default `<origin>/.well-known/oauth-protected-resource<path>`. */
189
+ readonly resourceMetadataUrl?: string;
190
+ };
191
+ type McpResourceGuardResult = {
192
+ readonly ok: true;
193
+ readonly authInfo: McpAuthInfo;
194
+ } | {
195
+ readonly ok: false;
196
+ readonly response: Response;
197
+ };
198
+ type ProtectedResourceMetadataOptions = {
199
+ readonly resource: string | URL;
200
+ /** `authorization_servers`: the issuers whose tokens the resource accepts. */
201
+ readonly authorizationServers: readonly string[];
202
+ /** `scopes_supported`; list every permission's `scope` so clients can ask for them up front. */
203
+ readonly scopesSupported?: readonly string[];
204
+ readonly resourceName?: string;
205
+ readonly resourceDocumentation?: string;
206
+ };
207
+ /**
208
+ * The resource-server check in front of an MCP endpoint (MCP authorization,
209
+ * RFC 6750, RFC 9728): reads the bearer token from `Authorization`, verifies
210
+ * it for `resource`, refuses a revoked one and checks `scopes`. It answers
211
+ * the `McpAuthInfo` the SDK's handlers read, or the `401` or `403` response
212
+ * with a `WWW-Authenticate` challenge naming the metadata URL. A token in the
213
+ * query string is never read. Never throws.
214
+ */
215
+ export declare function mcpResourceGuard(options: McpResourceGuardOptions): (request: Request) => Promise<McpResourceGuardResult>;
216
+ /**
217
+ * The RFC 9728 Protected Resource Metadata document as a Fetch handler, for
218
+ * `/.well-known/oauth-protected-resource<path>`. `bearer_methods_supported`
219
+ * is `header`, the only method `mcpResourceGuard` reads. Any origin may read it.
220
+ */
221
+ export declare function protectedResourceMetadata(options: ProtectedResourceMetadataOptions): (request: Request) => Response;
222
+ //#endregion
169
223
  //#region src/mcp/subject.d.ts
170
224
  type McpSubjectOptions = Pick<JwtSubjectOptions, "claims" | "groupRoles" | "schema" | "delegation"> & {
171
225
  /** The `kind` of the actor built from `authInfo.clientId`; `'mcp-client'` when absent. Match `createPermDock`'s `actorKind`. */
@@ -183,4 +237,4 @@ type McpSubjectOptions = Pick<JwtSubjectOptions, "claims" | "groupRoles" | "sche
183
237
  */
184
238
  export declare function subjectFromMcp(authInfo: McpAuthInfo | undefined, options?: McpSubjectOptions): Subject<McpPrincipal>;
185
239
  //#endregion
186
- export type { DeniedText, DeniedTextEvent, GuardedMcpServer, McpAuthInfo, McpPermDock, McpPermDockOptions, McpPrincipal, McpProcedureEnforcement, McpProcedureToolConfig, McpPromptConfig, McpResourceConfig, McpSubjectOptions, McpToolConfig, ProcedureMcpServer };
240
+ export type { DeniedText, DeniedTextEvent, GuardedMcpServer, McpAuthInfo, McpPermDock, McpPermDockOptions, McpPrincipal, McpProcedureEnforcement, McpProcedureToolConfig, McpPromptConfig, McpResourceConfig, McpResourceGuardOptions, McpResourceGuardResult, McpSubjectOptions, McpToolConfig, McpUiResourceConfig, ProcedureMcpServer, ProtectedResourceMetadataOptions };