permdock 0.6.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 (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,179 +1,34 @@
1
- import { J as EntitlementSource, K as DecisionProvider, Q as LimitStore, T as Policy, U as CredentialVerifier, Vt as Snapshot, W as CustomRoleSource, Zn as CustomRole, Zt as DeliveryChannel, ar as Subject, at as SettingsSource, dt as TokenVerifier, et as MembershipSource, it as RelationSource, mt as WhereCompiler, nr as Membership, ot as SnapshotSource, q as DecisionSink, rr as Principal, st as SubjectResolver, ut as TokenSigner } from "../policy-types-n0uRTsW8.js";
2
- import { C as InferPermissionTree, k as ResourceInit, r as Role, w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { Q as LegacyCheck } from "../index-DuWxc5dt.js";
4
- import { S as ApprovalPolicySource, c as WhereResult, d as PrincipalIdentity, g as Limits, i as PermDockOptions, p as PrincipalSource, r as PermDock } from "../permdock-SV8ZINYT.js";
5
- import { o as PolicySource } from "../hosted-BPk51-kX.js";
6
- import { a as ApprovalDelegationSource, m as ApprovalStore } from "../types-BdtSDbBO.js";
7
- import { a as ProblemDetails } from "../errors-DH5QEGXh.js";
8
- import { c as ModelMap, t as AgentPermDock, u as ToolMap } from "../create-CBMmFie-.js";
9
- import { c as AccessReviewStore } from "../types-C_IiEs64.js";
10
- import { F as IdempotencyStore } from "../index-C-6Letxg.js";
11
- import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
12
- import { s as SupportSessionSource } from "../index-B8YjkEZ4.js";
13
- import { a as AutomationSource, t as Automation } from "../automation-BNM3TtDo.js";
14
- import { c as DeliveryTransport, g as TransportMessages } from "../types-BtHtcKMr.js";
15
- import { n as SupabaseHookManifest } from "../manifest-mx5ghSFM.js";
16
- import { t as supabaseMembershipsBudget } from "../budget-JqcRqyhK.js";
17
- import { t as CloudApproverOptions } from "../types-8RnwUAvE.js";
18
- import { n as ApprovalWaiter } from "../waiter-B986w1oK.js";
19
- import { g as SetQueue, l as ReplayStore } from "../types-C791HFu9.js";
20
- import { r as SnapshotStorage } from "../types-C863OQiR.js";
21
- import { y as DirectoryStore } from "../index-Ch8LpNDp.js";
22
- import { a as SaasProject } from "../permissions-u_KHg-sN.js";
23
- import { n as saasPolicy } from "../policy-77FSAq_V.js";
1
+ import { Gt as Snapshot, J as EntitlementSource, K as DecisionProvider, Q as LimitStore, T as Policy, U as CredentialVerifier, W as CustomRoleSource, at as SettingsSource, dt as TokenVerifier, et as MembershipSource, it as RelationSource, lr as Subject, mt as WhereCompiler, or as Membership, ot as SnapshotSource, q as DecisionSink, sr as Principal, st as SubjectResolver, tn as DeliveryChannel, ut as TokenSigner } from "../policy-types-CCiDRZBH.js";
2
+ import { g as ResourceInit, l as InferPermissionTree, u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { r as Role } from "../vocabulary-DEJ5j4mR.js";
4
+ import { st as LegacyCheck } from "../index-BW_0MZOS.js";
5
+ import { D as ApprovalPolicySource, _ as PrincipalSource, a as PermDock, b as Limits, h as PrincipalIdentity } from "../permdock-B6Sf4T_S.js";
6
+ import { s as PolicySource } from "../hosted-Cmtxogd0.js";
7
+ import { a as ApprovalDelegationSource, m as ApprovalStore } from "../types-B_tiYvk8.js";
8
+ import { a as ProblemDetails } from "../errors-zi_4T-rx.js";
9
+ import { c as ModelMap, t as AgentPermDock, u as ToolMap } from "../create-BSNrVuxh.js";
10
+ import { c as AccessReviewStore } from "../types-B2mlGuhW.js";
11
+ import { R as IdempotencyStore } from "../index-_9UiQIkt.js";
12
+ import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
13
+ import { s as SupportSessionSource } from "../index-B8s204GL.js";
14
+ import { a as AutomationSource, t as Automation } from "../automation-DqEoWHBc.js";
15
+ import { c as DeliveryTransport, g as TransportMessages } from "../types-yUuPR5Hy.js";
16
+ import { r as SupabaseHookManifest } from "../manifest-CzzWtnAb.js";
17
+ import { t as supabaseMembershipsBudget } from "../budget-hYsPz_yE.js";
18
+ import { t as CloudApproverOptions } from "../types-AMJ5qoU_.js";
19
+ import { n as ApprovalWaiter } from "../waiter-Bu9zAlE0.js";
20
+ import { g as SetQueue, l as ReplayStore } from "../types-DjuMBNF9.js";
21
+ import { r as SnapshotStorage } from "../types-HzqOtvsJ.js";
22
+ import { x as DirectoryStore } from "../index-BT5-1VsX.js";
23
+ import { S as SsfStreamStore } from "../index-BhxEUY9J.js";
24
+ import { S as policyMatrix, _ as DescribePolicyConfig, a as OrmParityScenario, b as PolicyMatrixCell, c as RlsFieldsOutcome, d as RlsParityOptions, f as RlsParityReport, g as testRlsParity, h as RlsQueryResult, i as OrmParityRunInput, l as RlsParityCase, m as RlsQueryFn, n as OrmParityOptions, o as testOrmParity, p as RlsParitySubject, r as OrmParityReport, s as RlsDbOutcome, t as OrmParityCase, u as RlsParityFixture, v as MatrixCell, x as PolicyMatrixReport, y as MatrixOutcome } from "../core-hWIARPDz.js";
25
+ import { a as SaasProject } from "../permissions-Bx6UI8n1.js";
26
+ import { n as saasPolicy } from "../policy-Ba4bDhaj.js";
24
27
  import { expectTypeOf } from "vitest";
25
28
  //#region src/testing/describe-policy.d.ts
26
- type MatrixOutcome = "granted" | "denied" | "approval-required";
27
- type MatrixCell = MatrixOutcome | {
28
- readonly outcome?: MatrixOutcome;
29
- readonly denials?: readonly {
30
- readonly role?: string | null;
31
- readonly reason: string;
32
- }[];
33
- readonly alternatives?: readonly string[];
34
- /** Obligation kinds a granted decision carries, in order; `[]` asserts none. */
35
- readonly obligations?: readonly string[];
36
- /** The `name` of the deny grant `explain` reports as the one that won. */
37
- readonly deniedBy?: string;
38
- };
39
- type DescribePolicyConfig<TSubject> = {
40
- readonly subjects: Record<string, TSubject>;
41
- readonly fixtures?: Record<string, unknown>;
42
- readonly matrix: Record<string, Record<string, MatrixCell | Record<string, MatrixCell>>>;
43
- readonly exhaustive?: boolean;
44
- readonly options?: PermDockOptions;
45
- /**
46
- * Also assert every granted or denied cell against `fromSnapshot(permdock.snapshot())`,
47
- * the client a Server Component hands down. Closures cannot cross a snapshot and deny on the client.
48
- */
49
- readonly snapshot?: boolean;
50
- };
29
+ /** `policyMatrix` under Vitest: one test per cell, plus the exhaustive check. */
51
30
  export declare function describePolicy<TSubject>(policy: Policy, config: DescribePolicyConfig<TSubject>): void;
52
31
  //#endregion
53
- //#region src/testing/rls-parity.d.ts
54
- type RlsDbOutcome = "allowed" | "filtered" | "rejected";
55
- type RlsParitySubject = {
56
- readonly id: string;
57
- readonly roles?: readonly string[];
58
- readonly tenant?: string;
59
- readonly memberships?: readonly Membership[];
60
- /**
61
- * Extra token claims, read in memory as `principal.claims.*`. They join the
62
- * JWT claims (`supabase`, `neon`); under `guc` each top-level claim is its
63
- * own `<prefix>.<name>` setting, strings as is and anything else as JSON.
64
- */
65
- readonly claims?: Readonly<Record<string, unknown>>;
66
- };
67
- type RlsParityFixture = {
68
- readonly name: string;
69
- readonly subject: RlsParitySubject;
70
- readonly permission: Permission;
71
- readonly row: Readonly<Record<string, unknown>>;
72
- readonly table: string;
73
- };
74
- type RlsQueryResult = {
75
- readonly rows: readonly Record<string, unknown>[];
76
- readonly rowCount?: number;
77
- readonly code?: string;
78
- };
79
- type RlsQueryFn = (sql: string, values?: readonly unknown[]) => Promise<RlsQueryResult>;
80
- type RlsParityOptions = {
81
- readonly query: RlsQueryFn;
82
- readonly fixtures: readonly RlsParityFixture[];
83
- /**
84
- * `supabase` and `neon` set `request.jwt.claims`; a test database stubs
85
- * `auth.jwt()` / `auth.uid()` or `auth.session()` / `auth.user_id()` over it.
86
- */
87
- readonly dialect?: "supabase" | "neon" | "guc";
88
- readonly gucPrefix?: string;
89
- readonly tenantClaim?: string;
90
- /** Claim (or `guc` setting) the RLS helpers read global roles from. Default `user_role`. */
91
- readonly roleClaim?: string;
92
- readonly role?: "authenticated" | "anon";
93
- /**
94
- * Tenant-defined roles the subjects' memberships may hold. `decide` resolves them through a
95
- * `CustomRoleSource`; each membership's claim carries them as the compact `grants` map, which the
96
- * helpers read in `jwt` mode. Seeding the `database`-mode tables is the caller's job.
97
- */
98
- readonly customRoles?: readonly CustomRole[];
99
- /** Also decide each case from the subject's serialized snapshot (`fromSnapshot`); it must agree. */
100
- readonly snapshot?: boolean;
101
- /**
102
- * With `rls generate --fields views`: for each instance read, the row of
103
- * `<table>_visible` must hold exactly the columns `pick` keeps (plus the key,
104
- * which always passes through). A table with no view is read directly.
105
- */
106
- readonly fieldViews?: boolean;
107
- };
108
- /** Columns with a value in the view's row and in `pick`'s result, sorted. */
109
- type RlsFieldsOutcome = {
110
- readonly app: readonly string[];
111
- readonly database: readonly string[] | string;
112
- };
113
- type RlsParityCase = {
114
- readonly name: string;
115
- readonly granted: boolean;
116
- readonly database: RlsDbOutcome;
117
- /** The snapshot's decision, with `snapshot: true`. */
118
- readonly snapshot?: boolean;
119
- /** The field view check, with `fieldViews: true`; `database` is an error code when the read failed. */
120
- readonly fields?: RlsFieldsOutcome;
121
- readonly ok: boolean;
122
- };
123
- type RlsParityReport = {
124
- readonly ok: boolean;
125
- readonly results: readonly RlsParityCase[];
126
- };
127
- export declare function testRlsParity<TUser>(policy: Policy<TUser>, options: RlsParityOptions): Promise<RlsParityReport>;
128
- //#endregion
129
- //#region src/testing/orm-parity.d.ts
130
- type OrmParityScenario<TUser = unknown> = {
131
- readonly name: string;
132
- /** What the policy's `subject` mapper receives, as in `createPermDock(policy, user)`. */
133
- readonly user: TUser;
134
- /** The active tenant and role sources, as in `createPermDock(policy, user, options)`. */
135
- readonly options?: PermDockOptions;
136
- /** An instance permission; its `where()` filters the table. */
137
- readonly permission: Permission<string, unknown, "instance">;
138
- /** Every row of the table, exactly as the database holds them. */
139
- readonly rows: readonly Readonly<Record<string, unknown>>[];
140
- };
141
- type OrmParityRunInput<TUser = unknown> = {
142
- readonly scenario: OrmParityScenario<TUser>;
143
- readonly where: WhereResult;
144
- };
145
- type OrmParityOptions<TUser = unknown> = {
146
- /** Runs `toWhere(where)` against the database and returns the matching row ids. */
147
- readonly run: (input: OrmParityRunInput<TUser>) => Promise<readonly unknown[]>;
148
- /** The row id field; default `id`. */
149
- readonly id?: string;
150
- };
151
- type OrmParityCase = {
152
- readonly name: string;
153
- readonly expected: readonly string[];
154
- readonly actual: readonly string[];
155
- /**
156
- * `where()` left out a non-portable grant. `toWhere` refusing it is
157
- * fail-closed and passes; rows it does return must be a subset.
158
- */
159
- readonly partial: boolean;
160
- readonly error?: string;
161
- readonly ok: boolean;
162
- };
163
- type OrmParityReport = {
164
- readonly ok: boolean;
165
- readonly results: readonly OrmParityCase[];
166
- };
167
- /**
168
- * ORM parity: for each scenario, the rows `permdock.filter()` keeps in memory
169
- * must be exactly the rows the database returns for `toWhere(permdock.where())`.
170
- * With a `relations` option, the graph is loaded for the rows first, so the
171
- * in-memory side walks the same graph the database query does.
172
- * A partial `where()` (a closure grant it cannot compile) may be refused or
173
- * return fewer rows, never more.
174
- */
175
- export declare function testOrmParity<TUser>(policy: Policy<TUser>, scenarios: readonly OrmParityScenario<TUser>[], options: OrmParityOptions<TUser>): Promise<OrmParityReport>;
176
- //#endregion
177
32
  //#region src/testing/client-parity.d.ts
178
33
  type ClientParityCase = {
179
34
  readonly name: string;
@@ -183,8 +38,8 @@ type ClientParityCase = {
183
38
  readonly permission: Permission;
184
39
  readonly row?: unknown;
185
40
  /**
186
- * `true` when the client may deny what the server grants, because the
187
- * outcome depends on a closure, a quota or an approval the snapshot omits.
41
+ * `true` when the client may deny what the server grants, because the outcome
42
+ * depends on a closure, a quota or an approval the snapshot omits.
188
43
  */
189
44
  readonly stricter?: boolean;
190
45
  };
@@ -192,8 +47,8 @@ type ClientParityOptions = {
192
47
  readonly customRoles?: CustomRoleSource;
193
48
  };
194
49
  /**
195
- * Asserts that `fromSnapshot(permdock.snapshot())` never grants what the
196
- * server denies, and matches it exactly unless a case is marked `stricter`.
50
+ * Asserts that `fromSnapshot(permdock.snapshot())` never grants what the server
51
+ * denies, and matches it exactly unless a case is marked `stricter`.
197
52
  */
198
53
  export declare function testClientParity(policy: Policy, cases: readonly ClientParityCase[], options?: ClientParityOptions): void;
199
54
  //#endregion
@@ -211,9 +66,9 @@ type LegacyParityCase = {
211
66
  readonly expect?: boolean;
212
67
  };
213
68
  /**
214
- * Asserts that the policy answers each case as the application's legacy
215
- * check does, or as the case's `expect` says where the difference is
216
- * intended. Run it before enforcing a permission with `shadowMode`.
69
+ * Asserts that the policy answers each case as the application's legacy check
70
+ * does, or as the case's `expect` says where the difference is intended. Run it
71
+ * before enforcing a permission with `shadowMode`.
217
72
  */
218
73
  export declare function testLegacyParity(policy: Policy, legacy: LegacyCheck, cases: readonly LegacyParityCase[]): void;
219
74
  //#endregion
@@ -221,17 +76,20 @@ export declare function testLegacyParity(policy: Policy, legacy: LegacyCheck, ca
221
76
  type ClientStoreStatus = "ready" | "pending" | "stale" | "server-only";
222
77
  /** The client surface every UI adapter hands to components. */
223
78
  type ClientStorePermDock = PermDock & {
224
- status(permission?: Permission, data?: unknown): ClientStoreStatus;
225
- refresh(query?: {
79
+ status: (permission?: Permission, data?: unknown) => ClientStoreStatus;
80
+ refresh: (query?: {
226
81
  readonly tenant?: string;
227
- }): Promise<void>;
228
- clear(): void;
229
- subscribe(listener: () => void): () => void;
82
+ }) => Promise<void>;
83
+ clear: () => void;
84
+ subscribe: (listener: () => void) => () => void;
230
85
  };
231
86
  type ClientStoreHandle = {
232
- get(): ClientStorePermDock;
233
- /** Hydrate from a server-pushed snapshot (a Server Action result, a socket message). */
234
- replace(value: unknown): void;
87
+ get: () => ClientStorePermDock;
88
+ /**
89
+ * Hydrate from a server-pushed snapshot (a Server Action result, a socket
90
+ * message).
91
+ */
92
+ replace: (value: unknown) => void;
235
93
  };
236
94
  type ClientStoreFactoryOptions = {
237
95
  readonly snapshot: Snapshot | string;
@@ -244,9 +102,9 @@ type ClientStoreFactoryOptions = {
244
102
  type ClientStoreFactory = (options: ClientStoreFactoryOptions) => ClientStoreHandle;
245
103
  /**
246
104
  * Race and cache scenarios for a client snapshot store: tenant switches,
247
- * `replace` and `refresh`, logout and a second user during a refresh, stale
248
- * and signed snapshots, and endpoint answers cached per tenant. Runs against
249
- * the saas domain; `createStore` wraps the store an adapter ships.
105
+ * `replace` and `refresh`, logout and a second user during a refresh, stale and
106
+ * signed snapshots, and endpoint answers cached per tenant. Runs against the
107
+ * saas domain; `createStore` wraps the store an adapter ships.
250
108
  */
251
109
  export declare function testClientStore(name: string, createStore: ClientStoreFactory): void;
252
110
  //#endregion
@@ -260,6 +118,18 @@ export declare function snapshotFixture(policy: Policy, subject: unknown, option
260
118
  readonly simulated?: boolean;
261
119
  }): Promise<Snapshot>;
262
120
  //#endregion
121
+ //#region src/testing/seed-rows.d.ts
122
+ /** Rows per table; tables are inserted in key order, so list parents first. */
123
+ type SeedRows = Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
124
+ /**
125
+ * Inserts `factories.*` rows through the `query` function `testRlsParity`
126
+ * takes, one parameterised `insert` per row with the row's own keys as quoted
127
+ * column names. `undefined` fields are left to the column default. Run it as
128
+ * the table owner, before RLS applies. Resolves to the number of rows
129
+ * inserted.
130
+ */
131
+ export declare function seedRows(query: RlsQueryFn, rows: SeedRows): Promise<number>;
132
+ //#endregion
263
133
  //#region src/testing/http-adapter/domain.d.ts
264
134
  /**
265
135
  * What a mount wires into its framework. Every value is server-side: the
@@ -269,9 +139,9 @@ export declare function snapshotFixture(policy: Policy, subject: unknown, option
269
139
  type HttpScenarioDomain = {
270
140
  readonly policy: typeof saasPolicy;
271
141
  /**
272
- * The verified principal for an `Authorization` header, with the plans of
273
- * the org in the first segment of `path`. The path, not a route param, so
274
- * the answer is the same in a global middleware that runs before routing.
142
+ * The verified principal for an `Authorization` header, with the plans of the
143
+ * org in the first segment of `path`. The path, not a route param, so the
144
+ * answer is the same in a global middleware that runs before routing.
275
145
  */
276
146
  readonly subject: (authorization: string | null | undefined, path: string) => Promise<Principal | null>;
277
147
  /** `subject` as a full `Subject` whose `expiresAt` is the token's `exp`. */
@@ -348,26 +218,30 @@ type HttpMounted = {
348
218
  *
349
219
  * - `GET /:org/projects/:id`: `protect(project.read, row)`, 200 with the row
350
220
  * - `PATCH /:org/projects/:id`: `protect(project.update, row)`, 200
351
- * - `POST /:org/projects`: `protect(project.create, body, { trusted: false })`, 201 with the body
221
+ * - `POST /:org/projects`: `protect(project.create, body, { trusted: false })`,
222
+ * 201 with the body
352
223
  * - `DELETE /:org/projects/:id`: `protect(project.read, row)`, then the handler
353
224
  * calls `permdock.assert(project.delete, row)`; 204
354
225
  * - `POST /:org/projects/:id/files`: `protect(project.update, row)`, then the
355
- * framework's own multipart parser reads field `file`; 201 `{ name, size }`
226
+ * framework's own multipart parser reads field `file`; 201 `{ name, size
227
+ * }`
356
228
  * - `GET /:org/analytics`: `protect(analytics.read)`, 200
357
229
  * - `POST /:org/api-keys`: `protect(apiKey.create)`, 201
358
230
  * - `POST /:org/api-keys/revoke-all`: `protect(apiKey.revokeAll)`, 204
359
- * - `GET /:org/admin/members`: in a sub-app, router or group; `protect(member.list)`, 200
360
- * - `POST /:org/permdock/access/v1/evaluations`: the adapter's decision endpoint
231
+ * - `GET /:org/admin/members`: in a sub-app, router or group;
232
+ * `protect(member.list)`, 200
233
+ * - `POST /:org/permdock/access/v1/evaluations`: the adapter's decision
234
+ * endpoint
361
235
  *
362
236
  * A global `permdock()` middleware runs before every route.
363
237
  *
364
238
  * With `streams: true` it also serves `GET /:org/projects/:id/events`:
365
- * `protect(project.read, row)` with the subject from `domain.session`,
366
- * then a connection opened for `project.read` on the row with
367
- * `revocations: domain.revocations`, streaming `domain.ticks(org)` as
368
- * `text/event-stream` `data:` frames of JSON rows, dropping rows the
369
- * subscriber cannot `project.update`, and ending with an
370
- * `event: permdock` frame carrying the Problem Details when the connection aborts.
239
+ * `protect(project.read, row)` with the subject from `domain.session`, then a
240
+ * connection opened for `project.read` on the row with `revocations:
241
+ * domain.revocations`, streaming `domain.ticks(org)` as `text/event-stream`
242
+ * `data:` frames of JSON rows, dropping rows the subscriber cannot
243
+ * `project.update`, and ending with an `event: permdock` frame carrying the
244
+ * Problem Details when the connection aborts.
371
245
  */
372
246
  readonly fetch?: (request: Request) => Promise<Response>;
373
247
  /** RPC adapters map a call to a procedure and its error to an HTTP status. */
@@ -378,7 +252,10 @@ type HttpScenarioName = "tenant" | "roles" | "custom-roles" | "plans" | "expired
378
252
  type HttpAdapterOptions = {
379
253
  readonly name: string;
380
254
  readonly mount: (domain: HttpScenarioDomain) => HttpMounted | Promise<HttpMounted>;
381
- /** Scenarios the transport cannot express (multipart over RPC), each with a reason. */
255
+ /**
256
+ * Scenarios the transport cannot express (multipart over RPC), each with a
257
+ * reason.
258
+ */
382
259
  readonly skip?: Readonly<Partial<Record<HttpScenarioName, string>>>;
383
260
  /** The mount serves the events stream; the `stream-*` scenarios run only then. */
384
261
  readonly streams?: boolean;
@@ -399,9 +276,9 @@ export declare const AGENT_THROWING_USER = "throws";
399
276
  export declare const AGENT_THROWING_ROW = "throws";
400
277
  type AgentToolName = "project_read" | "api_keys_revoke_all";
401
278
  /**
402
- * What a mount wires into its adapter. The subject and the tenant come from
403
- * the server-side context the mount builds for each call, never from the
404
- * tool arguments.
279
+ * What a mount wires into its adapter. The subject and the tenant come from the
280
+ * server-side context the mount builds for each call, never from the tool
281
+ * arguments.
405
282
  */
406
283
  type AgentScenarioDomain = {
407
284
  readonly policy: typeof saasPolicy;
@@ -411,9 +288,8 @@ type AgentScenarioDomain = {
411
288
  */
412
289
  readonly subject: (user: string | null, org: string) => Principal | null;
413
290
  /**
414
- * `project_read` loads the row named by `args.id`: `null` for an unknown
415
- * id, a throw for `AGENT_THROWING_ROW`. `api_keys_revoke_all` needs
416
- * approval.
291
+ * `project_read` loads the row named by `args.id`: `null` for an unknown id,
292
+ * a throw for `AGENT_THROWING_ROW`. `api_keys_revoke_all` needs approval.
417
293
  */
418
294
  readonly tools: ToolMap & { readonly [K in AgentToolName]: ToolMap[K]; };
419
295
  readonly customRoles: CustomRoleSource;
@@ -448,7 +324,10 @@ type AgentAdapterOptions = {
448
324
  export declare function testAgentAdapter(options: AgentAdapterOptions): void;
449
325
  //#endregion
450
326
  //#region src/testing/agent-runtime.d.ts
451
- /** The server-side context of one call; the subject and tenant come from here, never from arguments. */
327
+ /**
328
+ * The server-side context of one call; the subject and tenant come from here,
329
+ * never from arguments.
330
+ */
452
331
  type AgentRuntimeContext = {
453
332
  /** `null` for a call with no authenticated user. */
454
333
  readonly user: string | null;
@@ -459,7 +338,10 @@ type AgentRuntimeModel = "standard" | "frontier";
459
338
  /** What a mount wires into its `AgentPermDock`. */
460
339
  type AgentRuntimeDomain = {
461
340
  readonly policy: typeof saasPolicy;
462
- /** The principal for `user` with the plans of `org`, or `null`. Throws for `AGENT_THROWING_USER`. */
341
+ /**
342
+ * The principal for `user` with the plans of `org`, or `null`. Throws for
343
+ * `AGENT_THROWING_USER`.
344
+ */
463
345
  readonly subject: (user: string | null, org: string) => Principal | null;
464
346
  /**
465
347
  * `project_read` loads the row named by `args.id`; `project_search` has a
@@ -560,16 +442,25 @@ type TodoUser = {
560
442
  readonly identity: string;
561
443
  readonly roles: readonly ("admin" | "editor" | "viewer" | "evil_genius")[];
562
444
  };
563
- /** The AuthZEN interop Todo directory: each user is addressable by email or by identity. */
445
+ /**
446
+ * The AuthZEN interop Todo directory: each user is addressable by email or by
447
+ * identity.
448
+ */
564
449
  export declare const authzenTodoUsers: readonly TodoUser[];
565
450
  type AuthzenTodoDefinition = {
566
451
  readonly user: ResourceInit<unknown, readonly ["can_read_user"], readonly []>;
567
452
  readonly todo: ResourceInit<unknown, readonly ["can_read_todos", "can_create_todo", "can_update_todo", "can_delete_todo"], readonly []>;
568
453
  };
569
454
  export declare const authzenTodoPermissions: InferPermissionTree<AuthzenTodoDefinition>;
570
- /** The interop Todo rules: viewers read, editors write their own, admins delete and evil geniuses update anything. */
455
+ /**
456
+ * The interop Todo rules: viewers read, editors write their own, admins delete
457
+ * and evil geniuses update anything.
458
+ */
571
459
  export declare const authzenTodoPolicy: Policy;
572
- /** Rows for `resources.todo.list` and records for `subjects.list` in the Todo domain. */
460
+ /**
461
+ * Rows for `resources.todo.list` and records for `subjects.list` in the Todo
462
+ * domain.
463
+ */
573
464
  export declare const authzenTodoData: {
574
465
  readonly todos: readonly {
575
466
  readonly id: string;
@@ -580,23 +471,34 @@ export declare const authzenTodoData: {
580
471
  }[];
581
472
  };
582
473
  /**
583
- * PermDock's vectors over the interop Todo domain, in the interop layout:
584
- * every user against every action on their own and on Rick's todo, one batch
585
- * per user, and the three searches.
474
+ * PermDock's vectors over the interop Todo domain, in the interop layout: every
475
+ * user against every action on their own and on Rick's todo, one batch per
476
+ * user, and the three searches.
586
477
  */
587
478
  export declare function authzenTodoVectors(): AuthzenVectors;
588
479
  //#endregion
589
480
  //#region src/testing/cloud-api/platform-checks.d.ts
590
481
  type TestCloudPlatformOptions = {
591
- /** A `PERMDOCK_CLOUD_TOKEN` for `project`: read-only, pinned to one environment. */
482
+ /**
483
+ * A `PERMDOCK_CLOUD_TOKEN` for `project`: read-only, pinned to one
484
+ * environment.
485
+ */
592
486
  readonly token: string;
593
487
  /** The project the token reads; defaults to the environment. */
594
488
  readonly project?: string;
595
- /** A project with no `cloud push` yet and a login token that reads it; the `policy-not-published` check is skipped without it. */
489
+ /**
490
+ * A project with no `cloud push` yet and a login token that reads it; the
491
+ * `policy-not-published` check is skipped without it.
492
+ */
596
493
  readonly unpublished?: {
597
494
  readonly project: string;
598
495
  readonly token: string;
599
496
  };
497
+ /**
498
+ * A login token with `projects:read` and without `policy:read`; the
499
+ * `insufficient_scope` check is skipped without it.
500
+ */
501
+ readonly projectsOnly?: string;
600
502
  /** Registers a test MCP client with RFC 7591; skipped unless true. */
601
503
  readonly registration?: boolean;
602
504
  };
@@ -613,13 +515,22 @@ type CloudApiKeys = {
613
515
  type TestCloudApiOptions = {
614
516
  readonly environment?: string;
615
517
  readonly fetch?: typeof globalThis.fetch;
616
- /** Signs the `PermDock-Approver` tokens; its issuer is a trusted issuer for `approver`. */
518
+ /**
519
+ * Signs the `PermDock-Approver` tokens; its issuer is a trusted issuer for
520
+ * `approver`.
521
+ */
617
522
  readonly approver: CloudApproverOptions;
618
- /** A fresh `PermDock-Subject` token per call; the snapshot checks are skipped without it. */
523
+ /**
524
+ * A fresh `PermDock-Subject` token per call; the snapshot checks are skipped
525
+ * without it.
526
+ */
619
527
  readonly subject?: () => string | Promise<string>;
620
528
  /** Verifies the environment's policy documents for `testPolicySource`. */
621
529
  readonly verifier?: TokenVerifier;
622
- /** AuthZEN vectors for the hosted ADS, with the caller's credentials as `headers`. */
530
+ /**
531
+ * AuthZEN vectors for the hosted ADS, with the caller's credentials as
532
+ * `headers`.
533
+ */
623
534
  readonly authzen?: {
624
535
  readonly vectors: AuthzenVectors;
625
536
  readonly headers?: Readonly<Record<string, string>>;
@@ -631,25 +542,33 @@ type TestCloudApiOptions = {
631
542
  * Runs the conformance runners and the HTTP contract checks against one
632
543
  * PermDock Cloud environment, and validates every response body against
633
544
  * `cloud-api-v1.json`. Point it at a test environment: it creates approvals,
634
- * sends decision events and deliveries to `.invalid` addresses, and pushes
635
- * the catalog the environment already holds.
545
+ * sends decision events and deliveries to `.invalid` addresses, and pushes the
546
+ * catalog the environment already holds.
636
547
  */
637
548
  export declare function testCloudApi(baseUrl: string, keys: CloudApiKeys, options: TestCloudApiOptions): void;
638
549
  //#endregion
639
550
  //#region src/testing/conformance/approvals.d.ts
640
551
  type ApprovalStoreOptions = {
641
552
  /**
642
- * Opens a second store over the same backing storage, as a restarted process
643
- * would. Omit it for stores that do not persist (the resume-after-restart
644
- * case is then skipped).
553
+ * Opens a second client over the same backing storage, as a restarted process
554
+ * would: for a hosted store, `() => cloud(...).approvals`. Omit it for stores
555
+ * that do not persist (the resume-after-restart case is then skipped).
645
556
  */
646
557
  readonly reopen?: () => ApprovalStore | Promise<ApprovalStore>;
558
+ readonly capabilities?: {
559
+ /**
560
+ * Marks the record for `token` expired, or moves its `expiresAt` into the
561
+ * past, in the backing storage. Without it the replace-on-expiry case is
562
+ * skipped.
563
+ */
564
+ readonly expire?: (token: string) => Promise<void> | void;
565
+ };
647
566
  };
648
567
  export declare function testApprovalStore(store: ApprovalStore, options?: ApprovalStoreOptions): void;
649
568
  /**
650
569
  * Checks an `ApprovalPolicySource`: entries are plain JSON, belong to the
651
- * queried tenant or to none, and every entry loads against `policy` (an
652
- * entry that does not would deny every call).
570
+ * queried tenant or to none, and every entry loads against `policy` (an entry
571
+ * that does not would deny every call).
653
572
  */
654
573
  export declare function testApprovalPolicySource(source: ApprovalPolicySource, options: {
655
574
  readonly policy: Policy;
@@ -672,19 +591,19 @@ export declare function testApprovalDelegationSource(source: ApprovalDelegationS
672
591
  readonly at?: string;
673
592
  }): void;
674
593
  /**
675
- * Checks an `IdempotencyStore`: a stored response comes back as written
676
- * until it expires, keys never share an entry, and a later `set` replaces an
677
- * earlier one.
594
+ * Checks an `IdempotencyStore`: a stored response comes back as written until
595
+ * it expires, keys never share an entry, and a later `set` replaces an earlier
596
+ * one.
678
597
  */
679
598
  export declare function testIdempotencyStore(store: IdempotencyStore): void;
680
599
  //#endregion
681
600
  //#region src/testing/conformance/where.d.ts
682
601
  type WhereRow = Readonly<Record<string, unknown>>;
683
602
  /**
684
- * `matches` answers whether the compiled output selects `row`, for example
685
- * by running it against a table holding only that row. With it, every case
686
- * must select the rows the in-memory evaluator keeps, including rows whose
687
- * fields are NULL.
603
+ * `matches` answers whether the compiled output selects `row`, for example by
604
+ * running it against a table holding only that row. With it, every case must
605
+ * select the rows the in-memory evaluator keeps, including rows whose fields
606
+ * are NULL.
688
607
  */
689
608
  export declare function testWhereCompiler<TTarget>(compiler: WhereCompiler<TTarget>, options: {
690
609
  readonly target: TTarget;
@@ -695,6 +614,7 @@ export declare function testWhereCompiler<TTarget>(compiler: WhereCompiler<TTarg
695
614
  //#region src/testing/conformance/credentials.d.ts
696
615
  export declare function testReplayStore(store: ReplayStore): void;
697
616
  export declare function testSetQueue(queue: SetQueue): void;
617
+ export declare function testSsfStreamStore(store: SsfStreamStore): void;
698
618
  export declare function testRevocationFeed(feed: RevocationFeed): void;
699
619
  export declare function testTokenVerifier(verifier: TokenVerifier, options?: {
700
620
  readonly audience?: string;
@@ -702,8 +622,8 @@ export declare function testTokenVerifier(verifier: TokenVerifier, options?: {
702
622
  }): void;
703
623
  /**
704
624
  * `key` is a live key the verifier knows, or a function issuing one (called
705
- * once). `revoke`, when given, revokes it; the runner then expects the key
706
- * to stop verifying.
625
+ * once). `revoke`, when given, revokes it; the runner then expects the key to
626
+ * stop verifying.
707
627
  */
708
628
  export declare function testCredentialVerifier(verifier: CredentialVerifier, options: {
709
629
  readonly key: string | (() => string | Promise<string>);
@@ -761,14 +681,17 @@ export declare function testRelationSource(source: RelationSource, options: {
761
681
  /**
762
682
  * Checks a `PrincipalSource`: `principal` answers each listed id with the
763
683
  * expected principal or `null`, never another id; `principalByIdentity`
764
- * resolves each listed identity to the expected principal id or `null`, and
765
- * an email matches trimmed and in any case.
684
+ * resolves each listed identity to the expected principal id or `null`, and an
685
+ * email matches trimmed and in any case.
766
686
  */
767
687
  export declare function testPrincipalSource(source: PrincipalSource, options: {
768
688
  readonly principals: readonly {
769
689
  readonly id: string;
770
690
  readonly tenant?: string;
771
- /** The principal `principal(id)` returns, or `null` for none; omit to check only the shape. */
691
+ /**
692
+ * The principal `principal(id)` returns, or `null` for none; omit to
693
+ * check only the shape.
694
+ */
772
695
  readonly expect?: Principal | null;
773
696
  }[];
774
697
  readonly identities?: readonly {
@@ -780,41 +703,50 @@ export declare function testPrincipalSource(source: PrincipalSource, options: {
780
703
  //#endregion
781
704
  //#region src/testing/conformance/automations.d.ts
782
705
  /**
783
- * Checks an `AutomationSource`: `automation(id)` answers each listed id
784
- * with a valid Automation v1 record of that id or `null`, never another id;
785
- * a record held to one tenant is `null` when asked for another; an empty or
786
- * unknown id is `null`.
706
+ * Checks an `AutomationSource`: `automation(id)` answers each listed id with a
707
+ * valid Automation v1 record of that id or `null`, never another id; a record
708
+ * held to one tenant is `null` when asked for another; an empty or unknown id
709
+ * is `null`.
787
710
  */
788
711
  export declare function testAutomationSource(source: AutomationSource, options: {
789
712
  readonly automations: readonly {
790
713
  readonly id: string;
791
714
  readonly tenant?: string;
792
- /** The record `automation(id)` returns, or `null` for none; omit to check only the shape. */
715
+ /**
716
+ * The record `automation(id)` returns, or `null` for none; omit to check
717
+ * only the shape.
718
+ */
793
719
  readonly expect?: Automation | null;
794
720
  }[];
795
721
  }): void;
796
722
  /**
797
- * Checks a `SupportSessionSource`: `session(id)` answers each listed id
798
- * with a record of that id or `null`, never another id; `ended` is a
799
- * boolean when present; an empty or unknown id is `null`.
723
+ * Checks a `SupportSessionSource`: `session(id)` answers each listed id with a
724
+ * record of that id or `null`, never another id; `ended` is a boolean when
725
+ * present; an empty or unknown id is `null`.
800
726
  */
801
727
  export declare function testSupportSessionSource(source: SupportSessionSource, options: {
802
728
  readonly sessions: readonly {
803
729
  readonly id: string;
804
- /** `true` for an ended session, `false` for a live one, `null` for an unknown one. */
730
+ /**
731
+ * `true` for an ended session, `false` for a live one, `null` for an
732
+ * unknown one.
733
+ */
805
734
  readonly ended?: boolean | null;
806
735
  }[];
807
736
  }): void;
808
737
  /**
809
- * Checks an `ApprovalWaiter`: a wait ends when its token is woken and not
810
- * when another token is; waking a token nobody waits on resolves; a wait
811
- * whose `expiresAt` has passed ends; an aborted `signal` rejects the wait with its reason.
812
- * Pass `expiry: false` or `abort: false` for a waiter whose runner offers no
813
- * timer or no cancellation, `pending` when the waiter reads a store, and
814
- * `parked` when a wait parks asynchronously.
738
+ * Checks an `ApprovalWaiter`: a wait ends when its token is woken and not when
739
+ * another token is; waking a token nobody waits on resolves; a wait whose
740
+ * `expiresAt` has passed ends; an aborted `signal` rejects the wait with its
741
+ * reason. Pass `expiry: false` or `abort: false` for a waiter whose runner
742
+ * offers no timer or no cancellation, `pending` when the waiter reads a store,
743
+ * and `parked` when a wait parks asynchronously.
815
744
  */
816
745
  export declare function testApprovalWaiter(waiter: ApprovalWaiter, options?: {
817
- /** Opens a pending approval request and returns its token; a fixed token per label when absent. */
746
+ /**
747
+ * Opens a pending approval request and returns its token; a fixed token per
748
+ * label when absent.
749
+ */
818
750
  readonly pending?: (label: string) => string | Promise<string>;
819
751
  /** Resolves once `wait(token)` has parked; one macrotask when absent. */
820
752
  readonly parked?: (token: string) => Promise<void>;
@@ -825,18 +757,24 @@ export declare function testApprovalWaiter(waiter: ApprovalWaiter, options?: {
825
757
  }): void;
826
758
  //#endregion
827
759
  //#region src/testing/delivery-transport.d.ts
828
- /** How a provider fails on its next call: a retryable error, a final error, or a throw from its client. */
760
+ /**
761
+ * How a provider fails on its next call: a retryable error, a final error, or a
762
+ * throw from its client.
763
+ */
829
764
  type DeliveryFailureKind = "retryable" | "final" | "throw";
830
765
  type DeliveryTransportHarness<C extends DeliveryChannel> = {
831
766
  readonly transport: DeliveryTransport<C>;
832
- /** What the provider accepted, one entry per delivery, with the idempotency key it received. */
833
- received(): readonly {
767
+ /**
768
+ * What the provider accepted, one entry per delivery, with the idempotency
769
+ * key it received.
770
+ */
771
+ received: () => readonly {
834
772
  readonly idempotencyKey: string;
835
773
  }[] | Promise<readonly {
836
774
  readonly idempotencyKey: string;
837
775
  }[]>;
838
776
  /** Makes the provider's next call fail this way. */
839
- fail(kind: DeliveryFailureKind): void;
777
+ fail: (kind: DeliveryFailureKind) => void;
840
778
  };
841
779
  type DeliveryTransportOptions<C extends DeliveryChannel> = {
842
780
  readonly channel: C;
@@ -844,13 +782,13 @@ type DeliveryTransportOptions<C extends DeliveryChannel> = {
844
782
  readonly address: string;
845
783
  readonly message: TransportMessages[C];
846
784
  /** A fresh harness per test. */
847
- create(): DeliveryTransportHarness<C>;
785
+ create: () => DeliveryTransportHarness<C>;
848
786
  };
849
787
  /**
850
788
  * Conformance for a `DeliveryTransport`: it sends a checked target with its
851
- * idempotency key, keeps the key on a retry, refuses a target without a
852
- * granted decision before calling the provider, and maps provider errors to
853
- * retryable or final failures without rejecting.
789
+ * idempotency key, keeps the key on a retry, refuses a target without a granted
790
+ * decision before calling the provider, and maps provider errors to retryable
791
+ * or final failures without rejecting.
854
792
  */
855
793
  export declare function testDeliveryTransport<C extends DeliveryChannel>(name: string, options: DeliveryTransportOptions<C>): void;
856
794
  //#endregion
@@ -864,9 +802,15 @@ export declare function testMembershipSource(source: MembershipSource, options:
864
802
  readonly kind?: string;
865
803
  }[];
866
804
  readonly expect?: Record<string, readonly Membership[]>;
867
- /** With the policy, every membership must name one of its scopes and carry its parent ids. */
805
+ /**
806
+ * With the policy, every membership must name one of its scopes and carry
807
+ * its parent ids.
808
+ */
868
809
  readonly policy?: Policy;
869
- /** Passed to every `membershipsFor`; a source keyed by tenant answers nothing without one. */
810
+ /**
811
+ * Passed to every `membershipsFor`; a source keyed by tenant answers
812
+ * nothing without one.
813
+ */
870
814
  readonly tenant?: string;
871
815
  }): void;
872
816
  export declare function testEntitlementSource(source: EntitlementSource, options: {
@@ -923,16 +867,18 @@ export declare const jwtFixtureTokens: {
923
867
  //#endregion
924
868
  //#region src/testing/supabase-fixtures.d.ts
925
869
  /**
926
- * Claim sets in the shape the Supabase custom access token hook produces (the RBAC guide's
927
- * `user_role` claim, optionally mirrored into `app_metadata`, plus a `memberships` array for
928
- * multi-org apps). `tenantPlans` has scoped memberships, `tenant_id` and per-tenant plans in
929
- * `features`, read with `claims: { plans: 'features' }`. `full` sets every field of the
930
- * claim contract plus a `hook.claims` extra claim; `portalContact`, `oauthClient` and
931
- * `actChain` cover a customer contact, a Supabase OAuth server token and an RFC 8693 chain.
932
- * `supportSession`, `supportSessionReadOnly` and `impersonation` are the `act.kind` tokens
933
- * of a support tool; `anonymousSignIn` is a `signInAnonymously()` token read with
934
- * `anonymousSignIns: 'deny'`. Every fixture passes `supabaseClaims()` and
935
- * `schemas/supabase-claims-v1.json`. Plain data: no Supabase types.
870
+ * Claim sets in the shape the Supabase custom access token hook produces (the
871
+ * RBAC guide's `user_role` claim, optionally mirrored into `app_metadata`, plus
872
+ * a `memberships` array for multi-org apps). `tenantPlans` has scoped
873
+ * memberships, `tenant_id` and per-tenant plans in `features`, read with
874
+ * `claims: { plans: 'features' }`. `full` sets every field of the claim
875
+ * contract plus a `hook.claims` extra claim; `portalContact`, `oauthClient` and
876
+ * `actChain` cover a customer contact, a Supabase OAuth server token and an RFC
877
+ * 8693 chain. `supportSession`, `supportSessionReadOnly` and `impersonation`
878
+ * are the `act.kind` tokens of a support tool; `anonymousSignIn` is a
879
+ * `signInAnonymously()` token read with `anonymousSignIns: 'deny'`. Every
880
+ * fixture passes `supabaseClaims()` and `schemas/supabase-claims-v1.json`.
881
+ * Plain data: no Supabase types.
936
882
  */
937
883
  type SupabaseClaimFixture = {
938
884
  readonly claims: Readonly<Record<string, unknown>>;
@@ -975,7 +921,10 @@ type SupabaseClaimFixture = {
975
921
  readonly sessionId: string;
976
922
  readonly readOnly: boolean;
977
923
  };
978
- /** `subject.delegation`: the `scope` claim and the `act` chain of an `oauth-client` actor. */
924
+ /**
925
+ * `subject.delegation`: the `scope` claim and the `act` chain of an
926
+ * `oauth-client` actor.
927
+ */
979
928
  readonly delegation?: {
980
929
  readonly scopes?: readonly string[];
981
930
  readonly chain?: Readonly<Record<string, unknown>>;
@@ -988,7 +937,8 @@ export declare const supabaseClaimFixtures: Readonly<Record<SupabaseClaimFixture
988
937
  * `supabaseClaimFixtures` as a `supabase/sdk` conformance vector file
989
938
  * (`schema/conformance.schema.json`): each case's `input` is a verified
990
939
  * `getClaims()` payload and the `subjectFromSupabase` options, `expected` the
991
- * subject fields it maps to. `JSON.stringify` it for a port in another language.
940
+ * subject fields it maps to. `JSON.stringify` it for a port in another
941
+ * language.
992
942
  */
993
943
  type SupabaseClaimVectors = {
994
944
  readonly feature: "auth.session.get_claims";
@@ -1005,15 +955,15 @@ export declare const supabaseClaimVectors: SupabaseClaimVectors;
1005
955
  /**
1006
956
  * The `permdock supabase inspect --json` manifest for a policy with one
1007
957
  * `tenant` scope, the default `supabase.hook` and a `features` claim from
1008
- * `public.feature_claims`. A package that reads the manifest tests its
1009
- * parser against this value.
958
+ * `public.feature_claims`. A package that reads the manifest tests its parser
959
+ * against this value.
1010
960
  */
1011
961
  export declare const supabaseHookManifestFixture: SupabaseHookManifest;
1012
962
  //#endregion
1013
963
  //#region src/core/problem-types.d.ts
1014
964
  /**
1015
- * The Problem Details types PermDock defines (RFC 9457 section 4). Every
1016
- * other status answers with `about:blank` and its RFC 9110 reason phrase.
965
+ * The Problem Details types PermDock defines (RFC 9457 section 4). Every other
966
+ * status answers with `about:blank` and its RFC 9110 reason phrase.
1017
967
  */
1018
968
  declare const PROBLEM_TYPES: readonly ["denied", "approval-required", "validation", "step-up-required", "not-entitled", "rate-limited", "limit-unavailable", "invalid-signature", "approver-not-eligible"];
1019
969
  type ProblemType = (typeof PROBLEM_TYPES)[number];
@@ -1027,4 +977,4 @@ type ProblemType = (typeof PROBLEM_TYPES)[number];
1027
977
  */
1028
978
  export declare const PROBLEM_EXAMPLES: Readonly<Record<ProblemType, ProblemDetails>>;
1029
979
  //#endregion
1030
- export { type AgentAdapterOptions, type AgentCall, type AgentMounted, type AgentOutcome, type AgentRuntimeContext, type AgentRuntimeDomain, type AgentRuntimeModel, type AgentRuntimeMounted, type AgentRuntimeOperation, type AgentRuntimeOptions, type AgentRuntimeScenarioName, type AgentScenarioDomain, type AgentScenarioName, type AgentToolName, type ApprovalStoreOptions, type AuthzenEvaluationVector, type AuthzenEvaluationsVector, type AuthzenSearchVector, type AuthzenVectors, type ClientParityCase, type ClientParityOptions, type ClientStoreFactory, type ClientStoreFactoryOptions, type ClientStoreHandle, type ClientStorePermDock, type ClientStoreStatus, type CloudApiKeys, type DecisionProviderRunnerOptions, type DeliveryFailureKind, type DeliveryTransportHarness, type DeliveryTransportOptions, type DescribePolicyConfig, type HttpAdapterOptions, type HttpCall, type HttpMounted, type HttpOp, type HttpResult, type HttpScenarioDomain, type HttpScenarioName, type LegacyParityCase, type MatrixCell, type MatrixOutcome, type OrmParityCase, type OrmParityOptions, type OrmParityReport, type OrmParityRunInput, type OrmParityScenario, type RlsDbOutcome, type RlsFieldsOutcome, type RlsParityCase, type RlsParityFixture, type RlsParityOptions, type RlsParityReport, type RlsParitySubject, type RlsQueryFn, type RlsQueryResult, type SupabaseClaimFixture, type SupabaseClaimFixtureName, type SupabaseClaimVectors, type TestAuthzenOptions, type TestCloudApiOptions, type TestCloudPlatformOptions, expectTypeOf, supabaseMembershipsBudget };
980
+ export { type AgentAdapterOptions, type AgentCall, type AgentMounted, type AgentOutcome, type AgentRuntimeContext, type AgentRuntimeDomain, type AgentRuntimeModel, type AgentRuntimeMounted, type AgentRuntimeOperation, type AgentRuntimeOptions, type AgentRuntimeScenarioName, type AgentScenarioDomain, type AgentScenarioName, type AgentToolName, type ApprovalStoreOptions, type AuthzenEvaluationVector, type AuthzenEvaluationsVector, type AuthzenSearchVector, type AuthzenVectors, type ClientParityCase, type ClientParityOptions, type ClientStoreFactory, type ClientStoreFactoryOptions, type ClientStoreHandle, type ClientStorePermDock, type ClientStoreStatus, type CloudApiKeys, type DecisionProviderRunnerOptions, type DeliveryFailureKind, type DeliveryTransportHarness, type DeliveryTransportOptions, type DescribePolicyConfig, type HttpAdapterOptions, type HttpCall, type HttpMounted, type HttpOp, type HttpResult, type HttpScenarioDomain, type HttpScenarioName, type LegacyParityCase, type MatrixCell, type MatrixOutcome, type OrmParityCase, type OrmParityOptions, type OrmParityReport, type OrmParityRunInput, type OrmParityScenario, type PolicyMatrixCell, type PolicyMatrixReport, type RlsDbOutcome, type RlsFieldsOutcome, type RlsParityCase, type RlsParityFixture, type RlsParityOptions, type RlsParityReport, type RlsParitySubject, type RlsQueryFn, type RlsQueryResult, type SeedRows, type SupabaseClaimFixture, type SupabaseClaimFixtureName, type SupabaseClaimVectors, type TestAuthzenOptions, type TestCloudApiOptions, type TestCloudPlatformOptions, expectTypeOf, policyMatrix, supabaseMembershipsBudget, testOrmParity, testRlsParity };