permdock 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-BcudBQOF.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
  35. package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
  45. package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
  46. package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
  52. package/dist/catalog-D3oS2GH3.js +1 -0
  53. package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
  54. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  55. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  56. package/dist/catalog-operations-DeHTrJSV.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
  77. package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
  78. package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
  79. package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
  80. package/dist/collect-D-eroIfV.js +1 -0
  81. package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
  98. package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
  99. package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
  100. package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
  101. package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
  102. package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
  103. package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-DHldhVUv.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
  127. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  128. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
  130. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
  131. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-BFfzZSLH.js +58 -0
  150. package/dist/gen-BtfFWGbz.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  164. package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
  169. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  170. package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
  171. package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
  172. package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
  173. package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
  174. package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
  175. package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +34 -34
  178. package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
  179. package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +79 -26
  212. package/dist/next/index.js +121 -10
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
  223. package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
  224. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
  232. package/dist/output-files-BHOIlrfD.js +1 -0
  233. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  234. package/dist/ownership-DA5YdYTm.js +1059 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
  245. package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
  262. package/dist/powersync-B701tvhE.js +1 -0
  263. package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
  264. package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-D8x73IGm.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
  282. package/dist/pull-C3EEGzSw.js +1 -0
  283. package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
  284. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
  285. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-ConCSj1y.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
  306. package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
  310. package/dist/run-Ck22anC2.js +1 -0
  311. package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
  333. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  334. package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
  335. package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  344. package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  351. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-DZJvxFIZ.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
  357. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
  368. package/dist/supabase-hook-C0FyEACZ.js +1 -0
  369. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
  370. package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +225 -141
  394. package/dist/testing/index.js +352 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
  407. package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
  408. package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
  409. package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
  410. package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
  411. package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
  412. package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
  413. package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
  414. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  415. package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
  416. package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
  417. package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
  418. package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
  419. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  420. package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
  421. package/dist/types-tQB2CEnY.d.ts +262 -0
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-0hjZPIRX.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
  441. package/dist/watch-ClLuO2TL.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
  452. package/package.json +8 -8
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +16 -23
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -1,11 +1,14 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { t as assertAppData } from "./app-data-MuyzVqX8.js";
4
- import { d as isoNow, n as RFC3339_PATTERN } from "./time-DkWjdL98.js";
5
- import { n as requireEventInstant } from "./event-time-CsegxXxB.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { t as assertAppData } from "./app-data-UNNm07jV.js";
4
+ import { d as isoNow, n as RFC3339_PATTERN } from "./time-nR1JesoH.js";
5
+ import { n as requireEventInstant } from "./event-time-BGy48400.js";
6
6
  //#region src/core/event-schemas.ts
7
7
  const SCHEMA = "https://json-schema.org/draft/2020-12/schema";
8
- /** The URL each event family's schema is published at, and its CloudEvents `dataschema`. */
8
+ /**
9
+ * The URL each event family's schema is published at, and its CloudEvents
10
+ * `dataschema`.
11
+ */
9
12
  const EVENT_SCHEMA_IDS = Object.freeze({
10
13
  decision: "https://permdock.com/schemas/decision-event-v1.json",
11
14
  directory: "https://permdock.com/schemas/directory-event-v1.json",
@@ -671,7 +674,10 @@ const CLOUD_EVENT_TYPES = Object.freeze({
671
674
  deliveryComplained: "com.permdock.delivery.complained",
672
675
  deliveryFailed: "com.permdock.delivery.failed"
673
676
  });
674
- /** Types named for a later release; a receiver refuses them until then. None are reserved now. */
677
+ /**
678
+ * Types named for a later release; a receiver refuses them until then. None are
679
+ * reserved now.
680
+ */
675
681
  const RESERVED_CLOUD_EVENT_TYPES = Object.freeze([]);
676
682
  /** The CloudEvents JSON format media type for one event (structured mode). */
677
683
  const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
@@ -768,7 +774,10 @@ function cloudEventSubject(event) {
768
774
  if (event.type === "automation") return event.automation.id;
769
775
  return event.permission;
770
776
  }
771
- /** `x` as given, after checking it is a plain JSON object; a builder throws on bad input. */
777
+ /**
778
+ * `x` as given, after checking it is a plain JSON object; a builder throws on
779
+ * bad input.
780
+ */
772
781
  function checkedX(x) {
773
782
  if (x !== void 0) assertAppData(x, "x of a sink event");
774
783
  return x;
@@ -802,9 +811,9 @@ function automationEvent(input) {
802
811
  });
803
812
  }
804
813
  /**
805
- * The `access` event of a `SupportSession`: `started` when it begins,
806
- * `ended` when it lapses, `revoked` when it is ended early. `principal` is
807
- * the staff member, as for a support membership.
814
+ * The `access` event of a `SupportSession`: `started` when it begins, `ended`
815
+ * when it lapses, `revoked` when it is ended early. `principal` is the staff
816
+ * member, as for a support membership.
808
817
  */
809
818
  function supportSessionEvent(input) {
810
819
  const { session } = input;
@@ -829,8 +838,8 @@ function supportSessionEvent(input) {
829
838
  });
830
839
  }
