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
@@ -1,5 +1,5 @@
1
1
  import { r as requiredPlans } from "./problem-details-cn5X30gZ.js";
2
- import { t as describe } from "./describe-BybMRY7A.js";
2
+ import { t as describe } from "./describe-DZlnEtLy.js";
3
3
  //#region src/client/views.ts
4
4
  function permissionSet(store, permissions, data) {
5
5
  const granted = [];
@@ -0,0 +1,67 @@
1
+ import { j as WithX, k as AppDataSchema, n as ActionMeta } from "./permission-types-DhNEmoRG.js";
2
+ //#region src/core/vocabulary.d.ts
3
+ declare const ROLE_KIND: "role";
4
+ declare const PLAN_KIND: "plan";
5
+ /** `defineRoles` and `definePlans` options. */
6
+ type VocabularyOptions<X = never> = {
7
+ /**
8
+ * A Standard Schema for every leaf's `meta.x`, validated synchronously at
9
+ * definition time. On a role tree it also checks the `meta.x` of custom
10
+ * roles a `CustomRoleSource` returns; an invalid one is dropped, not the role.
11
+ */
12
+ readonly x?: AppDataSchema<X>;
13
+ };
14
+ /**
15
+ * A role's metadata. `audience` names the surface its holders use (`'staff'`,
16
+ * `'portal'`, `'platform'`); `permdock.audiences()` lists the distinct
17
+ * audiences of the roles held in the active scope.
18
+ */
19
+ type RoleMeta = ActionMeta & {
20
+ readonly audience?: string;
21
+ };
22
+ type Role<K extends string = string> = {
23
+ readonly key: K;
24
+ /** A declared scope name, or the `tenant` / `team` alias. */
25
+ readonly on?: string;
26
+ readonly assignable: boolean;
27
+ readonly meta: RoleMeta;
28
+ /** A shared custom role: the platform defines it for every tenant, and a tenant admin cannot edit it. */
29
+ readonly shared?: true;
30
+ readonly kind: typeof ROLE_KIND;
31
+ };
32
+ type Plan<K extends string = string> = {
33
+ readonly key: K;
34
+ readonly meta: ActionMeta;
35
+ readonly kind: typeof PLAN_KIND;
36
+ };
37
+ type RoleInit = {
38
+ /** A declared scope name, or the `tenant` / `team` alias. */
39
+ readonly on?: string;
40
+ readonly assignable?: boolean;
41
+ readonly meta?: RoleMeta;
42
+ };
43
+ type PlanInit = {
44
+ readonly meta?: ActionMeta;
45
+ };
46
+ type RoleTree = {
47
+ readonly [key: string]: Role;
48
+ };
49
+ type PlanTree = {
50
+ readonly [key: string]: Plan;
51
+ };
52
+ type Vocabulary = {
53
+ readonly permissions?: unknown;
54
+ readonly roles?: RoleTree;
55
+ readonly plans?: PlanTree;
56
+ };
57
+ type InferRoleTree<Input, X = never> = { readonly [K in keyof Input & string]: WithX<Role<K>, X>; };
58
+ type InferPlanTree<Input, X = never> = { readonly [K in keyof Input & string]: WithX<Plan<K>, X>; };
59
+ declare function isRole(value: unknown): value is Role;
60
+ declare function isPlan(value: unknown): value is Plan;
61
+ declare function defineRoles<const Input extends Record<string, RoleInit>, X = never>(input: Input, options?: VocabularyOptions<X>): InferRoleTree<Input, X>;
62
+ declare function definePlans<const Input extends Record<string, PlanInit>, X = never>(input: Input, options?: VocabularyOptions<X>): InferPlanTree<Input, X>;
63
+ declare function listRoles(tree: RoleTree | undefined): readonly Role[];
64
+ declare function listPlans(tree: PlanTree | undefined): readonly Plan[];
65
+ declare function findRole(tree: RoleTree | undefined, key: string): Role | undefined;
66
+ //#endregion
67
+ export { RoleTree as a, definePlans as c, isPlan as d, isRole as f, RoleMeta as i, defineRoles as l, listRoles as m, PlanTree as n, Vocabulary as o, listPlans as p, Role as r, VocabularyOptions as s, Plan as t, findRole as u };
@@ -1,10 +1,11 @@
1
- import { Mn as ApprovalRequiredDecision, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, nr as Membership } from "../policy-types-DzwivBgR.js";
2
- import { r as Role, w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
4
- import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-BZUsixiL.js";
1
+ import { Gt as Snapshot, In as ApprovalRequiredDecision, Ln as Decision, dt as TokenVerifier, or as Membership } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { r as Role } from "../vocabulary-Bg3eeT2H.js";
4
+ import { n as requiredPlans } from "../problem-details-Tcfmj3bV.js";
5
+ import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-O0SwYIK8.js";
5
6
  import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
6
7
  import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
7
- import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle, u as ProviderOptionsBase } from "../types-BNORmDM8.js";
8
+ import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle, u as ProviderOptionsBase } from "../types-CKV71kKh.js";
8
9
  import { ComputedRef, DefineComponent, MaybeRefOrGetter, Plugin, VNode } from "vue";
