permdock 0.7.0 → 0.8.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-CL-QCITA.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-BLs67P1l.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-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  14. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  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-3RhGfkAK.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.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-BAkBDMqn.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-DqEoWHBc.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-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  35. package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
  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-CNWaYJyr.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
  45. package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
  46. package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
  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-BFpz2EmT.js} +20 -19
  52. package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
  53. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  54. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  55. package/dist/catalog-mRQQQhNK.js +1 -0
  56. package/dist/catalog-operations-Dadrl7Z-.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-BFlGMaak.js} +4 -5
  77. package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
  78. package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
  79. package/dist/collect-B5BL3klN.js +1 -0
  80. package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
  81. package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
  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-BFzysW3o.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.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-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
  98. package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
  99. package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
  100. package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
  101. package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
  102. package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
  103. package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
  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-CHNlVInN.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.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-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  127. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  128. package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
  130. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  131. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
  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-C1DCvpqV.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.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-B5kvbAoZ.js +58 -0
  150. package/dist/gen-DWCYcMQM.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-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
  164. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -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-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  169. package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
  170. package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
  171. package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
  172. package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
  173. package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
  174. package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
  175. package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +33 -33
  178. package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
  179. package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
  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-C-fYydV2.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-D-8tMqzo.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.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-BNWCJtmP.js} +14 -8
  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 +72 -26
  212. package/dist/next/index.js +110 -6
  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-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  223. package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
  224. package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
  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-files-BHOIlrfD.js +1 -0
  232. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  233. package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
  234. package/dist/ownership-B4L59T9u.js +1054 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-BQhTlLQS.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-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
  245. package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
  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-mDcTWoBs.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-Ba4bDhaj.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-CJgOm6aq.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-CCiDRZBH.d.ts} +738 -349
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
  262. package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
  263. package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
  264. package/dist/powersync-Djf-zCpB.js +1 -0
  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-BE7N_Luo.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-DXfq5c2d.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/pull-B65ndFNZ.js +1 -0
  282. package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
  283. package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
  284. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  285. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
  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-DNftIb_R.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.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-CF7xXLSG.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-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
  306. package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
  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-fNqAIqQk.js} +8 -5
  310. package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
  311. package/dist/run-D-JE8QWb.js +1 -0
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.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-iWnUdwCt.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.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-CIlpSA2G.d.ts} +81 -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-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  333. package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  334. package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
  335. package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.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-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
  344. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  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-DZ0l9UAg.js} +190 -100
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  351. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  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-C0Kta5Ft.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  357. package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  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-BL1qJzzY.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
  368. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
  369. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  370. package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
  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-DeMNEy6V.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 +224 -141
  394. package/dist/testing/index.js +299 -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-BIPIDa6a.d.ts +50 -0
  407. package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
  408. package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
  409. package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
  410. package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
  411. package/dist/types-B_d_g7T3.d.ts +262 -0
  412. package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
  413. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  414. package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
  415. package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
  416. package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
  417. package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  418. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  419. package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
  420. package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
  421. package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-CYeXek0p.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.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-YGg2mXyH.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-DZeqoWu5.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-Bu9zAlE0.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
  441. package/dist/watch-DB42U1ib.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-rI7dCR9Q.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-DlJE3gS_.d.ts} +8 -5
  452. package/package.json +7 -7
  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 +14 -22
  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,8 +1,8 @@
1
- import { Q as LimitStore, Rt as Instant, Zn as Actor, it as RelationSource, lr as Subject, or as Membership, rr as Delegation, sr as Principal, tr as CustomRole } from "../../policy-types-B-F-qAZk.js";
2
- import { u as Permission } from "../../permission-types-DhNEmoRG.js";
3
- import { o as PermDockOptions } from "../../permdock-Dco6dyCK.js";
4
- import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-CoqCOfJ3.js";
5
- import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-B7dg_yzu.js";
1
+ import { Q as LimitStore, Rt as Instant, Zn as Actor, it as RelationSource, lr as Subject, or as Membership, rr as Delegation, sr as Principal, tr as CustomRole } from "../../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../../permission-types-CAY-GU7e.js";
3
+ import { o as PermDockOptions } from "../../permdock-B6Sf4T_S.js";
4
+ import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-Bx6UI8n1.js";
5
+ import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-Ba4bDhaj.js";
6
6
  import { StandardSchemaV1 } from "@standard-schema/spec";
7
7
  //#region src/testing/saas/schema.d.ts
8
8
  type FieldKind = "string" | "boolean" | "nullable-string";