831
840
  /**
832
- * A `credential` sink event for `credential`. `sample` belongs on `used`
833
- * events only and must be in `(0, 1]`.
841
+ * A `credential` sink event for `credential`. `sample` belongs on `used` events
842
+ * only and must be in `(0, 1]`.
834
843
  */
835
844
  function credentialEvent(input) {
836
845
  const sample = input.sample;
@@ -917,9 +926,9 @@ function toCloudEvent(event, options) {
917
926
  });
918
927
  }
919
928
  /**
920
- * Signs sink events as an offline evidence export: a compact JWS with
921
- * `typ: vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents.
922
- * Live deliveries use Standard Webhooks instead.
929
+ * Signs sink events as an offline evidence export: a compact JWS with `typ:
930
+ * vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents. Live
931
+ * deliveries use Standard Webhooks instead.
923
932
  */
924
933
  function signDecisionBatch(events, signer, options) {
925
934
  const source = options.source;
@@ -938,12 +947,14 @@ function memoryDecisionSink(options = {}) {
938
947
  buffer.push(...events);
939
948
  if (buffer.length > capacity) buffer.splice(0, buffer.length - capacity);
940
949
  if (options.signer === void 0) return;
941
- return signDecisionBatch(events, options.signer, compact({
942
- audience: options.audience,
943
- source: options.source
944
- })).then((batch) => {
945
- signed.push(batch);
946
- }).catch(() => void 0);
950
+ const { signer } = options;
951
+ const sign = async () => {
952
+ signed.push(await signDecisionBatch(events, signer, compact({
953
+ audience: options.audience,
954
+ source: options.source
955
+ })));
956
+ };
957
+ return sign().catch(() => void 0);
947
958
  },
948
959
  events() {
949
960
  return [...buffer];
@@ -1,7 +1,7 @@
1
1
  import { t as defineLeaf } from "./command-L8EstFNm.js";
2
- import { t as checkFlag } from "./flags-aaeRAdiD.js";
3
- import { r as pick, t as CANCELLED } from "./prompt-DwtVemER.js";
4
- import { n as detectedAgents, r as runSkills, t as SKILL_AGENTS } from "./skills-Dcjw9_1C.js";
2
+ import { t as checkFlag } from "./flags-DXjoTVbS.js";
3
+ import { r as pick, t as CANCELLED } from "./prompt-BYc6drYW.js";
4
+ import { n as detectedAgents, r as runSkills, t as SKILL_AGENTS } from "./skills-CQQcuGBi.js";
5
5
  //#region src/cli/commands/skills.ts
6
6
  const forFlag = { for: {
7
7
  type: "string",
@@ -1,7 +1,8 @@
1
- import { t as byCodePoint } from "./compare-pfyVnBjE.js";
2
- import { i as readJsonFile } from "./files-D_JIzUrP.js";
3
- import { t as packageRoot } from "./package-root-Dk_ETdkp.js";
4
- import { t as didYouMean } from "./args-CC3OwyHW.js";
1
+ import { t as byCodePoint } from "./compare-DTfyUunF.js";
2
+ import { i as readJsonFile } from "./files-BSjrtIHw.js";
3
+ import { l as packageRoot } from "./version-DMQ0dnN5.js";
4
+ import { t as didYouMean } from "./args-0FrVs5EH.js";
5
+ import { a as nonEmptyOr } from "./output-DV5dwOTs.js";
5
6
  import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, writeFileSync } from "node:fs";
6
7
  import { basename, dirname, join, relative, resolve } from "node:path";
7
8
  import { pathToFileURL } from "node:url";
@@ -24,7 +25,10 @@ const AGENT_FOLDERS = {
24
25
  };
25
26
  /** The `--for` names `skills install` knows, with the folder each writes. */
26
27
  const SKILL_AGENTS = AGENT_FOLDERS;
27
- /** Agents whose config folder (`.claude`, `.cursor`, `.agents`) the project already has. */
28
+ /**
29
+ * Agents whose config folder (`.claude`, `.cursor`, `.agents`) the project
30
+ * already has.
31
+ */
28
32
  function detectedAgents(cwd) {
29
33
  return Object.entries(AGENT_FOLDERS).filter(([, folder]) => existsSync(join(cwd, dirname(folder)))).map(([agent]) => agent);
30
34
  }
@@ -80,13 +84,13 @@ function runSkillsInstall(input) {
80
84
  const links = linked.length === 0 ? "" : `; linked ${linked.join(", ")}`;
81
85
  return {
82
86
  code: 0,
83
- output: `installed ${copied.join(", ") || "no skills"}${links} (permdock@${version})`
87
+ output: `installed ${nonEmptyOr(copied.join(", "), "no skills")}${links} (permdock@${version})`
84
88
  };
85
89
  }
86
90
  /**
87
91
  * Compares the installed skills with the ones this version ships and writes
88
- * nothing: exit 1 lists every file that is missing or differs. Without
89
- * agents it checks the agent folders the project has, else every folder.
92
+ * nothing: exit 1 lists every file that is missing or differs. Without agents
93
+ * it checks the agent folders the project has, else every folder.
90
94
  */
91
95
  function runSkillsCheck(input) {
92
96
  const source = resolveSkillsRoot(input.cwd, input.bundled ?? join(packageRoot(), "skills"));
@@ -1,12 +1,12 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
- import { a as resolveConditionRef, l as isConditionRef } from "./refs-CNJBiTFo.js";
5
- import { l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
6
- import { f as scopeList } from "./scopes-BHsc-wp-.js";
7
- import { _ as listPlans, v as listRoles } from "./grantee-BrRANrpT.js";
8
- import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
9
- import { m as tenantsOf } from "./tenancy-CmeBQ6Nv.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { n as isForbiddenKey } from "./paths-CUvURzHp.js";
4
+ import { a as resolveConditionRef, l as isConditionRef } from "./refs-C8BKxc_e.js";
5
+ import { l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-nR1JesoH.js";
6
+ import { f as scopeList } from "./scopes-0Up_UA2t.js";
7
+ import { _ as listPlans, v as listRoles } from "./grantee-Dke-9rd1.js";
8
+ import { i as wireValidity } from "./validity-Buc7w8E9.js";
9
+ import { m as tenantsOf } from "./tenancy-5d1zVBvK.js";
10
10
  import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
11
  //#region src/conditions/bind.ts
12
12
  function isPrimitive(value) {
@@ -36,10 +36,10 @@ function bindArg(arg, subject, only) {
36
36
  }
37
37
  /**
38
38
  * Replaces every `principal.*` / `context.*` ref with the subject's value, and
39
- * a `liveSession` node with a constant, so a `where()` result compiles the
40
- * same without the subject. A ref the subject
41
- * does not hold binds to `null` (or `[]` in a list), which never matches, as
42
- * in `evaluateCondition`. With `only`, refs it rejects stay refs.
39
+ * a `liveSession` node with a constant, so a `where()` result compiles the same
40
+ * without the subject. A ref the subject does not hold binds to `null` (or `[]`
41
+ * in a list), which never matches, as in `evaluateCondition`. With `only`, refs
42
+ * it rejects stay refs.
43
43
  */
44
44
  function bindConditionRefs(condition, subject, only) {
45
45
  switch (condition.op) {
@@ -141,7 +141,10 @@ const CARRIED = /* @__PURE__ */ new Set([
141
141
  "tenant",
142
142
  "memberships"
143
143
  ]);
144
- /** Principal refs the snapshot principal does not carry (`claims`, `teamIds`, …) are bound to the subject's values. */
144
+ /**
145
+ * Principal refs the snapshot principal does not carry (`claims`, `teamIds`, …)
146
+ * are bound to the subject's values.
147
+ */
145
148
  function isClaimRef(ref) {
146
149
  const [root, head] = ref.split(".", 2);
147
150
  return root === "principal" && !CARRIED.has(String(head));
@@ -229,10 +232,10 @@ function buildSnapshot(input) {
229
232
  }));
230
233
  }
231
234
  /**
232
- * The token delegation as the client sees it. An actor with no token
233
- * delegation gets an empty `scopes` list so the client ceiling agrees with
234
- * `no-delegation`, unless a policy delegation applies (`delegated`), which
235
- * then is the ceiling.
235
+ * The token delegation as the client sees it. An actor with no token delegation
236
+ * gets an empty `scopes` list so the client ceiling agrees with
237
+ * `no-delegation`, unless a policy delegation applies (`delegated`), which then
238
+ * is the ceiling.
236
239
  */
237
240
  function snapshotDelegation(subject, delegated) {
238
241
  const delegation = subject.delegation;
@@ -266,4 +269,4 @@ function parseSnapshot(json) {
266
269
  return freezeDeep(value);
267
270
  }
268
271
  //#endregion
269
- export { bindConditionRefs as i, parseSnapshot as n, snapshotGrant as r, buildSnapshot as t };
272
+ export { bindConditionRefs as a, snapshotGrant as i, parseSnapshot as n, plainPermission as r, buildSnapshot as t };
@@ -1,7 +1,10 @@
1
- import { Gt as Snapshot, Rt as Instant } from "./policy-types-B-F-qAZk.js";
1
+ import { Wt as Instant, Zt as Snapshot } from "./policy-types-DGIO_gxq.js";
2
2
  //#region src/core/snapshot-cache.d.ts
3
3
  type CacheLifeForOptions = {
4
- /** Lower bound in seconds. Next.js includes a private entry in per-link prefetches from 30. */
4
+ /**
5
+ * Lower bound in seconds. Next.js includes a private entry in per-link
6
+ * prefetches from 30.
7
+ */
5
8
  readonly min?: number;
6
9
  /** Upper bound in seconds. Next.js keeps a per-session App Shell entry from 300. */
7
10
  readonly max?: number;
@@ -9,9 +12,10 @@ type CacheLifeForOptions = {
9
12
  readonly now?: Instant;
10
13
  };
11
14
  /**
12
- * `{ stale }` in seconds: `max` when the value never expires, otherwise the seconds left, clamped
13
- * to `[min, max]`. A value with less than `min` seconds left gets its real remainder, so Next.js
14
- * leaves it out of prefetches and an HTTP cache does not serve it past `expiresAt`.
15
+ * `{ stale }` in seconds: `max` when the value never expires, otherwise the
16
+ * seconds left, clamped to `[min, max]`. A value with less than `min` seconds
17
+ * left gets its real remainder, so Next.js leaves it out of prefetches and an
18
+ * HTTP cache does not serve it past `expiresAt`.
15
19
  */
16
20
  declare function cacheLifeFor(value: {
17
21
  /** RFC 3339, or a NumericDate. */
@@ -22,13 +26,17 @@ declare function cacheLifeFor(value: {
22
26
  readonly stale: number;
23
27
  };
24
28
  /**
25
- * The `cacheTag` for one subject's cached snapshots: `permdock:<sub>`, or `permdock:anon`
26
- * without a subject. Tag the private cache with it and pass it to `updateTag` or
27
- * `revalidateTag` on every write that changes the subject's snapshot.
29
+ * The `cacheTag` for one subject's cached snapshots: `permdock:<sub>`, or
30
+ * `permdock:anon` without a subject. Tag the private cache with it and pass it
31
+ * to `updateTag` or `revalidateTag` on every write that changes the subject's
32
+ * snapshot.
28
33
  */
29
34
  declare function snapshotTag(sub?: string | null): string;
30
35
  type SnapshotHeadersOptions = CacheLifeForOptions & {
31
- /** Sent in `Cache-Tag` after `snapshotTag(sub)`, such as the app's own organisation tag. */
36
+ /**
37
+ * Sent in `Cache-Tag` after `snapshotTag(sub)`, such as the app's own
38
+ * organisation tag.
39
+ */
32
40
  readonly tags?: readonly string[];
33
41
  };
34
42
  type SnapshotHeaders = {
@@ -38,9 +46,10 @@ type SnapshotHeaders = {
38
46
  readonly "Cache-Tag": string;
39
47
  };
40
48
  /**
41
- * Response headers for a loader or route that returns `snapshot`: `Cache-Control: private` with
42
- * `max-age` from `cacheLifeFor`, `Vary: Authorization, Cookie`, an `ETag` over everything but
43
- * `issuedAt`, and `Cache-Tag` with `snapshotTag(sub)` and `tags`.
49
+ * Response headers for a loader or route that returns `snapshot`:
50
+ * `Cache-Control: private` with `max-age` from `cacheLifeFor`, `Vary:
51
+ * Authorization, Cookie`, an `ETag` over everything but `issuedAt`, and
52
+ * `Cache-Tag` with `snapshotTag(sub)` and `tags`.
44
53
  */
45
54
  declare function snapshotHeaders(snapshot: Snapshot, options?: SnapshotHeadersOptions): SnapshotHeaders;
46
55
  //#endregion
@@ -1,14 +1,15 @@
1
- import { g as secondsOf, p as nowSeconds } from "./time-DkWjdL98.js";
2
- import { n as payloadDigest } from "./token-2qYDvXz2.js";
1
+ import { g as secondsOf, p as nowSeconds } from "./time-nR1JesoH.js";
2
+ import { n as payloadDigest } from "./token-DC9EQiet.js";
3
3
  //#region src/core/snapshot-cache.ts
4
4
  /** Seconds since the epoch of a NumericDate or an RFC 3339 instant. */
5
5
  function epochSeconds(value) {
6
6
  return typeof value === "number" ? value : secondsOf(value);
7
7
  }
8
8
  /**
9
- * `{ stale }` in seconds: `max` when the value never expires, otherwise the seconds left, clamped
10
- * to `[min, max]`. A value with less than `min` seconds left gets its real remainder, so Next.js
11
- * leaves it out of prefetches and an HTTP cache does not serve it past `expiresAt`.
9
+ * `{ stale }` in seconds: `max` when the value never expires, otherwise the
10
+ * seconds left, clamped to `[min, max]`. A value with less than `min` seconds
11
+ * left gets its real remainder, so Next.js leaves it out of prefetches and an
12
+ * HTTP cache does not serve it past `expiresAt`.
12
13
  */
13
14
  function cacheLifeFor(value, options = {}) {
14
15
  const min = options.min ?? 30;
@@ -23,17 +24,19 @@ function cacheLifeFor(value, options = {}) {
23
24
  return { stale: Math.min(max, remaining) };
24
25
  }
25
26
  /**
26
- * The `cacheTag` for one subject's cached snapshots: `permdock:<sub>`, or `permdock:anon`
27
- * without a subject. Tag the private cache with it and pass it to `updateTag` or
28
- * `revalidateTag` on every write that changes the subject's snapshot.
27
+ * The `cacheTag` for one subject's cached snapshots: `permdock:<sub>`, or
28
+ * `permdock:anon` without a subject. Tag the private cache with it and pass it
29
+ * to `updateTag` or `revalidateTag` on every write that changes the subject's
30
+ * snapshot.
29
31
  */
30
32
  function snapshotTag(sub) {
31
33
  return `permdock:${sub === void 0 || sub === null || sub === "" ? "anon" : sub}`;
32
34
  }
33
35
  /**
34
- * Response headers for a loader or route that returns `snapshot`: `Cache-Control: private` with
35
- * `max-age` from `cacheLifeFor`, `Vary: Authorization, Cookie`, an `ETag` over everything but
36
- * `issuedAt`, and `Cache-Tag` with `snapshotTag(sub)` and `tags`.
36
+ * Response headers for a loader or route that returns `snapshot`:
37
+ * `Cache-Control: private` with `max-age` from `cacheLifeFor`, `Vary:
38
+ * Authorization, Cookie`, an `ETag` over everything but `issuedAt`, and
39
+ * `Cache-Tag` with `snapshotTag(sub)` and `tags`.
37
40
  */
38
41
  function snapshotHeaders(snapshot, options = {}) {
39
42
  const content = {};
@@ -1,11 +1,13 @@
1
- import { Gt as Snapshot, In as ApprovalRequiredDecision, Ln as Decision, Un as GrantedDecision, 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";
6
- import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
7
- import { t as approvalHeaders } from "../headers-CIbDTUTK.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";
1
+ import { Hn as ApprovalRequiredDecision, Un as Decision, Yn as GrantedDecision, Zt as Snapshot, fr as Membership, ht as TokenVerifier, j as PolicyVocabulary } from "../policy-types-DGIO_gxq.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { r as Role } from "../vocabulary-DEJ5j4mR.js";
4
+ import { d as UncheckedData, s as RowData } from "../permdock-CprAPN3w.js";
5
+ import { c as requiredPlans } from "../errors-BIM4MFsJ.js";
6
+ import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-BbFPBSms.js";
7
+ import { t as PermissionBoundaryState } from "../boundary-C9ck-3uK.js";
8
+ import { n as ProtectedAction, t as ActionResult } from "../action-result-BcudBQOF.js";
9
+ import { t as approvalHeaders } from "../headers-B9jQxjtW.js";
10
+ import { a as FilterResult, b as eventSourceRefresh, c as PermissionSet, d as ProtectedActionView, f as ProviderOptionsBase, h as TenantView, i as ClientStatus, l as PermissionState, m as SubjectView, n as ApprovalState, o as GateMode, p as RolesOptions, r as ClientPermDock, s as GateView, t as ApprovalHandle, v as EventSourceRefreshOptions, y as RefreshTrigger } from "../types-tQB2CEnY.js";
9
11
  import { Accessor, Accessor as Accessor$1, JSX } from "solid-js";
10
12
  //#region src/solid/types.d.ts
11
13
  /** Structural `JSX.Element`: text, a DOM node or a list of children. */
@@ -21,7 +23,10 @@ type PermDockProviderProps = ProviderOptionsBase & {
21
23
  readonly snapshot: Snapshot | string | Accessor$1<Snapshot | string | undefined> | PromiseLike<Snapshot | string>;
22
24
  /** A change switches the active tenant (`refresh({ tenant })`). */
23
25
  readonly tenant?: string;
24
- /** Read on every request, with `verifier`, so a rotated token applies without a new store. */
26
+ /**
27
+ * Read on every request, with `verifier`, so a rotated token applies without
28
+ * a new store.
29
+ */
25
30
  readonly headers?: Readonly<Record<string, string>>;
26
31
  readonly verifier?: TokenVerifier;
27
32
  /** What every `<Protected>` below renders for a slot it leaves out. */
@@ -51,12 +56,35 @@ type ProtectedProps = {
51
56
  readonly approval?: SolidChild | ((decision: ApprovalRequiredDecision) => SolidChild);
52
57
  readonly children: SolidChild | ((decision: GrantedDecision) => SolidChild);
53
58
  };
59
+ /**
60
+ * `useProtectedAction` in Solid: the fields of `ProtectedActionView` as
61
+ * accessors.
62
+ */
63
+ type ProtectedActionAccessors<T> = {
64
+ readonly gate: Accessor$1<GateView>;
65
+ readonly result: Accessor$1<ActionResult<T> | undefined>;
66
+ readonly pending: Accessor$1<boolean>;
67
+ readonly approval: Accessor$1<ApprovalHandle | undefined>;
68
+ readonly run: (input: unknown) => Promise<ActionResult<T>>;
69
+ readonly retry: () => Promise<ActionResult<T> | undefined>;
70
+ };
54
71
  //#endregion
55
72
  //#region src/solid/hooks.d.ts
56
- export declare function usePermDock(): ClientPermDock;
57
- export declare function usePermission(permission: Permission | Accessor<Permission>, data?: Accessor<unknown>): Accessor<PermissionState>;
73
+ export declare function usePermDock<V extends PolicyVocabulary = PolicyVocabulary>(): ClientPermDock<V>;
74
+ export declare function usePermission<D>(permission: Permission | Accessor<Permission>, data?: Accessor<UncheckedData<D>>): Accessor<PermissionState>;
75
+ export declare function usePermission<P extends Permission>(permission: P | Accessor<P>, data?: Accessor<RowData<P>>): Accessor<PermissionState>;
76
+ /**
77
+ * What a permission-gated control renders, as `useGate` in React: `hidden`,
78
+ * `disabled`, `needsApproval`, `upgrade` and a localised `reason`.
79
+ */
80
+ export declare function useGate<D>(permission: Permission | Accessor<Permission>, data?: Accessor<UncheckedData<D>>, options?: {
81
+ readonly mode?: GateMode;
82
+ }): Accessor<GateView>;
83
+ export declare function useGate<P extends Permission>(permission: P | Accessor<P>, data?: Accessor<RowData<P>>, options?: {
84
+ readonly mode?: GateMode;
85
+ }): Accessor<GateView>;
58
86
  export declare function usePermissions(permissions: Accessor<readonly Permission[]>, data?: Accessor<unknown>): Accessor<PermissionSet>;
59
- export declare function useFilter<T>(permission: Permission<string, T, "instance">, rows: Accessor<readonly T[]>): Accessor<FilterResult<T>>;
87
+ export declare function useFilter<T>(permission: Permission<string, NoInfer<T>, "instance">, rows: Accessor<readonly T[]>): Accessor<FilterResult<T>>;
60
88
  export declare function useTenant(): Accessor<TenantView>;
61
89
  export declare function useMemberships(): Accessor<readonly Membership[]>;
62
90
  export declare function useRoles(options?: Accessor<RolesOptions>): Accessor<{
@@ -72,13 +100,24 @@ export declare function useSubject(): Accessor<SubjectView>;
72
100
  export declare function useApproval(decision: Accessor<Decision>): Accessor<ApprovalHandle>;
73
101
  /** `describe` with the provider's `messages`; a call's own `messages` win. */
74
102
  export declare function useDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
103
+ /**
104
+ * A `protectAction` server action wired to a control, as `useProtectedAction`
105
+ * in React: accessors for `gate`, `result`, `pending` and `approval`, plus
106
+ * `run` and `retry`.
107
+ */
108
+ export declare function useProtectedAction<T, D>(action: ProtectedAction<T>, permission: Permission | Accessor<Permission>, data?: Accessor<UncheckedData<D>>, options?: {
109
+ readonly mode?: GateMode;
110
+ }): ProtectedActionAccessors<T>;
111
+ export declare function useProtectedAction<T, P extends Permission>(action: ProtectedAction<T>, permission: P | Accessor<P>, data?: Accessor<RowData<P>>, options?: {
112
+ readonly mode?: GateMode;
113
+ }): ProtectedActionAccessors<T>;
75
114
  //#endregion
76
115
  //#region src/solid/boundary.d.ts
77
116
  /**
78
117
  * Catches `PermDockDeniedError` and `PermDockApprovalRequiredError` thrown
79
- * below it and renders `denied`, or `approval` for an approval request
80
- * (default `denied`), with the refused permission and `retry()`. Any other
81
- * error goes to the next `ErrorBoundary` up.
118
+ * below it and renders `denied`, or `approval` for an approval request (default
119
+ * `denied`), with the refused permission and `retry()`. Any other error goes to
120
+ * the next `ErrorBoundary` up.
82
121
  */
83
122
  export declare function PermissionBoundary(props: PermissionBoundaryProps): JSX.Element;
84
123
  /** Inside a `PermissionBoundary` fallback: what was refused and `retry()`. */
@@ -90,4 +129,4 @@ export declare function Protected(props: ProtectedProps): JSX.Element;
90
129
  //#region src/solid/provider.d.ts
91
130
  export declare function PermDockProvider(props: PermDockProviderProps): JSX.Element;
92
131
  //#endregion
93
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SolidChild, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans };
132
+ export { type ActionResult, type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type EventSourceRefreshOptions, type FilterResult, type GateMode, type GateView, type PermDockDefaults, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedAction, type ProtectedActionAccessors, type ProtectedActionView, type ProtectedProps, type RefreshTrigger, type RolesOptions, type SolidChild, type SubjectView, type TenantView, approvalHeaders, describe, eventSourceRefresh, requiredPlans };
@@ -1,11 +1,11 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
3
- import { t as describe } from "../describe-DZlnEtLy.js";
4
- import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
5
- import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
6
- import { i as isPromiseLike } from "../store-options-B_poyYvg.js";
7
- import { n as switchTenant, t as providerStore } from "../provider-store-IgqQipCO.js";
8
- 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";
2
+ import { r as requiredPlans } from "../problem-details-CLDgX1KV.js";
3
+ import { n as describe } from "../describe-Bb4hGK5d.js";
4
+ import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BV3O1eud.js";
5
+ import { n as actionRunner, r as approvalHeaders, t as actionApproval } from "../protected-action-DUYqb-Ma.js";
6
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, i as gateView, l as scopedTenant, n as describeWith, o as permissionSet, r as filterResult, s as protectedView, t as approvalHandle, u as slotContent } from "../views-CD8wuL4Z.js";
7
+ import { a as isPromiseLike, r as eventSourceRefresh } from "../store-options-Dil3lraY.js";
8
+ import { n as switchTenant, t as providerStore } from "../provider-store-CaTv00tr.js";
9
9
  import { ErrorBoundary, createComponent, createComputed, createContext, createMemo, createSignal, getOwner, on, onCleanup, useContext } from "solid-js";
10
10
  //#region src/solid/context.ts
11
11
  const PermDockContext = createContext(void 0);
@@ -42,6 +42,16 @@ function usePermission(permission, data) {
42
42
  return store.permissionState(current, data?.());
43
43
  });
44
44
  }
45
+ function useGate(permission, data, options = {}) {
46
+ const store = useStore();
47
+ const version = useVersion(store);
48
+ const describeDecision = useDescribe();
49
+ return createMemo(() => {
50
+ version();
51
+ const current = typeof permission === "function" ? permission() : permission;
52
+ return gateView(store.permissionState(current, data?.()), (decision) => describeDecision(decision, { permission: current }), options.mode);
53
+ });
54
+ }
45
55
  function usePermissions(permissions, data) {
46
56
  const store = useStore();
47
57
  const version = useVersion(store);
@@ -91,14 +101,37 @@ function useDescribe() {
91
101
  const ui = useContext(PermDockUiContext);
92
102
  return (decision, options) => describeWith(ui.messages)(decision, options);
93
103
  }
104
+ function useProtectedAction(action, permission, data, options = {}) {
105
+ const store = useStore();
106
+ const version = useVersion(store);
107
+ const gate = useGate(permission, data, options);
108
+ const [state, setState] = createSignal({
109
+ result: void 0,
110
+ pending: false
111
+ });
112
+ const runner = actionRunner(() => action, (next) => {
113
+ setState(next);
114
+ });
115
+ return {
116
+ gate,
117
+ result: () => state().result,
118
+ pending: () => state().pending,
119
+ approval: createMemo(() => {
120
+ version();
121
+ return actionApproval(store, state().result);
122
+ }),
123
+ run: runner.run,
124
+ retry: runner.retry
125
+ };
126
+ }
94
127
  //#endregion
95
128
  //#region src/solid/boundary.ts
96
129
  const BoundaryContext = createContext(null);
97
130
  /**
98
131
  * Catches `PermDockDeniedError` and `PermDockApprovalRequiredError` thrown
99
- * below it and renders `denied`, or `approval` for an approval request
100
- * (default `denied`), with the refused permission and `retry()`. Any other
101
- * error goes to the next `ErrorBoundary` up.
132
+ * below it and renders `denied`, or `approval` for an approval request (default
133
+ * `denied`), with the refused permission and `retry()`. Any other error goes to
134
+ * the next `ErrorBoundary` up.
102
135
  */
103
136
  function PermissionBoundary(props) {
104
137
  return createComponent(ErrorBoundary, {
@@ -164,7 +197,8 @@ function PermDockProvider(props) {
164
197
  maxAge: props.maxAge,
165
198
  onSnapshot: props.onSnapshot,
166
199
  onClear: props.onClear,
167
- approvalInterval: props.approvalInterval
200
+ approvalInterval: props.approvalInterval,
201
+ refreshOn: props.refreshOn
168
202
  }), () => ({
169
203
  headers: props.headers,
170
204
  fetch: props.fetch,
@@ -215,4 +249,4 @@ function uiProvider(ui, props) {
215
249
  });
216
250
  }
217
251
  //#endregion
218
- export { PermDockProvider, PermissionBoundary, Protected, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useMemberships, usePermDock, usePermission, usePermissionBoundary, usePermissions, useRoles, useSubject, useTenant };
252
+ export { PermDockProvider, PermissionBoundary, Protected, approvalHeaders, describe, eventSourceRefresh, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissionBoundary, usePermissions, useProtectedAction, useRoles, useSubject, useTenant };
@@ -1,9 +1,9 @@
1
- import { Gt as Snapshot, T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
- import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
- import { a as OperationInput, t as Operation } from "../operations-BNLes61x.js";
4
- import { a as PermDock } from "../permdock-Dco6dyCK.js";
5
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
6
- import { a as ProtectTarget, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-CuhyYwC1.js";
1
+ import { T as Policy, Zt as Snapshot, j as PolicyVocabulary, pr as Principal } from "../policy-types-DGIO_gxq.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as OperationInput, t as Operation } from "../operations-Ci_rT6Uo.js";
4
+ import { a as PermDock } from "../permdock-CprAPN3w.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CyRN0-Cd.js";
6
+ import { a as ProtectTarget, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-BIbBAtPZ.js";
7
7
  import { APIEvent, FetchEvent } from "@solidjs/start/server";
8
8
  //#region src/solid-start/create.d.ts
9
9
  /** The h3 event under every SolidStart request; `subject` and `scope` read it. */
@@ -16,7 +16,10 @@ type SolidStartPermDockLocals<TData = unknown, V extends PolicyVocabulary = Poli
16
16
  readonly permdock: PermDock<V>;
17
17
  readonly permdockData: TData;
18
18
  };
19
- /** The event a wrapped API route receives: its own `APIEvent` with typed `locals`. */
19
+ /**
20
+ * The event a wrapped API route receives: its own `APIEvent` with typed
21
+ * `locals`.
22
+ */
20
23
  type SolidStartPermDockEvent<TEvent extends FetchEvent = APIEvent, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TEvent & {
21
24
  readonly locals: SolidStartPermDockLocals<TData, V>;
22
25
  };
@@ -32,18 +35,33 @@ type SolidStartPermDockHandlers = {
32
35
  readonly POST: (event: FetchEvent) => Promise<Response>;
33
36
  };
34
37
  type SolidStartPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
35
- /** Sets `event.context.permdock` on the h3 event; a bad Web Bot Auth signature is a `401`. */
38
+ /**
39
+ * Sets `event.context.permdock` on the h3 event; a bad Web Bot Auth
40
+ * signature is a `401`.
41
+ */
36
42
  readonly middleware: () => SolidStartMiddleware;
37
- /** `export const DELETE = protect(permissions.post.delete, loadPost)(handler)`. */
43
+ /**
44
+ * `export const DELETE = protect(permissions.post.delete,
45
+ * loadPost)(handler)`.
46
+ */
38
47
  readonly protect: SolidStartProtect<V>;
39
- /** Types `event.locals.permdock` for an API route and answers a thrown PermDock error with Problem Details. */
48
+ /**
49
+ * Types `event.locals.permdock` for an API route and answers a thrown
50
+ * PermDock error with Problem Details.
51
+ */
40
52
  readonly withPermDock: SolidStartGuarded<unknown, V>;
41
- /** The instance for an API route, or a server function through `getRequestEvent()`. */
53
+ /**
54
+ * The instance for an API route, or a server function through
55
+ * `getRequestEvent()`.
56
+ */
42
57
  readonly getPermDock: (event: FetchEvent) => Promise<PermDock<V>>;
43
58
  /** The snapshot a route `query` returns for `permdock/solid`. */
44
59
  readonly getSnapshot: (event: FetchEvent, query?: SnapshotQuery) => Promise<Snapshot>;
45
60
  readonly connection: (event: FetchEvent, connectionOptions?: ConnectionOptions) => Promise<Connection>;
46
- /** `export const { GET, POST } = permdockHandler()` in `src/routes/api/permdock.ts`. */
61
+ /**
62
+ * `export const { GET, POST } = permdockHandler()` in
63
+ * `src/routes/api/permdock.ts`.
64
+ */
47
65
  readonly permdockHandler: () => SolidStartPermDockHandlers;
48
66
  readonly openapi: OpenApiHooks;
49
67
  };
@@ -1,6 +1,6 @@
1
- import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
2
- import { i as decorate } from "../bind-D1nO6fiC.js";
3
- import { n as guardedRoute, t as fetchAdapter } from "../fetch-adapter-De-u6vhJ.js";
1
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
2
+ import { i as decorate } from "../bind-BNQA9JK9.js";
3
+ import { n as guardedRoute, t as fetchAdapter } from "../fetch-adapter-dPTgJVHd.js";
4
4
  //#region src/solid-start/create.ts
5
5
  /**
6
6
  * `event.locals`. Its type, `App.RequestEventLocals`, is declared by