9
10
  //#region src/vue/types.d.ts
10
11
  type PermDockPluginOptions = ProviderOptionsBase & {
package/dist/vue/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
2
- import { t as describe } from "../describe-BybMRY7A.js";
2
+ import { t as describe } from "../describe-DZlnEtLy.js";
3
3
  import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
4
4
  import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
5
- import { i as isPromiseLike } from "../store-options-BqEakYRa.js";
6
- import { n as switchTenant, t as providerStore } from "../provider-store-B5Yrkhzr.js";
7
- import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, l as scopedTenant, n as describeWith, o as permissionSet, r as filterResult, s as protectedView, t as approvalHandle, u as slotContent } from "../views-DTIIO-oQ.js";
5
+ import { i as isPromiseLike } from "../store-options-B_poyYvg.js";
6
+ import { n as switchTenant, t as providerStore } from "../provider-store-IgqQipCO.js";
7
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, l as scopedTenant, n as describeWith, o as permissionSet, r as filterResult, s as protectedView, t as approvalHandle, u as slotContent } from "../views-BB8E9dTP.js";
8
8
  import { computed, defineComponent, effectScope, getCurrentScope, inject, isRef, onErrorCaptured, onScopeDispose, provide, shallowRef, toValue, watch } from "vue";
9
9
  //#region src/vue/context.ts
10
10
  const permDockKey = Symbol("permdock");
@@ -1,5 +1,5 @@
1
- import { Rt as Instant } from "./policy-types-DzwivBgR.js";
2
- import { m as ApprovalStore } from "./types-CCpc2Dcv.js";
1
+ import { Rt as Instant } from "./policy-types-B-F-qAZk.js";
2
+ import { m as ApprovalStore } from "./types-DC44-hqb.js";
3
3
  //#region src/workflow/waiter.d.ts
4
4
  type ApprovalWaitOptions = {
5
5
  /** When the approval request expires; the wait ends then whatever the store says. */
@@ -0,0 +1 @@
1
+ export { i as watchCollect } from "./watch-C-4VmFlL.js";
@@ -1,8 +1,8 @@
1
1
  import { i as dateAt } from "./time-DkWjdL98.js";
2
- import { a as describeError } from "./errors-CWTY6uih.js";
2
+ import { a as describeError } from "./errors-DpP_U6Bf.js";
3
3
  import { t as defaultSrcPath } from "./files-D_JIzUrP.js";
4
- import { r as runCollect } from "./collect-CrZJJnEF.js";
5
- import { n as isConfigFile, r as loadConfig } from "./config-bs_kZeYq.js";
4
+ import { r as runCollect } from "./collect-BaWeMjwV.js";
5
+ import { n as isConfigFile, r as loadConfig } from "./config-CoQHDrDi.js";
6
6
  import { watch } from "node:fs";
7
7
  import { basename, dirname, relative, resolve, sep } from "node:path";
8
8
  //#region src/cli/watch.ts
@@ -1,5 +1,5 @@
1
- import { Nn as Decision, Vt as Snapshot } from "../policy-types-DzwivBgR.js";
2
- import { E as PermissionTree, w as Permission } from "../vocabulary-D6lPdb4Z.js";
1
+ import { Gt as Snapshot, Ln as Decision } from "../policy-types-B-F-qAZk.js";
2
+ import { f as PermissionTree, u as Permission } from "../permission-types-DhNEmoRG.js";
3
3
  import { StandardSchemaV1 } from "@standard-schema/spec";
4
4
  //#region src/webmcp/types.d.ts
5
5
  type WebMcpClientStatus = "ready" | "pending" | "stale" | "server-only";
@@ -1,9 +1,9 @@
1
1
  import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as PermDockValidationError } from "../validation-error-ZfUHbKvf.js";