@@ -53,6 +53,7 @@ type SaasSeed = {
53
53
  export declare const SAAS_EXPIRED_AT = 1e9;
54
54
  /**
55
55
  * Users, one hazard each:
56
+ *
56
57
  * - alice: admin in acme, viewer in globex (different role per org)
57
58
  * - bob: member in acme (owns p1, p3, p4)
58
59
  * - carol: owner in acme
@@ -62,16 +63,21 @@ export declare const SAAS_EXPIRED_AT = 1e9;
62
63
  * - mallory: no memberships at all
63
64
  * - gina: `lead` of team-a in acme
64
65
  * - hank: viewer in acme, `collaborator` on project p3 only
65
- * - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one instant
66
+ * - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one
67
+ * instant
66
68
  * - tina: member of `tenant-1`; `Date.parse('org-1') === Date.parse('tenant-1')`
67
- * - ivan: viewer in acme who holds the team role `lead` on the tenant membership (the wrong scope)
69
+ * - ivan: viewer in acme who holds the team role `lead` on the tenant membership
70
+ * (the wrong scope)
68
71
  *
69
72
  * Acme's folders: `root` ─ `eng` ─ `platform` ─ `infra`, and `root` ─ `hr`
70
73
  * (restricted) ─ `payroll`. bob views `root`, hank views `hr`, gina edits
71
74
  * `eng`, frank's view of `root` expired.
72
75
  */
73
76
  export declare const saasSeed: SaasSeed;
74
- /** The seed's folder tree and shares as a `RelationSource`, for `createPermDock({ relations })`. */
77
+ /**
78
+ * The seed's folder tree and shares as a `RelationSource`, for
79
+ * `createPermDock({ relations })`.
80
+ */
75
81
  export declare function saasRelations(seed?: SaasSeed): RelationSource;
76
82
  /** Every user id in the seed. */
77
83
  export declare const saasUsers: readonly string[];
@@ -81,18 +87,18 @@ export declare function saasMemberships(user: string, members?: readonly SaasMem
81
87
  /** Custom roles of every org, as `createPermDock({ customRoles })` expects. */
82
88
  export declare const saasCustomRoles: readonly CustomRole[];
83
89
  /**
84
- * The principal for `user`, with the plans of the requested `tenant`'s org.
85
- * The tenant itself is passed to `createPermDock({ tenant })`, never trusted
86
- * from here.
90
+ * The principal for `user`, with the plans of the requested `tenant`'s org. The
91
+ * tenant itself is passed to `createPermDock({ tenant })`, never trusted from
92
+ * here.
87
93
  */
88
94
  export declare function saasPrincipal(user: string, tenant?: string): Principal;
89
95
  //#endregion
90
96
  //#region src/testing/saas/sql.d.ts
91
97
  /**
92
- * Postgres tables for the SaaS domain. Column names match the resource
93
- * fields (`"orgId"`, `"ownerId"`) so generated RLS and ORM filters compile
94
- * against them without a column map. RLS is enabled and forced on the row
95
- * tables; policies come from `permdock rls generate`.
98
+ * Postgres tables for the SaaS domain. Column names match the resource fields
99
+ * (`"orgId"`, `"ownerId"`) so generated RLS and ORM filters compile against
100
+ * them without a column map. RLS is enabled and forced on the row tables;
101
+ * policies come from `permdock rls generate`.
96
102
  */
97
103
  export declare const saasSchemaSql = "\ncreate table org (\n id text primary key,\n name text not null,\n plan text not null check (plan in ('free', 'pro'))\n);\ncreate table org_member (\n user_id text not null,\n org_id text references org (id),\n team_id text,\n resource text,\n resource_id text,\n role text not null,\n expires_at bigint\n);\ncreate table project (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"ownerId\" text not null,\n name text not null,\n archived boolean not null default false\n);\nalter table project enable row level security;\nalter table project force row level security;\ncreate table doc (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"teamId\" text,\n title text not null,\n locked boolean not null default false\n);\nalter table doc enable row level security;\nalter table doc force row level security;\ncreate table folder (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"parentId\" text references folder (id),\n name text not null,\n restricted boolean not null default false\n);\nalter table folder enable row level security;\nalter table folder force row level security;\ncreate table folder_share (\n folder_id text not null references folder (id) on delete cascade,\n user_id text not null,\n expires_at timestamptz\n);\ncreate table folder_editor (\n folder_id text not null references folder (id) on delete cascade,\n user_id text not null\n);\n";
98
104
  /** `insert` statements for a seed; the default is the full shared seed. */
@@ -119,7 +125,10 @@ export declare const saasIssuer = "https://saas.permdock.test";
119
125
  export declare const saasAudience = "permdock-saas";
120
126
  export declare const SAAS_TOKEN_TTL_SECONDS = 3600;
121
127
  type SaasTokenOptions = {
122
- /** Claim memberships; `false` omits the claim (database mode). Defaults to the seed. */
128
+ /**
129
+ * Claim memberships; `false` omits the claim (database mode). Defaults to the
130
+ * seed.
131
+ */
123
132
  readonly memberships?: readonly Membership[] | false;
124
133
  readonly ttl?: number;
125
134
  /** The instant used for `iat`; defaults to the current time. */
@@ -131,9 +140,9 @@ type SaasTokenOptions = {
131
140
  /** Signs an ES256 access token for `sub` with WebCrypto; no dependency. */
132
141
  export declare function signSaasToken(sub: string, options?: SaasTokenOptions): Promise<string>;
133
142
  /**
134
- * Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`)
135
- * and returns its `sub`, or `null`; never throws. Identity only: memberships
136
- * and plans come from the seed, never from the token.
143
+ * Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`) and
144
+ * returns its `sub`, or `null`; never throws. Identity only: memberships and
145
+ * plans come from the seed, never from the token.
137
146
  */
138
147
  export declare function verifySaasToken(token: string | null | undefined, now?: Instant): Promise<string | null>;
139
148
  /** `verifySaasToken` plus the token's `exp` as `expiresAt` (epoch seconds). */
@@ -162,8 +171,8 @@ type SaasScenario = {
162
171
  */
163
172
  readonly client?: boolean;
164
173
  /**
165
- * The client outcome when it is stricter than the server's: a snapshot
166
- * cannot evaluate a closure deny, so it fails closed.
174
+ * The client outcome when it is stricter than the server's: a snapshot cannot
175
+ * evaluate a closure deny, so it fails closed.
167
176
  */
168
177
  readonly clientOutcome?: SaasOutcome;
169
178
  /** An agent acting for `user`; without `delegation` it reaches nothing. */
@@ -172,23 +181,30 @@ type SaasScenario = {
172
181
  /** Units of the daily api-key quota this subject already used in the tenant. */
173
182
  readonly quotaUsed?: number;
174
183
  };
175
- /** What the policy's `subject` receives: the principal, or a `Subject` carrying the actor. */
184
+ /**
185
+ * What the policy's `subject` receives: the principal, or a `Subject` carrying
186
+ * the actor.
187
+ */
176
188
  export declare function saasUser(scenario: SaasScenario): Principal | Subject;
177
189
  /** A memory quota store in which every subject has already used `used` units. */
178
190
  export declare function saasLimitStore(used?: number): LimitStore;
179
- /** The `createPermDock` options a scenario runs with: tenant, custom roles, quota and folder tree. */
191
+ /**
192
+ * The `createPermDock` options a scenario runs with: tenant, custom roles,
193
+ * quota and folder tree.
194
+ */
180
195
  export declare function saasScenarioOptions(scenario: SaasScenario): PermDockOptions;
181
196
  export declare function saasProject(id: string): SaasProject;
182
197
  export declare function saasDoc(id: string): SaasDoc;
183
198
  export declare function saasFolder(id: string): SaasFolder;
184
199
  /**
185
- * The folder tree, decided with `createPermDock({ relations: saasRelations() })`.
186
- * A snapshot carries no graph, so every graph grant is server-only on a client.
200
+ * The folder tree, decided with `createPermDock({ relations: saasRelations()
201
+ * })`. A snapshot carries no graph, so every graph grant is server-only on a
202
+ * client.
187
203
  */
188
204
  export declare const saasFolderScenarios: readonly SaasScenario[];
189
205
  /**
190
- * Hand-written expectations. Never derive `expected` from the engine: the
191
- * list is the oracle every adapter, ORM and client suite runs against.
206
+ * Hand-written expectations. Never derive `expected` from the engine: the list
207
+ * is the oracle every adapter, ORM and client suite runs against.
192
208
  */
193
209
  export declare const saasScenarios: readonly SaasScenario[];
194
210
  //#endregion
@@ -1,3 +1,3 @@
1
- import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-DArULThq.js";
2
- import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-Az_Kz-4D.js";
1
+ import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-mDcTWoBs.js";
2
+ import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-iWnUdwCt.js";
3
3
  export { SAAS_API_KEY_LIMIT, SAAS_EXPIRED_AT, SAAS_TOKEN_TTL_SECONDS, SaasDocSchema, SaasFolderSchema, SaasProjectSchema, rowSchema, saasAudience, saasCustomRoles, saasDoc, saasFolder, saasFolderScenarios, saasIssuer, saasJwks, saasLimitStore, saasMemberships, saasOrg, saasPermissions, saasPlans, saasPolicy, saasPrincipal, saasPrivateJwk, saasProject, saasPublicJwk, saasRelations, saasRoles, saasScenarioOptions, saasScenarios, saasSchemaSql, saasSeed, saasSeedSql, saasTenantRoleNames, saasUser, saasUsers, signSaasToken, verifySaasSession, verifySaasToken };
@@ -1,2 +1,2 @@
1
- import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-CoqCOfJ3.js";
1
+ import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-Bx6UI8n1.js";
2
2
  export { SaasDoc, SaasDocSchema, SaasFolder, SaasFolderSchema, SaasProject, SaasProjectSchema, saasPermissions, saasPlans, saasRoles, saasTenantRoleNames };
@@ -1 +1 @@
1
- export { t as SaasDocSchema, n as SaasFolderSchema, r as SaasProjectSchema, i as saasPermissions, a as saasPlans, o as saasRoles, s as saasTenantRoleNames } from "../../permissions-DArULThq.js";
1
+ export { t as SaasDocSchema, n as SaasFolderSchema, r as SaasProjectSchema, i as saasPermissions, a as saasPlans, o as saasRoles, s as saasTenantRoleNames } from "../../permissions-mDcTWoBs.js";
@@ -431,8 +431,8 @@ function splitLines(text) {
431
431
  //#region src/cli/core/text-diff.ts
432
432
  const MAX_LINES = 40;
433
433
  /**
434
- * A unified diff from the file on disk to what the command would write,
435
- * cut to the first {@link MAX_LINES} lines so a CI log stays readable.
434
+ * A unified diff from the file on disk to what the command would write, cut to
435
+ * the first {@link MAX_LINES} lines so a CI log stays readable.
436
436
  */
437
437
  function shortDiff(file, onDisk, next) {
438
438
  const lines = createTwoFilesPatch(`${file} (on disk)`, `${file} (generated)`, onDisk, next, void 0, void 0, { context: 2 }).split("\n").filter((line) => !line.startsWith("=====")).filter((line, index, all) => line !== "" || index < all.length - 1);
@@ -3,11 +3,17 @@ import { r as isRecord } from "./compact-CAf557ZB.js";
3
3
  function isThenable(value) {
4
4
  return value !== null && typeof value === "object" && "then" in value && typeof value.then === "function";
5
5
  }
6
- /** Settles a promise nobody awaits, so its rejection is not reported as unhandled. */
6
+ /**
7
+ * Settles a promise nobody awaits, so its rejection is not reported as
8
+ * unhandled.
9
+ */
7
10
  function ignoreRejection(value) {
8
11
  Promise.resolve(value).then(void 0, () => void 0);
9
12
  }
10
- /** Runs a Standard Schema that must answer synchronously; an asynchronous answer fails. */
13
+ /**
14
+ * Runs a Standard Schema that must answer synchronously; an asynchronous answer
15
+ * fails.
16
+ */
11
17
  function validateSync(schema, value) {
12
18
  const result = schema["~standard"].validate(value);
13
19
  if (isThenable(result)) {
@@ -22,7 +28,10 @@ function validateSync(schema, value) {
22
28
  issues: result.issues
23
29
  };
24
30
  }
25
- /** `validateSync` for a schema whose output must be an object; anything else is `undefined`. */
31
+ /**
32
+ * `validateSync` for a schema whose output must be an object; anything else is
33
+ * `undefined`.
34
+ */
26
35
  function validateRecord(schema, value) {
27
36
  const validated = validateSync(schema, value);
28
37
  return validated.ok && isRecord(validated.value) ? validated.value : void 0;
@@ -9,19 +9,31 @@ function isRfc3339(value) {
9
9
  function rfc3339(seconds) {
10
10
  return (/* @__PURE__ */ new Date(seconds * 1e3)).toISOString();
11
11
  }
12
- /** Milliseconds since the epoch as RFC 3339 in UTC, milliseconds kept; throws a `RangeError` for a value outside the `Date` range. */
12
+ /**
13
+ * Milliseconds since the epoch as RFC 3339 in UTC, milliseconds kept; throws a
14
+ * `RangeError` for a value outside the `Date` range.
15
+ */
13
16
  function isoAt(millis) {
14
17
  return new Date(millis).toISOString();
15
18
  }
16
- /** RFC 3339 in UTC of `now`, or of the clock when absent; throws a `RangeError` for a `now` that is not an `Instant`. */
19
+ /**
20
+ * RFC 3339 in UTC of `now`, or of the clock when absent; throws a `RangeError`
21
+ * for a `now` that is not an `Instant`.
22
+ */
17
23
  function isoNow(now) {
18
24
  return dateAt(now).toISOString();
19
25
  }
20
- /** Whole seconds since the epoch of an RFC 3339 instant; `undefined` for anything else. */
26
+ /**
27
+ * Whole seconds since the epoch of an RFC 3339 instant; `undefined` for
28
+ * anything else.
29
+ */
21
30
  function secondsOf(value) {
22
31
  return isRfc3339(value) ? Math.floor(Date.parse(value) / 1e3) : void 0;
23
32
  }
24
- /** Whole seconds since the epoch of an RFC 3339 string or an `Instant`; `undefined` for anything else, Unix seconds included. */
33
+ /**
34
+ * Whole seconds since the epoch of an RFC 3339 string or an `Instant`;
35
+ * `undefined` for anything else, Unix seconds included.
36
+ */
25
37
  function instantOf(value) {
26
38
  if (typeof value === "string") return secondsOf(value);
27
39
  if (typeof value === "object" && value !== null && "epochMilliseconds" in value && typeof value.epochMilliseconds === "number" && Number.isFinite(value.epochMilliseconds)) return Math.floor(value.epochMilliseconds / 1e3);
@@ -30,7 +42,10 @@ function instantOf(value) {
30
42
  function durationOf(value) {
31
43
  return typeof value === "number" && Number.isSafeInteger(value) && value > 0 ? value : void 0;
32
44
  }
33
- /** Throws at definition time unless `value` is a whole number of seconds above zero. */
45
+ /**
46
+ * Throws at definition time unless `value` is a whole number of seconds above
47
+ * zero.
48
+ */
34
49
  function assertDuration(value, label) {
35
50
  if (durationOf(value) === void 0) throw new Error(`PermDock: ${label} must be a whole number of seconds above 0, got ${JSON.stringify(value) ?? String(value)}`);
36
51
  }
@@ -43,13 +58,19 @@ const INVALID_NOW = Object.freeze({
43
58
  field: "now",
44
59
  message: "now must be an Instant ({ epochMilliseconds }), such as a Temporal.Instant"
45
60
  });
46
- /** The `Date` of `now`, or of the clock when absent; throws a `RangeError` for a `now` that is not an `Instant`. */
61
+ /**
62
+ * The `Date` of `now`, or of the clock when absent; throws a `RangeError` for a
63
+ * `now` that is not an `Instant`.
64
+ */
47
65
  function dateAt(now) {
48
66
  const millis = nowMillis(now);
49
67
  if (!Number.isFinite(millis)) throw new RangeError(`PermDock: ${INVALID_NOW.message}`);
50
68
  return new Date(millis);
51
69
  }
52
- /** Whole seconds since the epoch of `now`, or of the clock when absent; throws a `RangeError` for a `now` that is not an `Instant`. */
70
+ /**
71
+ * Whole seconds since the epoch of `now`, or of the clock when absent; throws a
72
+ * `RangeError` for a `now` that is not an `Instant`.
73
+ */
53
74
  function secondsAt(now) {
54
75
  return Math.floor(dateAt(now).getTime() / 1e3);
55
76
  }
@@ -61,7 +82,10 @@ function instantAt(seconds) {
61
82
  function epochSeconds(now) {
62
83
  return nowMillis(now) / 1e3;
63
84
  }
64
- /** Milliseconds since the epoch of `now`, or of the clock when absent; `NaN` for a `now` that is not an `Instant`. */
85
+ /**
86
+ * Milliseconds since the epoch of `now`, or of the clock when absent; `NaN` for
87
+ * a `now` that is not an `Instant`.
88
+ */
65
89
  function nowMillis(now) {
66
90
  if (now === void 0) return Date.now();
67
91
  const millis = typeof now === "object" && now !== null ? now.epochMilliseconds : void 0;
@@ -1,9 +1,9 @@
1
1
  import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
2
- import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
2
+ import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
3
3
  //#region src/core/token.ts
4
4
  /**
5
- * Only stable identity goes into the token, so refreshing a session (new
6
- * roles, assurance or claims) does not orphan an outstanding approval.
5
+ * Only stable identity goes into the token, so refreshing a session (new roles,
6
+ * assurance or claims) does not orphan an outstanding approval.
7
7
  */
8
8
  function principalIdentity(principal) {
9
9
  if (principal === null) return null;
@@ -13,7 +13,10 @@ function principalIdentity(principal) {
13
13
  issuer: principal.issuer ?? null
14
14
  };
15
15
  }
16
- /** A row's `version` field as token input; `null` when it is missing or not a scalar. */
16
+ /**
17
+ * A row's `version` field as token input; `null` when it is missing or not a
18
+ * scalar.
19
+ */
17
20
  function versionOf(row, field) {
18
21
  if (row === null || typeof row !== "object" || !Object.hasOwn(row, field)) return null;
19
22
  const value = row[field];
@@ -25,20 +28,19 @@ function payloadDigest(data) {
25
28
  return sha256Digest(canonicalJson(data));
26
29
  }
27
30
  /**
28
- * The payload a decision token binds: the call's `args` when the caller
29
- * passes them (an agent or MCP tool call, row or not), otherwise the data of
30
- * a call without a row id. `undefined` binds nothing beyond the row id.
31
+ * The payload a decision token binds: the call's `args` when the caller passes
32
+ * them (an agent or MCP tool call, row or not), otherwise the data of a call
33
+ * without a row id. `undefined` binds nothing beyond the row id.
31
34
  */
32
35
  function tokenPayload(resourceId, data, args) {
33
36
  if (args !== void 0) return payloadDigest(args);
34
37
  return resourceId === "*" && data !== void 0 ? payloadDigest(data) : void 0;
35
38
  }
36
39
  /**
37
- * `version` is set only for an approval that goes stale on a resource
38
- * change; without it the payload, and so every other token, is unchanged.
39
- * `payload` is set when `resourceId` is `*` (a collection action or a row
40
- * without an id), so an approval covers the arguments it was given and no
41
- * others.
40
+ * `version` is set only for an approval that goes stale on a resource change;
41
+ * without it the payload, and so every other token, is unchanged. `payload` is
42
+ * set when `resourceId` is `*` (a collection action or a row without an id), so
43
+ * an approval covers the arguments it was given and no others.
42
44
  */
43
45
  function decisionToken(input) {
44
46
  const payload = canonicalJson({
@@ -1,5 +1,5 @@
1
1
  import { t as wireDenials } from "./wire-denial-C7PaVYEM.js";
2
- import { t as describe } from "./describe-DZlnEtLy.js";
2
+ import { n as describe } from "./describe-Bb4hGK5d.js";
3
3
  //#region src/core/tool-refusal.ts
4
4
  function deniedToolRefusal(decision, permission, resource) {
5
5
  const alternatives = decision.alternatives.map((leaf) => leaf.key);
@@ -26,7 +26,10 @@ function approvalToolRefusal(decision, permission, resource) {
26
26
  }
27
27
  };
28
28
  }
29
- /** An MCP `CallToolResult` with `isError` set, as MCP and WebMCP clients read it. */
29
+ /**
30
+ * An MCP `CallToolResult` with `isError` set, as MCP and WebMCP clients read
31
+ * it.
32
+ */
30
33
  function toolErrorResult(refusal) {
31
34
  return {
32
35
  isError: true,
@@ -1,10 +1,10 @@
1
- import { T as Policy, sr as Principal } 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 RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-C4gZUEZy.js";
6
- import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
7
- import { t as StreamProtectOptions } from "../stream-2Vwhl7Er.js";
1
+ import { T as Policy, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
4
+ import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
5
+ import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CIlpSA2G.js";
6
+ import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
7
+ import { t as StreamProtectOptions } from "../stream-ltuLdtTG.js";
8
8
  import { AnyTRPCMiddlewareFunction } from "@trpc/server";
9
9
  //#region src/trpc/create.d.ts
10
10
  type TrpcMiddlewareOpts<TCtx = object, TInput = unknown> = {
@@ -34,7 +34,10 @@ type TrpcOpenApiHooks = {
34
34
  readonly securitySchemes: OpenApiHooks["securitySchemes"];
35
35
  };
36
36
  type TrpcPermDock<TCtx = object> = {
37
- /** The `PermDock` for one procedure call, for code the middleware does not run before. */
37
+ /**
38
+ * The `PermDock` for one procedure call, for code the middleware does not run
39
+ * before.
40
+ */
38
41
  readonly getPermDock: (opts: TrpcMiddlewareOpts<TCtx>) => Promise<PermDock>;
39
42
  readonly middleware: () => TrpcMiddleware;
40
43
  readonly protect: (permission: Permission | null, data?: (opts: TrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => TrpcMiddleware;
@@ -1,12 +1,15 @@
1
- import { o as problemMessage } from "../http-BBoKefeS.js";
2
- import { t as problemFromError } from "../map-error-BQGyDm_M.js";
3
- import { n as attached } from "../bind-D1nO6fiC.js";
4
- import { i as isAsyncIterable, o as reloadAfter } from "../stream-CvdUS9V1.js";
5
- import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-Bk1bE-ch.js";
1
+ import { o as problemMessage } from "../http-DKLXrFGk.js";
2
+ import { t as problemFromError } from "../map-error-pasIGqMT.js";
3
+ import { n as attached } from "../bind-D_sZSVA3.js";
4
+ import { i as isAsyncIterable, o as reloadAfter } from "../stream-CDvF0sJm.js";
5
+ import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-fNqAIqQk.js";
6
6
  import { TRPCError, isTrackedEnvelope } from "@trpc/server";
7
7
  //#region src/trpc/create.ts
8
8
  const PROBLEM = Symbol.for("permdock.problem");
9
- /** A `TRPCError` for a revoked subscription; the Problem Details body rides on `cause`. */
9
+ /**
10
+ * A `TRPCError` for a revoked subscription; the Problem Details body rides on
11
+ * `cause`.
12
+ */
10
13
  function trpcErrorFrom(error) {
11
14
  const problem = error.toProblemDetails();
12
15
  const cause = { ...problem };
@@ -34,8 +37,8 @@ async function throwTrpcError(response) {
34
37
  });
35
38
  }
36
39
  /**
37
- * A PermDock error thrown further down (an `assert` in a resolver) arrives as
38
- * a failed middleware result; it becomes the same TRPCError `protect` throws.
40
+ * A PermDock error thrown further down (an `assert` in a resolver) arrives as a
41
+ * failed middleware result; it becomes the same TRPCError `protect` throws.
39
42
  */
40
43
  function mapDownstream(result) {
41
44
  if (result === null || typeof result !== "object" || result.ok !== false) return Promise.resolve(result);
@@ -70,7 +73,10 @@ function createPermDock(policy, options) {
70
73
  attach(nextCtx, request);
71
74
  return mapDownstream(await opts.next({ ctx: nextCtx }));
72
75
  });
73
- /** Wraps a subscription's iterable so revocation ends it and unreadable items drop. */
76
+ /**
77
+ * Wraps a subscription's iterable so revocation ends it and unreadable items
78
+ * drop.
79
+ */
74
80
  const guardSubscription = async (result, opts, permission, data, protectOptions) => {
75
81
  if (result === null || typeof result !== "object" || result.ok !== true || !isAsyncIterable(result.data)) return result;
76
82
  return {
@@ -0,0 +1,50 @@
1
+ import { j as PolicyVocabulary, mn as ScopeNames } from "./policy-types-CCiDRZBH.js";
2
+ import { k as POLICY_SCOPES, u as Permission } from "./permission-types-CAY-GU7e.js";
3
+ import { n as PlanTree } from "./vocabulary-DEJ5j4mR.js";
4
+ import { o as OperationMap } from "./operations-Ci_rT6Uo.js";
5
+ //#region src/core/type-helpers.d.ts
6
+ /** Recursion guard: a tree nests resources at most this many levels deep. */
7
+ type Depth = [never, 0, 1, 2, 3, 4, 5, 6, 7];
8
+ /** The literal string keys of `T`, without an index signature. */
9
+ type KnownKeys<T> = keyof { readonly [K in keyof T as string extends K ? never : K extends string ? K : never]: 0; };
10
+ type LeavesOf<T, D extends number> = [D] extends [never] ? never : T extends Permission ? T : { readonly [K in KnownKeys<T>]-?: LeavesOf<T[K], Depth[D]>; }[KnownKeys<T>];
11
+ /** The union of the permission leaves of a `definePermissions` tree. */
12
+ type PermissionOf<T> = [KnownKeys<T>] extends [never] ? Permission : LeavesOf<T, 8>;
13
+ type TreeOf<P> = P extends {
14
+ readonly vocabulary: {
15
+ readonly permissions: infer T;
16
+ };
17
+ } ? T : P;
18
+ /** The resource names of a policy or a permission tree, else `string`. */
19
+ type ResourceNameOf<P> = PermissionOf<TreeOf<P>>["resource"];
20
+ /** The action names of a policy or a permission tree, else `string`. */
21
+ type ActionNameOf<P> = PermissionOf<TreeOf<P>>["action"];
22
+ /** The permission keys of a policy or a permission tree, else `string`. */
23
+ type PermissionKeyOf<P> = PermissionOf<TreeOf<P>>["key"];
24
+ /**
25
+ * The scope names a policy's `definePolicy({ scopes })` declares, plus the
26
+ * `tenant` / `team` aliases; `string` for a policy that declares none.
27
+ */
28
+ type ScopeNameOf<P> = P extends {
29
+ readonly [POLICY_SCOPES]?: infer S;
30
+ } ? ScopeNames<Exclude<S, undefined>> : string;
31
+ /**
32
+ * The plan names a policy declares: the keys of its `definePlans` vocabulary,
33
+ * else `string`.
34
+ */
35
+ type PlanNameOf<P> = P extends {
36
+ readonly vocabulary: infer V;
37
+ } ? V extends {
38
+ readonly plans: infer T extends PlanTree;
39
+ } ? T[keyof T]["key"] : string : string;
40
+ /** The operation names of a `defineOperations` map, else `string`. */
41
+ type OperationNameOf<O> = O extends OperationMap<infer D> ? keyof D & string : string;
42
+ /**
43
+ * The vocabulary a policy was defined with, for an instance type such as
44
+ * `usePermDock<VocabularyOf<typeof policy>>()`; `PolicyVocabulary` otherwise.
45
+ */
46
+ type VocabularyOf<P> = P extends {
47
+ readonly vocabulary: infer V extends PolicyVocabulary;
48
+ } ? V : PolicyVocabulary;
49
+ //#endregion
50
+ export { PlanNameOf as a, VocabularyOf as c, PermissionOf as i, OperationNameOf as n, ResourceNameOf as o, PermissionKeyOf as r, ScopeNameOf as s, ActionNameOf as t };
@@ -1,15 +1,18 @@
1
- import { dt as TokenVerifier, lr as Subject, ot as SnapshotSource, q as DecisionSink, ut as TokenSigner } from "./policy-types-B-F-qAZk.js";
2
- import { s as PolicySource } from "./hosted-BmjzxQhp.js";
3
- import { m as ApprovalStore, u as ApprovalRequest } from "./types-DC44-hqb.js";
4
- import { a as CatalogDocument } from "./types-BXMYB7BY.js";
5
- import { a as CatalogFinding } from "./sink-Cp_Eot9W.js";
1
+ import { dt as TokenVerifier, lr as Subject, ot as SnapshotSource, q as DecisionSink, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
2
+ import { s as PolicySource } from "./hosted-Cmtxogd0.js";
3
+ import { m as ApprovalStore, u as ApprovalRequest } from "./types-B_tiYvk8.js";
4
+ import { a as CatalogDocument } from "./types-ZzRGoViD.js";
5
+ import { a as CatalogFinding } from "./sink-Dvi7YZG_.js";
6
6
  //#region src/cloud/types.d.ts
7
7
  type CloudEndpointOptions = {
8
8
  readonly url?: string;
9
9
  readonly environment?: string;
10
10
  };
11
11
  type CloudEndpoints = {
12
- /** The environment URL, `<url>/v1/environments/<env>`: `iss` and `aud` of the policy document. */
12
+ /**
13
+ * The environment URL, `<url>/v1/environments/<env>`: `iss` and `aud` of the
14
+ * policy document.
15
+ */
13
16
  readonly issuer: string;
14
17
  /** The environment's JWK Set URL, for `joseTokenVerifier({ jwks })`. */
15
18
  readonly jwks: string;
@@ -24,51 +27,60 @@ type CloudConnectionOptions = CloudEndpointOptions & {
24
27
  type CloudApproverOptions = {
25
28
  /**
26
29
  * Signs the token with a key the environment trusts as an issuer, such as
27
- * `joseTokenSigner` over your own key. Never `cloudSigner`: a client key
28
- * that could mint approver tokens could forge any approver.
30
+ * `joseTokenSigner` over your own key. Never `cloudSigner`: a client key that
31
+ * could mint approver tokens could forge any approver.
29
32
  */
30
33
  readonly signer: TokenSigner;
31
- /** `aud` of the token; defaults to `<issuer>/approvals`, the environment URL plus `/approvals`. */
34
+ /**
35
+ * `aud` of the token; defaults to `<issuer>/approvals`, the environment URL
36
+ * plus `/approvals`.
37
+ */
32
38
  readonly audience?: string | readonly string[];
33
39
  /**
34
40
  * The `holder(permission)` approvers of `request` that `approver` holds,
35
41
  * typically `approverPermissions(request, permdockFor(approver))`. Signed
36
- * into the token as `permissions`; without it the verdict's own
37
- * `permissions` are signed. A throw signs none.
42
+ * into the token as `permissions`; without it the verdict's own `permissions`
43
+ * are signed. A throw signs none.
38
44
  */
39
45
  readonly permissions?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
40
46
  /**
41
47
  * The relation approvers of `request` that `approver` holds, typically
42
- * `approverRelations(request, approver, { relations, permissions })`.
43
- * Signed into the token as `relations`; without it the verdict's own
44
- * `relations` are signed. A throw signs none.
48
+ * `approverRelations(request, approver, { relations, permissions })`. Signed
49
+ * into the token as `relations`; without it the verdict's own `relations` are
50
+ * signed. A throw signs none.
45
51
  */
46
52
  readonly relations?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
47
53
  };
48
54
  type CloudOptions = CloudConnectionOptions & {
49
55
  /**
50
- * Proves the approver on `approvals.resolve`. Without it, every resolve but
51
- * a `system` rejection throws `approver-unauthenticated` and sends nothing.
56
+ * Proves the approver on `approvals.resolve`. Without it, every resolve but a
57
+ * `system` rejection throws `approver-unauthenticated` and sends nothing.
52
58
  */
53
59
  readonly approver?: CloudApproverOptions;
54
60
  readonly flushAt?: number;
55
- /** Most events the sink holds while the Cloud is unreachable (default 10 000); the oldest are dropped first. */
61
+ /**
62
+ * Most events the sink holds while the Cloud is unreachable (default 10 000);
63
+ * the oldest are dropped first.
64
+ */
56
65
  readonly capacity?: number;
57
66
  readonly waitUntil?: (task: Promise<void>) => void;
58
- /** The CloudEvents `source` of every event the sink sends, an absolute URI; defaults to the environment URL. */
67
+ /**
68
+ * The CloudEvents `source` of every event the sink sends, an absolute URI;
69
+ * defaults to the environment URL.
70
+ */
59
71
  readonly source?: string;
60
72
  /**
61
- * Verifies the environment's signed policy document, typically
62
- * `({ jwks }) => joseTokenVerifier({ jwks })`. A function is called once,
63
- * with the resolved endpoints, on the first refresh. Without one,
64
- * `policies.current()` stays `null`: an unverifiable document is never applied.
73
+ * Verifies the environment's signed policy document, typically `({ jwks }) =>
74
+ * joseTokenVerifier({ jwks })`. A function is called once, with the resolved
75
+ * endpoints, on the first refresh. Without one, `policies.current()` stays
76
+ * `null`: an unverifiable document is never applied.
65
77
  */
66
78
  readonly verifier?: TokenVerifier | ((endpoints: CloudEndpoints) => TokenVerifier);
67
79
  };
68
80
  /**
69
81
  * What `POST /catalog` answers: `201` with the new version and the drift
70
- * findings against the previous one, or `200` with `unchanged: true` when
71
- * the fingerprint is already published.
82
+ * findings against the previous one, or `200` with `unchanged: true` when the
83
+ * fingerprint is already published.
72
84
  */
73
85
  type CloudCatalogPush = {
74
86
  readonly version: number;
@@ -81,19 +93,19 @@ type CloudCatalogPush = {
81
93
  };
82
94
  type CloudCatalog = {
83
95
  /**
84
- * Posts the catalog, its `operations` included, to the environment.
85
- * Throws when the Cloud refuses it or answers another shape. The Cloud
86
- * shows and diffs it; it never decides with it.
96
+ * Posts the catalog, its `operations` included, to the environment. Throws
97
+ * when the Cloud refuses it or answers another shape. The Cloud shows and
98
+ * diffs it; it never decides with it.
87
99
  */
88
- push(catalog: CatalogDocument): Promise<CloudCatalogPush>;
100
+ push: (catalog: CatalogDocument) => Promise<CloudCatalogPush>;
89
101
  };
90
102
  type CloudClient = Partial<CloudEndpoints> & {
91
103
  /**
92
- * The environment URL and JWK Set URL. `issuer` and `jwks` are set only
93
- * when the environment is configured; otherwise the first call asks
94
- * `GET /v1/environment` which environment the key belongs to.
104
+ * The environment URL and JWK Set URL. `issuer` and `jwks` are set only when
105
+ * the environment is configured; otherwise the first call asks `GET
106
+ * /v1/environment` which environment the key belongs to.
95
107
  */
96
- endpoints(): Promise<CloudEndpoints>;
108
+ endpoints: () => Promise<CloudEndpoints>;
97
109
  readonly approvals: ApprovalStore;
98
110
  readonly sink: DecisionSink;
99
111
  /**
@@ -102,7 +114,7 @@ type CloudClient = Partial<CloudEndpoints> & {
102
114
  * signed. Sent as `PermDock-Subject`; the Cloud never takes a subject from
103
115
  * anything else.
104
116
  */
105
- snapshotsFor(token: string): SnapshotSource;
117
+ snapshotsFor: (token: string) => SnapshotSource;
106
118
  readonly policies: PolicySource;
107
119
  readonly catalog: CloudCatalog;
108
120
  };