3
- import { c as listPermissions, f as resourceOfNode, i as getRegistry, m as annotationsFor, s as isRegistryTree } from "../permission-registry-Br4jSNVi.js";
3
+ import { c as listPermissions, f as resourceOfNode, i as getRegistry, m as annotationsFor, s as isRegistryTree } from "../permission-registry-DpPtSKNZ.js";
4
4
  import { n as isThenable, t as ignoreRejection } from "../thenable-yD7SabqG.js";
5
5
  import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
6
- import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-CMLN5xhn.js";
6
+ import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-reAhIzdl.js";
7
7
  //#region src/webmcp/register.ts
8
8
  const MISSING_CONTEXT = "permdock/webmcp: document.modelContext is absent; registerTools is a no-op.";
9
9
  const CURRENT = Symbol.for("permdock.current");
@@ -2,28 +2,36 @@ import { a as sole, r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { t as loadPrincipal } from "./principal-source-pHneukrx.js";
4
4
  import { g as secondsOf, m as rfc3339 } from "./time-DkWjdL98.js";
5
- import { d as scopeList, l as scopeChain, m as tenantOf, o as resolveScope, r as findScope, t as activeFor, u as scopeIdOf } from "./scopes-CUPSjo9q.js";
6
- import { a as readOnlyActorRefuses, n as coveredByDelegation } from "./delegation-DaXVdDhM.js";
5
+ import { d as scopeIdOf, f as scopeList, h as tenantOf, r as findScope, s as resolveScope, t as activeFor, u as scopeChain } from "./scopes-BHsc-wp-.js";
6
+ import { a as readOnlyActorRefuses, n as coveredByDelegation } from "./delegation-C5rOdTp5.js";
7
7
  import { r as readWireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
8
- import { o as resourceRoleCondition } from "./grantee-conditions-CcXf8hMM.js";
9
- import { c as nowSeconds, n as inTeam, o as membershipField, r as isMembershipExpired } from "./tenancy-DN2QAx9z.js";
10
- import { i as bindConditionRefs, n as parseSnapshot } from "./snapshot-CXUWfsNy.js";
8
+ import { o as resourceRoleCondition } from "./grantee-conditions-C6P1Tvol.js";
9
+ import { c as nowSeconds, n as inTeam, o as membershipField, r as isMembershipExpired } from "./tenancy-CmeBQ6Nv.js";
10
+ import { i as bindConditionRefs, n as parseSnapshot } from "./snapshot-CbGmYiJx.js";
11
11
  //#region src/core/snapshot-sign.ts
12
12
  /**
13
- * Signs `snapshot` as a `vnd.permdock.snapshot+jwt`. `issuedAt` and
14
- * `expiresAt` become `iat` and `exp` and leave the `snapshot` claim, so the
15
- * registered claims are the only times a verifier reads.
13
+ * The claims `signSnapshot` signs for `snapshot`. `issuedAt` and `expiresAt`
14
+ * become `iat` and `exp` and leave the `snapshot` claim, so the registered
15
+ * claims are the only times a verifier reads.
16
16
  */
17
- function signSnapshot(snapshot, signer, options = {}) {
17
+ function snapshotClaims(snapshot) {
18
18
  const { issuedAt, expiresAt, ...claim } = snapshot;
19
- const payload = { snapshot: claim };
20
- if (snapshot.subject.principal !== null) payload["sub"] = snapshot.subject.principal.id;
21
19
  const iat = secondsOf(issuedAt);
20
+ return compact({
21
+ snapshot: claim,
22
+ sub: snapshot.subject.principal?.id,
23
+ iat: iat === void 0 || iat <= 0 ? void 0 : iat,
24
+ exp: secondsOf(expiresAt)
25
+ });
26
+ }
27
+ /** Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims `snapshotClaims` answers. */
28
+ function signSnapshot(snapshot, signer, options = {}) {
29
+ const { iat, exp, ...payload } = snapshotClaims(snapshot);
22
30
  return signer.sign(payload, compact({
23
31
  typ: "vnd.permdock.snapshot+jwt",
24
32
  audience: options.audience,
25
- issuedAt: iat === void 0 || iat <= 0 ? void 0 : iat,
26
- expiresAt: secondsOf(expiresAt)
33
+ issuedAt: iat,
34
+ expiresAt: exp
27
35
  }));
28
36
  }
29
37
  /**
@@ -96,6 +104,22 @@ function delegationMayCover(permission, delegation, hasActor) {
96
104
  function blocksEveryRow(grant) {
97
105
  return grant.effect === "deny" && grant.where === void 0 && grant.check === void 0 && grant.portable !== false && grant.fields === void 0 && (grant.scope === void 0 || grant.scope === "tenant");
98
106
  }
107
+ function withinDelegation(permdock, permission, ceiling) {
108
+ return (ceiling === void 0 || ceiling.includes(permission.key)) && !readOnlyActorRefuses(permdock.subject.actor, permission) && delegationMayCover(permission, permdock.subject.delegation, permdock.subject.actor !== void 0 && ceiling === void 0);
109
+ }
110
+ /**
111
+ * Whether the subject's delegation, its delegated ceiling and a read-only
112
+ * actor leave `permission` within reach, whatever the grants say. A hint,
113
+ * never a decision.
114
+ */
115
+ function delegationAllows(permdock, permission) {
116
+ try {
117
+ const snapshot = permdock.snapshot();
118
+ return "grants" in snapshot && withinDelegation(permdock, permission, snapshot.delegated);
119
+ } catch {
120
+ return false;
121
+ }
122
+ }
99
123
  /**
100
124
  * Whether `permission` could be granted to this instance's subject for some
101
125
  * row: the grants its snapshot carries for the active tenant, minus an
@@ -105,10 +129,7 @@ function blocksEveryRow(grant) {
105
129
  function mayUse(permdock, permission) {
106
130
  try {
107
131
  const snapshot = permdock.snapshot();
108
- if (!("grants" in snapshot)) return false;
109
- const ceiling = snapshot.delegated;
110
- if (ceiling !== void 0 && !ceiling.includes(permission.key) || readOnlyActorRefuses(permdock.subject.actor, permission)) return false;
111
- if (!delegationMayCover(permission, permdock.subject.delegation, permdock.subject.actor !== void 0 && ceiling === void 0)) return false;
132
+ if (!("grants" in snapshot) || !withinDelegation(permdock, permission, snapshot.delegated)) return false;
112
133
  const tenant = permdock.subject.principal?.tenant;
113
134
  const scopes = scopeList(snapshot.scopes);
114
135
  const grants = snapshot.grants.filter((grant) => {
@@ -143,8 +164,7 @@ function permittedIds(permdock, permission, scope, options = {}) {
143
164
  if (!("grants" in snapshot)) return [];
144
165
  const scopes = scopeList(snapshot.scopes);
145
166
  const name = resolveScope(scopes, scope);
146
- const ceiling = snapshot.delegated;
147
- if (name === void 0 || ceiling !== void 0 && !ceiling.includes(permission.key) || readOnlyActorRefuses(permdock.subject.actor, permission) || !delegationMayCover(permission, permdock.subject.delegation, permdock.subject.actor !== void 0 && ceiling === void 0)) return [];
167
+ if (name === void 0 || !withinDelegation(permdock, permission, snapshot.delegated)) return [];
148
168
  const conditioned = options.conditioned === true;
149
169
  const now = nowSeconds();
150
170
  const allowed = /* @__PURE__ */ new Set();
@@ -183,7 +203,7 @@ function namedFilters(membership, scope) {
183
203
  if (findScope(scope.scopes, membership.scope ?? "") === void 0 || !inTeam(membership, scope.scopes, scope.team) || !activeFor(membership, scope.scopes, scope.tenant) || membership.scope === void 0) return null;
184
204
  const filters = [];
185
205
  for (const name of scopeChain(scope.scopes, membership.scope).toReversed()) {
186
- const key = scope.fieldOf?.(name) ?? findScope(scope.scopes, name)?.key;
206
+ const key = scope.fieldOf(name);
187
207
  if (key !== void 0 && scope.partitioned(name, key)) filters.push(eq(key, scopeIdOf(membership, name)));
188
208
  }
189
209
  return filters;
@@ -303,4 +323,4 @@ function whereFromGrants(grants, scope) {
303
323
  return freezeDeep(result);
304
324
  }
305
325
  //#endregion
306
- export { deniedFor as a, snapshotFromClaims as c, decideForTarget as i, mayUse as n, signSnapshot as o, permittedIds as r, snapshotClaim as s, whereFromGrants as t };
326
+ export { decideForTarget as a, snapshotClaim as c, permittedIds as i, snapshotClaims as l, delegationAllows as n, deniedFor as o, mayUse as r, signSnapshot as s, whereFromGrants as t, snapshotFromClaims as u };
@@ -2,15 +2,15 @@ import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { r as ownGet } from "./paths-DXSHAMIa.js";
4
4
  import { n as internalsOf } from "./internals-Dk8A8fX3.js";
5
- import { a as getResource } from "./permission-registry-Br4jSNVi.js";
5
+ import { a as getResource } from "./permission-registry-DpPtSKNZ.js";
6
6
  import { a as expandRelation, c as isEdgeRelation, l as isFieldRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
7
7
  import { s as instantAt } from "./time-DkWjdL98.js";
8
- import { a as normalizeMemberships, c as rootScope, d as scopeList, o as resolveScope } from "./scopes-CUPSjo9q.js";
9
- import { o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
10
- import { r as relationCondition } from "./grantee-conditions-CcXf8hMM.js";
11
- import { c as nowSeconds, p as scopeField } from "./tenancy-DN2QAx9z.js";
8
+ import { f as scopeList, l as rootScope, o as normalizeMemberships, s as resolveScope } from "./scopes-BHsc-wp-.js";
9
+ import { o as flattenGrantee } from "./grantee-BrRANrpT.js";
10
+ import { r as relationCondition } from "./grantee-conditions-C6P1Tvol.js";
11
+ import { c as nowSeconds, p as scopeField } from "./tenancy-CmeBQ6Nv.js";
12
12
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
13
- import { C as emptyListeners, t as evaluate } from "./evaluate-_R8QkWaf.js";
13
+ import { D as emptyListeners, t as evaluate } from "./evaluate-B_oqFbWC.js";
14
14
  import { n as relationId, t as pendingRelations } from "./relations-BnCWnJGI.js";
15
15
  import { t as relationWalk } from "./relation-walk-3OyDBF0S.js";
16
16
  //#region src/core/who-can.ts
@@ -1,5 +1,5 @@
1
- import { a as AutomationSource, i as AutomationRequest, l as memoryAutomationSource, n as AutomationDecision, r as AutomationMode, s as MemoryAutomationSource, t as Automation, u as parseAutomation } from "../automation-BMZPIVUM.js";
2
- import { i as pollingApprovalWaiter, n as ApprovalWaiter, r as PollingApprovalWaiterOptions, t as ApprovalWaitOptions } from "../waiter-CKy4MQSY.js";
3
- import { a as WorkflowPermDockOptions, i as WorkflowPermDock, n as AwaitApprovalOptions, o as createPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-BFfm17UA.js";
1
+ import { a as AutomationSource, i as AutomationRequest, l as memoryAutomationSource, n as AutomationDecision, r as AutomationMode, s as MemoryAutomationSource, t as Automation, u as parseAutomation } from "../automation-DOtAFWdy.js";
2
+ import { i as pollingApprovalWaiter, n as ApprovalWaiter, r as PollingApprovalWaiterOptions, t as ApprovalWaitOptions } from "../waiter-DwEyouan.js";
3
+ import { a as WorkflowPermDockOptions, i as WorkflowPermDock, n as AwaitApprovalOptions, o as createPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-QHuuPw3q.js";
4
4
  import "../index-CaxrMD1A.js";
5
5
  export { type ApprovalWaitOptions, type ApprovalWaiter, type Automation, type AutomationDecision, type AutomationMode, type AutomationOptions, type AutomationRequest, type AutomationSource, type AwaitApprovalOptions, type MemoryAutomationSource, type PollingApprovalWaiterOptions, type StartAutomationResult, type WorkflowPermDock, type WorkflowPermDockOptions, createPermDock, memoryAutomationSource, parseAutomation, pollingApprovalWaiter };
@@ -1,12 +1,12 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
- import { n as findPermission } from "../permission-registry-Br4jSNVi.js";
3
+ import { n as findPermission } from "../permission-registry-DpPtSKNZ.js";
4
4
  import { n as isThenable } from "../thenable-yD7SabqG.js";
5
- import { n as memoryAutomationSource, r as parseAutomation } from "../automation-DVjOckjV.js";
6
- import { c as withApp, t as getPermDock } from "../permdock-B9JxkBwC.js";
5
+ import { n as memoryAutomationSource, r as parseAutomation } from "../automation-ySsxp_Yp.js";
6
+ import { l as withApp, t as getPermDock } from "../permdock-BfWEeMqk.js";
7
7
  import { o as automationEvent } from "../sink-BEZSlMS_.js";
8
- import { a as requestApproval, s as resumeDecision } from "../helpers-DTcZOzhF.js";
9
- import { n as signRunTicket, r as subjectFromRunTicket } from "../run-ticket-sxFI6LAk.js";
8
+ import { a as requestApproval, s as resumeDecision } from "../helpers-DY3vXuGs.js";
9
+ import { i as subjectFromRunTicket, r as signRunTicket } from "../run-ticket-B5d_63Ma.js";
10
10
  import { t as pollingApprovalWaiter } from "../waiter-BGUtGYoU.js";
11
11
  //#region src/workflow/create.ts
12
12
  function writeQuietly(sink, event) {
@@ -1,8 +1,8 @@
1
- import { Nn as Decision } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "../permdock-D7eeLJER.js";
4
- import { n as ApprovalWaiter } from "../waiter-CKy4MQSY.js";
5
- import { i as WorkflowPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-BFfm17UA.js";
1
+ import { Ln as Decision } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
4
+ import { n as ApprovalWaiter } from "../waiter-DwEyouan.js";
5
+ import { i as WorkflowPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-QHuuPw3q.js";
6
6
  //#region src/workflow-sdk/index.d.ts
7
7
  /** The part of a Workflow SDK `Hook` the waiter reads: awaiting it suspends the run. */
8
8
  export type WorkflowSdkHook = {
@@ -1,5 +1,5 @@
1
- import { j as PolicyVocabulary } from "./policy-types-DzwivBgR.js";
2
- import { r as PermDock } from "./permdock-D7eeLJER.js";
1
+ import { j as PolicyVocabulary } from "./policy-types-B-F-qAZk.js";
2
+ import { a as PermDock } from "./permdock-Dco6dyCK.js";
3
3
  //#region src/core/wrap.d.ts
4
4
  /** A wrapper an adapter applies to each instance it builds, as `withOtel` does. */
5
5
  type PermDockWrap = <V extends PolicyVocabulary>(permdock: PermDock<V>) => PermDock<V>;
@@ -1,4 +1,5 @@
1
1
  import { n as internalsOf, t as attachInternals } from "./internals-Dk8A8fX3.js";
2
+ import { i as decideAllWith, n as canAllWith } from "./checks-BC_0mPIq.js";
2
3
  //#region src/core/wrap.ts
3
4
  /**
4
5
  * A frozen copy of `permdock` with the members `overrides` returns replaced.
@@ -7,9 +8,14 @@ import { n as internalsOf, t as attachInternals } from "./internals-Dk8A8fX3.js"
7
8
  */
8
9
  function wrapPermDock(permdock, overrides) {
9
10
  const wrap = (next) => wrapPermDock(next, overrides);
10
- const wrapped = {
11
+ const replaced = {
11
12
  ...permdock,
12
- ...overrides(permdock),
13
+ ...overrides(permdock)
14
+ };
15
+ const wrapped = {
16
+ ...replaced,
17
+ canAll: (checks, options) => canAllWith(replaced.can, checks, options),
18
+ decideAll: (checks, options) => decideAllWith(replaced.decide, checks, options),
13
19
  tenant: (id) => wrap(permdock.tenant(id)),
14
20
  team: (id) => wrap(permdock.team(id)),
15
21
  derive: async (options) => wrap(await permdock.derive(options))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "permdock",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Typed permissions for TypeScript apps, APIs, databases, and AI agents, with the permdock CLI and test runners.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -271,6 +271,14 @@
271
271
  "types": "./dist/testing/index.d.ts",
272
272
  "default": "./dist/testing/index.js"
273
273
  },
274
+ "./testing/core": {
275
+ "types": "./dist/testing/core.d.ts",
276
+ "default": "./dist/testing/core.js"
277
+ },
278
+ "./testing/fixtures": {
279
+ "types": "./dist/testing/fixtures/index.d.ts",
280
+ "default": "./dist/testing/fixtures/index.js"
281
+ },
274
282
  "./testing/saas": {
275
283
  "types": "./dist/testing/saas/index.d.ts",
276
284
  "default": "./dist/testing/saas/index.js"
@@ -299,26 +307,23 @@
299
307
  "types": "./dist/unplugin/index.d.ts",
300
308
  "default": "./dist/unplugin/index.js"
301
309
  },
302
- "./schemas/*": "./schemas/*"
310
+ "./schemas/*": "./schemas/*",
311
+ "./package.json": "./package.json"
303
312
  },
304
313
  "publishConfig": {
305
314
  "access": "public",
306
315
  "provenance": true
307
316
  },
308
317
  "dependencies": {
309
- "@clack/prompts": "1.8.1",
310
318
  "@standard-schema/spec": "1.1.0",
311
- "diff": "9.0.0",
312
- "fastest-levenshtein": "1.0.16",
313
319
  "jiti": "2.7.0",
314
- "oxc-parser": "0.154.0",
315
- "package-manager-detector": "1.9.0",
316
- "smol-toml": "1.9.1"
320
+ "oxc-parser": "0.154.0"
317
321
  },
318
322
  "devDependencies": {
319
323
  "@anthropic-ai/claude-agent-sdk": "0.3.301",
320
324
  "@arethetypeswrong/cli": "0.18.5",
321
325
  "@babel/core": "8.0.7",
326
+ "@clack/prompts": "1.8.1",
322
327
  "@modelcontextprotocol/client": "2.3.1",
323
328
  "@modelcontextprotocol/server": "2.3.1",
324
329
  "@nestjs/common": "12.1.3",
@@ -348,13 +353,15 @@
348
353
  "ajv": "8.20.0",
349
354
  "astro": "7.4.0",
350
355
  "babel-plugin-react-compiler": "1.0.0",
351
- "better-supabase": "0.9.0",
352
- "better-supabase-floor": "npm:better-supabase@0.9.0",
356
+ "better-supabase": "0.12.0",
357
+ "better-supabase-floor": "npm:better-supabase@0.11.0",
353
358
  "chat": "4.42.0",
359
+ "diff": "9.0.0",
354
360
  "drizzle-orm": "1.0.0-rc.5-5935859",
355
361
  "elysia": "1.4.30",
356
362
  "eve": "0.79.2",
357
363
  "express": "5.3.0",
364
+ "fastest-levenshtein": "1.0.16",
358
365
  "fastify": "5.12.7",
359
366
  "h3": "2.0.2",
360
367
  "happy-dom": "20.14.5",
@@ -364,6 +371,7 @@
364
371
  "next": "16.4.1",
365
372
  "oxlint": "1.88.0",
366
373
  "oxlint-tsgolint": "7.0.2004",
374
+ "package-manager-detector": "1.9.0",
367
375
  "pg": "8.23.1",
368
376
  "pgsql-parser": "18.2.12",
369
377
  "publint": "0.3.25",
@@ -372,6 +380,7 @@
372
380
  "reflect-metadata": "0.2.2",
373
381
  "resend": "6.33.0",
374
382
  "rxjs": "7.8.2",
383
+ "smol-toml": "1.9.1",
375
384
  "solid-js": "1.9.17",
376
385
  "svelte": "5.57.2",
377
386
  "temporal-polyfill": "1.0.6",
@@ -402,7 +411,7 @@
402
411
  "@trpc/server": ">=11",
403
412
  "ai": ">=5",
404
413
  "astro": ">=5",
405
- "better-supabase": ">=0.9.0 <0.10.0",
414
+ "better-supabase": ">=0.11.0 <0.13.0",
406
415
  "chat": ">=4",
407
416
  "drizzle-orm": ">=0.40 || >=1.0.0-rc.0",
408
417
  "elysia": ">=1",
@@ -556,6 +565,8 @@
556
565
  "bench": "vitest bench --run --project \"node (bench)\" --reporter=verbose",
557
566
  "build": "tsdown",
558
567
  "check:publish": "publint && pnpm pack --out pack.tgz && attw --profile esm-only pack.tgz && rm -f pack.tgz",
568
+ "gen": "node ../../scripts/testing-fixtures.ts",
569
+ "gen:check": "node ../../scripts/testing-fixtures.ts --check",
559
570
  "lint": "oxlint --disable-nested-config --type-aware",
560
571
  "test": "vitest run --coverage",
561
572
  "typecheck": "tsc --noEmit && tsc --noEmit -p tests/tsconfig.json"
@@ -77,6 +77,7 @@
77
77
  "dirty_worktree",
78
78
  "write_failed",
79
79
  "check_failed",
80
+ "catalog_invalid",
80
81
  "input_required",
81
82
  "consent_required",
82
83
  "cancelled",