permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -1,15 +1,26 @@
1
- import { At as SnapshotSource, C as Policy, Ct as SettingsSource, Dr as CustomRole, Ft as TokenVerifier, Mr as Membership, Nr as Principal, Pr as Subject, Pt as TokenSigner, Rt as WhereCompiler, Tt as Snapshot, Wn as ApprovalPolicySource, at as DecisionSink, bn as PolicySource, bt as RelationSource, dt as LimitStore, gt as MembershipSource, jt as SubjectResolver, ln as PermDock, mn as WhereResult, nt as CredentialVerifier, st as EntitlementSource, un as PermDockOptions, xt as RoleSource } from "../policy-IB6yxpC3.js";
2
- import { f as Permission, g as ResourceInit, u as InferPermissionTree } from "../permissions-DttnqqxC.js";
3
- import { r as Role } from "../vocabulary-DA8a8zif.js";
4
- import { f as ApprovalStore } from "../types-aqOHTHcp.js";
5
- import { t as ToolMap } from "../types-Bvc4oWT6.js";
6
- import { n as SupabaseHookManifest } from "../manifest-uDS9y5de.js";
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, at as SettingsSource, dt as TokenVerifier, et as MembershipSource, ir as Subject, 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-DzwivBgR.js";
2
+ import { C as InferPermissionTree, k as ResourceInit, r as Role, w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { Q as LegacyCheck } from "../index-DOVf7RJv.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-D7eeLJER.js";
5
+ import { o as PolicySource } from "../hosted-DBDX0M-P.js";
6
+ import { a as ApprovalDelegationSource, m as ApprovalStore } from "../types-CCpc2Dcv.js";
7
+ import { a as ProblemDetails } from "../errors-C2PXIv4c.js";
8
+ import { c as ModelMap, t as AgentPermDock, u as ToolMap } from "../create-BDS7wc3y.js";
9
+ import { c as AccessReviewStore } from "../types-_sHy8BQf.js";
10
+ import { F as IdempotencyStore } from "../index-CxGUswIC.js";
11
+ import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
12
+ import { s as SupportSessionSource } from "../index-Chrs5fQ-.js";
13
+ import { a as AutomationSource, t as Automation } from "../automation-BMZPIVUM.js";
14
+ import { c as DeliveryTransport, g as TransportMessages } from "../types-DX0LaKTb.js";
15
+ import { n as SupabaseHookManifest } from "../manifest-mx5ghSFM.js";
7
16
  import { t as supabaseMembershipsBudget } from "../budget-JqcRqyhK.js";
8
- import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
9
- import { g as ReplayStore } from "../types-Cq_H8N_X.js";
10
- import { v as DirectoryStore } from "../index-C8z4RjQV.js";
11
- import { a as SaasProject } from "../permissions-CDgvKG5L.js";
12
- import { n as saasPolicy } from "../policy-D2W7uv19.js";
17
+ import { t as CloudApproverOptions } from "../types-C8-KNsFf.js";
18
+ import { n as ApprovalWaiter } from "../waiter-CKy4MQSY.js";
19
+ import { g as SetQueue, l as ReplayStore } from "../types-DiQjupG2.js";
20
+ import { r as SnapshotStorage } from "../types-BjV-fqcA.js";
21
+ import { y as DirectoryStore } from "../index-SGdIQyzc.js";
22
+ import { a as SaasProject } from "../permissions-oEWfl-kl.js";
23
+ import { n as saasPolicy } from "../policy-Czo4n3Hs.js";
13
24
  import { expectTypeOf } from "vitest";
14
25
  //#region src/testing/describe-policy.d.ts
15
26
  type MatrixOutcome = "granted" | "denied" | "approval-required";
@@ -81,7 +92,7 @@ type RlsParityOptions = {
81
92
  readonly role?: "authenticated" | "anon";
82
93
  /**
83
94
  * Tenant-defined roles the subjects' memberships may hold. `decide` resolves them through a
84
- * `RoleSource`; each membership's claim carries them as the compact `grants` map, which the
95
+ * `CustomRoleSource`; each membership's claim carries them as the compact `grants` map, which the
85
96
  * helpers read in `jwt` mode. Seeding the `database`-mode tables is the caller's job.
86
97
  */
87
98
  readonly customRoles?: readonly CustomRole[];
@@ -113,7 +124,7 @@ type RlsParityReport = {
113
124
  readonly ok: boolean;
114
125
  readonly results: readonly RlsParityCase[];
115
126
  };
116
- export declare function rlsParity<TUser>(policy: Policy<TUser>, options: RlsParityOptions): Promise<RlsParityReport>;
127
+ export declare function testRlsParity<TUser>(policy: Policy<TUser>, options: RlsParityOptions): Promise<RlsParityReport>;
117
128
  //#endregion
118
129
  //#region src/testing/orm-parity.d.ts
119
130
  type OrmParityScenario<TUser = unknown> = {
@@ -161,7 +172,7 @@ type OrmParityReport = {
161
172
  * A partial `where()` (a closure grant it cannot compile) may be refused or
162
173
  * return fewer rows, never more.
163
174
  */
164
- export declare function ormParity<TUser>(policy: Policy<TUser>, scenarios: readonly OrmParityScenario<TUser>[], options: OrmParityOptions<TUser>): Promise<OrmParityReport>;
175
+ export declare function testOrmParity<TUser>(policy: Policy<TUser>, scenarios: readonly OrmParityScenario<TUser>[], options: OrmParityOptions<TUser>): Promise<OrmParityReport>;
165
176
  //#endregion
166
177
  //#region src/testing/client-parity.d.ts
167
178
  type ClientParityCase = {
@@ -178,7 +189,7 @@ type ClientParityCase = {
178
189
  readonly stricter?: boolean;
179
190
  };
180
191
  type ClientParityOptions = {
181
- readonly customRoles?: RoleSource;
192
+ readonly customRoles?: CustomRoleSource;
182
193
  };
183
194
  /**
184
195
  * Asserts that `fromSnapshot(permdock.snapshot())` never grants what the
@@ -186,6 +197,26 @@ type ClientParityOptions = {
186
197
  */
187
198
  export declare function testClientParity(policy: Policy, cases: readonly ClientParityCase[], options?: ClientParityOptions): void;
188
199
  //#endregion
200
+ //#region src/testing/legacy-parity.d.ts
201
+ type LegacyParityCase = {
202
+ readonly name: string;
203
+ /** The value the policy's `subject` function receives. */
204
+ readonly user: unknown;
205
+ readonly permission: Permission;
206
+ readonly row?: unknown;
207
+ /**
208
+ * The answer PermDock should give where it intentionally differs from the
209
+ * legacy check; absent means the two must agree.
210
+ */
211
+ readonly expect?: boolean;
212
+ };
213
+ /**
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`.
217
+ */
218
+ export declare function testLegacyParity(policy: Policy, legacy: LegacyCheck, cases: readonly LegacyParityCase[]): void;
219
+ //#endregion
189
220
  //#region src/testing/client-store.d.ts
190
221
  type ClientStoreStatus = "ready" | "pending" | "stale" | "server-only";
191
222
  /** The client surface every UI adapter hands to components. */
@@ -229,7 +260,7 @@ export declare function snapshotFixture(policy: Policy, subject: unknown, option
229
260
  readonly simulated?: boolean;
230
261
  }): Promise<Snapshot>;
231
262
  //#endregion
232
- //#region src/testing/http-adapter.d.ts
263
+ //#region src/testing/http-adapter/domain.d.ts
233
264
  /**
234
265
  * What a mount wires into its framework. Every value is server-side: the
235
266
  * subject comes from a verified bearer token, memberships and plans from the
@@ -254,9 +285,9 @@ type HttpScenarioDomain = {
254
285
  readonly ticks: (org: string | undefined, signal: AbortSignal) => AsyncIterable<SaasProject>;
255
286
  /** The `:org` segment of a path; mounts may read their route param instead. */
256
287
  readonly org: (path: string) => string | undefined;
257
- readonly customRoles: RoleSource;
288
+ readonly customRoles: CustomRoleSource;
258
289
  readonly store: ApprovalStore;
259
- readonly limits: LimitStore;
290
+ readonly limits: Limits;
260
291
  /** A project row by id, whatever its org: tenant checks belong to the policy. */
261
292
  readonly project: (id: string | undefined) => SaasProject | null;
262
293
  };
@@ -352,6 +383,8 @@ type HttpAdapterOptions = {
352
383
  /** The mount serves the events stream; the `stream-*` scenarios run only then. */
353
384
  readonly streams?: boolean;
354
385
  };
386
+ //#endregion
387
+ //#region src/testing/http-adapter/scenarios.d.ts
355
388
  /**
356
389
  * Real-life HTTP scenarios over the shared SaaS domain. `mount` builds the
357
390
  * application once with the adapter under test; every expectation below is
@@ -383,7 +416,7 @@ type AgentScenarioDomain = {
383
416
  * approval.
384
417
  */
385
418
  readonly tools: ToolMap & { readonly [K in AgentToolName]: ToolMap[K]; };
386
- readonly customRoles: RoleSource;
419
+ readonly customRoles: CustomRoleSource;
387
420
  readonly store: ApprovalStore;
388
421
  };
389
422
  type AgentCall = {
@@ -414,13 +447,55 @@ type AgentAdapterOptions = {
414
447
  */
415
448
  export declare function testAgentAdapter(options: AgentAdapterOptions): void;
416
449
  //#endregion
450
+ //#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. */
452
+ type AgentRuntimeContext = {
453
+ /** `null` for a call with no authenticated user. */
454
+ readonly user: string | null;
455
+ readonly org: string;
456
+ };
457
+ type AgentRuntimeOperation = "project_read" | "project_search" | "api_keys_revoke_all";
458
+ type AgentRuntimeModel = "standard" | "frontier";
459
+ /** What a mount wires into its `AgentPermDock`. */
460
+ type AgentRuntimeDomain = {
461
+ readonly policy: typeof saasPolicy;
462
+ /** The principal for `user` with the plans of `org`, or `null`. Throws for `AGENT_THROWING_USER`. */
463
+ readonly subject: (user: string | null, org: string) => Principal | null;
464
+ /**
465
+ * `project_read` loads the row named by `args.id`; `project_search` has a
466
+ * `results` permission; `api_keys_revoke_all` needs approval.
467
+ */
468
+ readonly operations: ToolMap & { readonly [K in AgentRuntimeOperation]: ToolMap[K]; };
469
+ /** `standard` for any reader, `frontier` for an admin on the `pro` plan. */
470
+ readonly models: ModelMap & { readonly [K in AgentRuntimeModel]: ModelMap[K]; };
471
+ readonly customRoles: CustomRoleSource;
472
+ readonly store: ApprovalStore;
473
+ };
474
+ type AgentRuntimeMounted = {
475
+ readonly agent: AgentPermDock<AgentRuntimeContext>;
476
+ readonly close?: () => Promise<void> | void;
477
+ };
478
+ type AgentRuntimeScenarioName = "granted" | "denied" | "cross-tenant" | "anonymous" | "subject-throws" | "loader-throws" | "missing-row" | "approval-required" | "unmapped-operation" | "allowed-operations" | "model-gate" | "permitted-models" | "results-filter" | "gateway-options";
479
+ type AgentRuntimeOptions = {
480
+ readonly name: string;
481
+ readonly mount: (domain: AgentRuntimeDomain) => AgentRuntimeMounted | Promise<AgentRuntimeMounted>;
482
+ /** Scenarios the runtime cannot express, each with a reason. */
483
+ readonly skip?: Readonly<Partial<Record<AgentRuntimeScenarioName, string>>>;
484
+ };
485
+ /**
486
+ * Runs the `AgentPermDock` contract against a runtime: operations decided by
487
+ * name, the listing hint, the model gate, the results filter and gateway
488
+ * attribution. Every failure denies, and no method throws.
489
+ */
490
+ export declare function testAgentRuntime(options: AgentRuntimeOptions): void;
491
+ //#endregion
417
492
  //#region src/testing/authzen.d.ts
418
493
  type Entity = {
419
494
  readonly type: string;
420
495
  readonly id?: string;
421
496
  readonly properties?: Readonly<Record<string, unknown>>;
422
497
  };
423
- type AuthZenEvaluationVector = {
498
+ type AuthzenEvaluationVector = {
424
499
  readonly request: {
425
500
  readonly subject: Entity;
426
501
  readonly action: {
@@ -431,7 +506,7 @@ type AuthZenEvaluationVector = {
431
506
  };
432
507
  readonly expected: boolean;
433
508
  };
434
- type AuthZenEvaluationsVector = {
509
+ type AuthzenEvaluationsVector = {
435
510
  readonly request: {
436
511
  readonly subject?: Entity;
437
512
  readonly action?: {
@@ -450,7 +525,7 @@ type AuthZenEvaluationsVector = {
450
525
  readonly decision: boolean;
451
526
  }[];
452
527
  };
453
- type AuthZenSearchVector = {
528
+ type AuthzenSearchVector = {
454
529
  readonly request: Readonly<Record<string, unknown>>;
455
530
  readonly expected: {
456
531
  readonly results: readonly Readonly<Record<string, unknown>>[];
@@ -461,17 +536,17 @@ type AuthZenSearchVector = {
461
536
  * (`decisions-*.json` for Basic and Batch, `search/{subject,resource,action}`
462
537
  * `results.json` for Search), so the official files load unchanged.
463
538
  */
464
- type AuthZenVectors = {
465
- readonly evaluation?: readonly AuthZenEvaluationVector[];
466
- readonly evaluations?: readonly AuthZenEvaluationsVector[];
539
+ type AuthzenVectors = {
540
+ readonly evaluation?: readonly AuthzenEvaluationVector[];
541
+ readonly evaluations?: readonly AuthzenEvaluationsVector[];
467
542
  readonly search?: {
468
- readonly subject?: readonly AuthZenSearchVector[];
469
- readonly resource?: readonly AuthZenSearchVector[];
470
- readonly action?: readonly AuthZenSearchVector[];
543
+ readonly subject?: readonly AuthzenSearchVector[];
544
+ readonly resource?: readonly AuthzenSearchVector[];
545
+ readonly action?: readonly AuthzenSearchVector[];
471
546
  };
472
547
  };
473
- type TestAuthZenOptions = {
474
- readonly vectors: AuthZenVectors;
548
+ type TestAuthzenOptions = {
549
+ readonly vectors: AuthzenVectors;
475
550
  /** Origin the requests are addressed to; the discovery document must name it. */
476
551
  readonly origin?: string;
477
552
  readonly headers?: Readonly<Record<string, string>>;
@@ -479,7 +554,7 @@ type TestAuthZenOptions = {
479
554
  readonly discovery?: boolean;
480
555
  };
481
556
  /** Runs AuthZEN 1.0 interop vectors against an Authorization API endpoint. */
482
- export declare function testAuthZen(handle: (request: Request) => Promise<Response>, options: TestAuthZenOptions): void;
557
+ export declare function testAuthzen(handle: (request: Request) => Promise<Response>, options: TestAuthzenOptions): void;
483
558
  type TodoUser = {
484
559
  readonly id: string;
485
560
  readonly identity: string;
@@ -509,23 +584,156 @@ export declare const authzenTodoData: {
509
584
  * every user against every action on their own and on Rick's todo, one batch
510
585
  * per user, and the three searches.
511
586
  */
512
- export declare function authzenTodoVectors(): AuthZenVectors;
587
+ export declare function authzenTodoVectors(): AuthzenVectors;
513
588
  //#endregion
514
- //#region src/testing/conformance.d.ts
515
- export declare function testSubjectResolver<TInput>(resolver: SubjectResolver<TInput>, options: {
516
- readonly invalid: TInput;
589
+ //#region src/testing/cloud-api/platform-checks.d.ts
590
+ type TestCloudPlatformOptions = {
591
+ /** A `PERMDOCK_CLOUD_TOKEN` for `project`: read-only, pinned to one environment. */
592
+ readonly token: string;
593
+ /** The project the token reads; defaults to the environment. */
594
+ 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. */
596
+ readonly unpublished?: {
597
+ readonly project: string;
598
+ readonly token: string;
599
+ };
600
+ /** Registers a test MCP client with RFC 7591; skipped unless true. */
601
+ readonly registration?: boolean;
602
+ };
603
+ //#endregion
604
+ //#region src/testing/cloud-api/index.d.ts
605
+ type CloudApiKeys = {
606
+ /** The `client` key the application deploys (`PERMDOCK_CLOUD_KEY`). */
607
+ readonly client: string;
608
+ /** The `admin` key; the authoring checks are skipped without it. */
609
+ readonly admin?: string;
610
+ /** An `export` key; its key-kind check is skipped without it. */
611
+ readonly export?: string;
612
+ };
613
+ type TestCloudApiOptions = {
614
+ readonly environment?: string;
615
+ readonly fetch?: typeof globalThis.fetch;
616
+ /** Signs the `PermDock-Approver` tokens; its issuer is a trusted issuer for `approver`. */
617
+ readonly approver: CloudApproverOptions;
618
+ /** A fresh `PermDock-Subject` token per call; the snapshot checks are skipped without it. */
619
+ readonly subject?: () => string | Promise<string>;
620
+ /** Verifies the environment's policy documents for `testPolicySource`. */
621
+ readonly verifier?: TokenVerifier;
622
+ /** AuthZEN vectors for the hosted ADS, with the caller's credentials as `headers`. */
623
+ readonly authzen?: {
624
+ readonly vectors: AuthzenVectors;
625
+ readonly headers?: Readonly<Record<string, string>>;
626
+ };
627
+ /** The platform issuer and project read API at `baseUrl`; skipped without it. */
628
+ readonly platform?: TestCloudPlatformOptions;
629
+ };
630
+ /**
631
+ * Runs the conformance runners and the HTTP contract checks against one
632
+ * PermDock Cloud environment, and validates every response body against
633
+ * `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.
636
+ */
637
+ export declare function testCloudApi(baseUrl: string, keys: CloudApiKeys, options: TestCloudApiOptions): void;
638
+ //#endregion
639
+ //#region src/testing/conformance/approvals.d.ts
640
+ type ApprovalStoreOptions = {
641
+ /**
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).
645
+ */
646
+ readonly reopen?: () => ApprovalStore | Promise<ApprovalStore>;
647
+ };
648
+ export declare function testApprovalStore(store: ApprovalStore, options?: ApprovalStoreOptions): void;
649
+ /**
650
+ * 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).
653
+ */
654
+ export declare function testApprovalPolicySource(source: ApprovalPolicySource, options: {
655
+ readonly policy: Policy;
656
+ readonly tenant: string;
657
+ readonly unknown?: string;
517
658
  }): void;
518
- export declare function testMembershipSource(source: MembershipSource, options: {
519
- readonly principals: readonly {
520
- readonly id: string;
521
- readonly kind?: string;
522
- }[];
523
- readonly expect?: Record<string, readonly Membership[]>;
524
- /** With the policy, every membership must name one of its scopes and carry its parent ids. */
525
- readonly policy?: Policy;
526
- /** Passed to every `membershipsFor`; a source keyed by tenant answers nothing without one. */
659
+ /**
660
+ * Checks an `AccessReviewStore`: create is kept, items page, a decision is
661
+ * recorded once, only a revoked item can be marked applied, and close is once.
662
+ */
663
+ export declare function testAccessReviewStore(store: AccessReviewStore): void;
664
+ /**
665
+ * Checks an `ApprovalDelegationSource`: entries are plain JSON, name the
666
+ * delegate, and are active at `at`. A query for another delegate is empty.
667
+ */
668
+ export declare function testApprovalDelegationSource(source: ApprovalDelegationSource, options: {
669
+ readonly delegate: string;
670
+ readonly delegator: string;
527
671
  readonly tenant?: string;
672
+ readonly at?: string;
673
+ }): void;
674
+ /**
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.
678
+ */
679
+ export declare function testIdempotencyStore(store: IdempotencyStore): void;
680
+ //#endregion
681
+ //#region src/testing/conformance/where.d.ts
682
+ type WhereRow = Readonly<Record<string, unknown>>;
683
+ /**
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.
688
+ */
689
+ export declare function testWhereCompiler<TTarget>(compiler: WhereCompiler<TTarget>, options: {
690
+ readonly target: TTarget;
691
+ readonly isFailClosed?: (compiled: unknown) => boolean;
692
+ readonly matches?: (compiled: unknown, row: WhereRow) => boolean | Promise<boolean>;
693
+ }): void;
694
+ //#endregion
695
+ //#region src/testing/conformance/credentials.d.ts
696
+ export declare function testReplayStore(store: ReplayStore): void;
697
+ export declare function testSetQueue(queue: SetQueue): void;
698
+ export declare function testRevocationFeed(feed: RevocationFeed): void;
699
+ export declare function testTokenVerifier(verifier: TokenVerifier, options?: {
700
+ readonly audience?: string;
701
+ readonly issuer?: string;
528
702
  }): void;
703
+ /**
704
+ * `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.
707
+ */
708
+ export declare function testCredentialVerifier(verifier: CredentialVerifier, options: {
709
+ readonly key: string | (() => string | Promise<string>);
710
+ readonly revoke?: () => void | Promise<void>;
711
+ }): void;
712
+ export declare function testTokenSigner(signer: TokenSigner, options: {
713
+ readonly verifier: TokenVerifier;
714
+ }): void;
715
+ //#endregion
716
+ //#region src/testing/conformance/runtime-stores.d.ts
717
+ export declare function testLimitStore(store: LimitStore): void;
718
+ export declare function testDecisionSink(sink: DecisionSink): void;
719
+ export declare function testSnapshotSource(source: SnapshotSource): void;
720
+ export declare function testPolicySource(source: PolicySource, options?: {
721
+ readonly policy?: Policy;
722
+ }): void;
723
+ //#endregion
724
+ //#region src/testing/conformance/providers.d.ts
725
+ type DecisionProviderRunnerOptions = {
726
+ /** A permission the provider handles. */
727
+ readonly permission: Permission;
728
+ readonly subject: Subject;
729
+ readonly data?: unknown;
730
+ /** The same provider wired to a transport that fails; it must deny. */
731
+ readonly unavailable?: DecisionProvider;
732
+ };
733
+ export declare function testDecisionProvider(provider: DecisionProvider, options: DecisionProviderRunnerOptions): void;
734
+ export declare function testSnapshotStorage(storage: SnapshotStorage): void;
735
+ //#endregion
736
+ //#region src/testing/conformance/relations.d.ts
529
737
  /**
530
738
  * A `RelationSource` answers facts only: well-formed chains nearest first and
531
739
  * no longer than `depth`, holders with principal ids or group references and
@@ -548,6 +756,119 @@ export declare function testRelationSource(source: RelationSource, options: {
548
756
  readonly links?: Readonly<Record<string, string>>;
549
757
  };
550
758
  }): void;
759
+ //#endregion
760
+ //#region src/testing/conformance/principals.d.ts
761
+ /**
762
+ * Checks a `PrincipalSource`: `principal` answers each listed id with the
763
+ * 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.
766
+ */
767
+ export declare function testPrincipalSource(source: PrincipalSource, options: {
768
+ readonly principals: readonly {
769
+ readonly id: string;
770
+ readonly tenant?: string;
771
+ /** The principal `principal(id)` returns, or `null` for none; omit to check only the shape. */
772
+ readonly expect?: Principal | null;
773
+ }[];
774
+ readonly identities?: readonly {
775
+ readonly identity: PrincipalIdentity;
776
+ /** The id of the principal the identity resolves to, or `null` for none. */
777
+ readonly expect: string | null;
778
+ }[];
779
+ }): void;
780
+ //#endregion
781
+ //#region src/testing/conformance/automations.d.ts
782
+ /**
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`.
787
+ */
788
+ export declare function testAutomationSource(source: AutomationSource, options: {
789
+ readonly automations: readonly {
790
+ readonly id: string;
791
+ readonly tenant?: string;
792
+ /** The record `automation(id)` returns, or `null` for none; omit to check only the shape. */
793
+ readonly expect?: Automation | null;
794
+ }[];
795
+ }): void;
796
+ /**
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`.
800
+ */
801
+ export declare function testSupportSessionSource(source: SupportSessionSource, options: {
802
+ readonly sessions: readonly {
803
+ readonly id: string;
804
+ /** `true` for an ended session, `false` for a live one, `null` for an unknown one. */
805
+ readonly ended?: boolean | null;
806
+ }[];
807
+ }): void;
808
+ /**
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.
815
+ */
816
+ export declare function testApprovalWaiter(waiter: ApprovalWaiter, options?: {
817
+ /** Opens a pending approval request and returns its token; a fixed token per label when absent. */
818
+ readonly pending?: (label: string) => string | Promise<string>;
819
+ /** Resolves once `wait(token)` has parked; one macrotask when absent. */
820
+ readonly parked?: (token: string) => Promise<void>;
821
+ readonly expiry?: boolean;
822
+ readonly abort?: boolean;
823
+ /** Milliseconds a wait may take to end after its trigger. Defaults to 1000. */
824
+ readonly timeout?: number;
825
+ }): void;
826
+ //#endregion
827
+ //#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. */
829
+ type DeliveryFailureKind = "retryable" | "final" | "throw";
830
+ type DeliveryTransportHarness<C extends DeliveryChannel> = {
831
+ readonly transport: DeliveryTransport<C>;
832
+ /** What the provider accepted, one entry per delivery, with the idempotency key it received. */
833
+ received(): readonly {
834
+ readonly idempotencyKey: string;
835
+ }[] | Promise<readonly {
836
+ readonly idempotencyKey: string;
837
+ }[]>;
838
+ /** Makes the provider's next call fail this way. */
839
+ fail(kind: DeliveryFailureKind): void;
840
+ };
841
+ type DeliveryTransportOptions<C extends DeliveryChannel> = {
842
+ readonly channel: C;
843
+ /** An address the provider accepts on `channel`. */
844
+ readonly address: string;
845
+ readonly message: TransportMessages[C];
846
+ /** A fresh harness per test. */
847
+ create(): DeliveryTransportHarness<C>;
848
+ };
849
+ /**
850
+ * 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.
854
+ */
855
+ export declare function testDeliveryTransport<C extends DeliveryChannel>(name: string, options: DeliveryTransportOptions<C>): void;
856
+ //#endregion
857
+ //#region src/testing/conformance/identity.d.ts
858
+ export declare function testSubjectResolver<TInput>(resolver: SubjectResolver<TInput>, options: {
859
+ readonly invalid: TInput;
860
+ }): void;
861
+ export declare function testMembershipSource(source: MembershipSource, options: {
862
+ readonly principals: readonly {
863
+ readonly id: string;
864
+ readonly kind?: string;
865
+ }[];
866
+ readonly expect?: Record<string, readonly Membership[]>;
867
+ /** With the policy, every membership must name one of its scopes and carry its parent ids. */
868
+ readonly policy?: Policy;
869
+ /** Passed to every `membershipsFor`; a source keyed by tenant answers nothing without one. */
870
+ readonly tenant?: string;
871
+ }): void;
551
872
  export declare function testEntitlementSource(source: EntitlementSource, options: {
552
873
  readonly principal: {
553
874
  readonly id: string;
@@ -555,7 +876,7 @@ export declare function testEntitlementSource(source: EntitlementSource, options
555
876
  readonly tenant: string;
556
877
  readonly expect?: readonly string[];
557
878
  }): void;
558
- export declare function testRoleSource(source: RoleSource, options: {
879
+ export declare function testCustomRoleSource(source: CustomRoleSource, options: {
559
880
  readonly tenant: string;
560
881
  readonly declared: readonly (string | Role)[];
561
882
  /** When set, every custom role's `grants` must resolve inside the ceiling. */
@@ -566,69 +887,14 @@ export declare function testRoleSource(source: RoleSource, options: {
566
887
  */
567
888
  readonly every?: readonly string[];
568
889
  }): void;
569
- export declare function testLimitStore(store: LimitStore): void;
570
- export declare function testDecisionSink(sink: DecisionSink): void;
571
- export declare function testSnapshotSource(source: SnapshotSource): void;
572
- export declare function testPolicySource(source: PolicySource, options?: {
573
- readonly policy?: Policy;
574
- }): void;
575
- export declare function testReplayStore(store: ReplayStore): void;
576
- export declare function testRevocationFeed(feed: RevocationFeed): void;
577
890
  export declare function testDirectoryStore(store: DirectoryStore, options: {
578
891
  readonly tenants: readonly [string, string];
579
892
  }): void;
580
- type ApprovalStoreOptions = {
581
- /**
582
- * Opens a second store over the same backing storage, as a restarted process
583
- * would. Omit it for stores that do not persist (the resume-after-restart
584
- * case is then skipped).
585
- */
586
- readonly reopen?: () => ApprovalStore | Promise<ApprovalStore>;
587
- };
588
- export declare function testApprovalStore(store: ApprovalStore, options?: ApprovalStoreOptions): void;
589
- export declare function testTokenVerifier(verifier: TokenVerifier, options?: {
590
- readonly audience?: string;
591
- readonly issuer?: string;
592
- }): void;
593
893
  /** Settings for `tenant`, or `undefined`; a thrown source fails the runner. */
594
894
  export declare function testSettingsSource(source: SettingsSource, options: {
595
895
  readonly tenant: string;
596
896
  readonly unknown?: string;
597
897
  }): void;
598
- /**
599
- * Checks an `ApprovalPolicySource`: entries are plain JSON, belong to the
600
- * queried tenant or to none, and every entry loads against `policy` (an
601
- * entry that does not would deny every call).
602
- */
603
- export declare function testApprovalPolicySource(source: ApprovalPolicySource, options: {
604
- readonly policy: Policy;
605
- readonly tenant: string;
606
- readonly unknown?: string;
607
- }): void;
608
- /**
609
- * `key` is a live key the verifier knows, or a function issuing one (called
610
- * once). `revoke`, when given, revokes it; the runner then expects the key
611
- * to stop verifying.
612
- */
613
- export declare function testCredentialVerifier(verifier: CredentialVerifier, options: {
614
- readonly key: string | (() => string | Promise<string>);
615
- readonly revoke?: () => void | Promise<void>;
616
- }): void;
617
- export declare function testTokenSigner(signer: TokenSigner, options: {
618
- readonly verifier: TokenVerifier;
619
- }): void;
620
- type WhereRow = Readonly<Record<string, unknown>>;
621
- /**
622
- * `matches` answers whether the compiled output selects `row`, for example
623
- * by running it against a table holding only that row. With it, every case
624
- * must select the rows the in-memory evaluator keeps, including rows whose
625
- * fields are NULL.
626
- */
627
- export declare function testWhereCompiler<TTarget>(compiler: WhereCompiler<TTarget>, options: {
628
- readonly target: TTarget;
629
- readonly isFailClosed?: (compiled: unknown) => boolean;
630
- readonly matches?: (compiled: unknown, row: WhereRow) => boolean | Promise<boolean>;
631
- }): void;
632
898
  //#endregion
633
899
  //#region src/testing/jwt-fixtures.d.ts
634
900
  export declare const jwtFixtureJwks: {
@@ -650,9 +916,9 @@ export declare const jwtFixtureTokens: {
650
916
  readonly wrongIss: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6ImF0K2p3dCJ9.eyJzdWIiOiJ1XzEiLCJpc3MiOiJodHRwczovL2V2aWwuZXhhbXBsZS5jb20iLCJhdWQiOiJodHRwczovL2FwaS5leGFtcGxlLmNvbSIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoyMDAwMDAwMDAwfQ.tIcLHLa9JLtKz1gqjRGdr5DFbUzRDs5KsoPsJCxspvbBcsFfRFG2G0XJnd1h4QHyZ_5B4OhY3W_jIIsnOPD9Bg";
651
917
  readonly unknownKid: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoibm9wZSIsInR5cCI6ImF0K2p3dCJ9.eyJzdWIiOiJ1XzEiLCJpc3MiOiJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIiwiYXVkIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MjAwMDAwMDAwMH0.walgG5GvpCVBnkMtkdw-epi5c93JqfvAM_N4EWR9Tqhiw_cnzITnlQyoVfihECmV1fqtFrhwM1RCIRJvd38zAQ";
652
918
  readonly none: "eyJhbGciOiJub25lIn0.eyJzdWIiOiJ1XzEiLCJpc3MiOiJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIiwiYXVkIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJleHAiOjIwMDAwMDAwMDAsImlhdCI6MTcwMDAwMDAwMH0.";
653
- readonly snapshot: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6InBlcm1kb2NrLXNuYXBzaG90K2p3dCJ9.eyJzbmFwc2hvdCI6eyJ2IjoyLCJpc3N1ZWRBdCI6MTcwMDAwMDAwMCwic3ViamVjdCI6eyJwcmluY2lwYWwiOnsiaWQiOiJ1XzEiLCJyb2xlcyI6WyJtZW1iZXIiXX0sImNvbnRleHQiOnt9fSwicm9sZXMiOlsibWVtYmVyIl0sImdyYW50cyI6W10sInRlbmFudHMiOltdfSwic3ViIjoidV8xIiwiaXNzIjoiaHR0cHM6Ly9hcHAuZXhhbXBsZS5jb20iLCJhdWQiOiJodHRwczovL2FwcC5leGFtcGxlLmNvbSIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoyMDAwMDAwMDAwLCJqdGkiOiJzbmFwX2ZpeHR1cmUifQ.4itaYctluoCwU-syytUxArtS_FRyNAti2SZxuSH-nKIMr7-Sb3h1Q3xugn_vPR1eupV4fVNIe6dH27_EiyDvCA";
654
- readonly approval: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6InBlcm1kb2NrLWFwcHJvdmFsK2p3dCJ9.eyJhcHByb3ZhbCI6eyJ0b2tlbiI6InBkMS5hYmMiLCJwZXJtaXNzaW9uIjoicG9zdC5kZWxldGUiLCJyZXNvdXJjZSI6eyJ0eXBlIjoicG9zdCIsImlkIjoiNDIifSwic3RhdHVzIjoiYXBwcm92ZWQifSwic3ViIjoidV8xIiwiaXNzIjoiaHR0cHM6Ly9hcHAuZXhhbXBsZS5jb20iLCJhdWQiOiJodHRwczovL2FwcC5leGFtcGxlLmNvbSIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoyMDAwMDAwMDAwLCJqdGkiOiJhcHJfZml4dHVyZSJ9.UHsoSzQCo68G7ee-EFqdzMLvmqaKlFIMdQKFuqZEM4yUQnJsJJTXbld_aCXcyfN-IdjF9cj2F5EHzsV4nLKbBg";
655
- readonly decisions: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6InBlcm1kb2NrLWRlY2lzaW9ucytqd3QifQ.eyJldmVudHMiOltdLCJpc3MiOiJodHRwczovL2FwcC5leGFtcGxlLmNvbSIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoyMDAwMDAwMDAwLCJqdGkiOiJkZWNfZml4dHVyZSJ9.UZhJd72yFGxHOdjYbzcGYUPgYjvLwOPCtHKxEbLu56SdKSKUDCREXmEBI9WaCPKWjlTBnnIKMYwjG8I8RATJCg";
919
+ readonly snapshot: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6InZuZC5wZXJtZG9jay5zbmFwc2hvdCtqd3QifQ.eyJzbmFwc2hvdCI6eyJ2IjoxLCJzdWJqZWN0Ijp7InByaW5jaXBhbCI6eyJpZCI6InVfMSIsInJvbGVzIjpbIm1lbWJlciJdfSwiY29udGV4dCI6e319LCJyb2xlcyI6WyJtZW1iZXIiXSwiZ3JhbnRzIjpbXSwidGVuYW50cyI6W119LCJzdWIiOiJ1XzEiLCJpYXQiOjE3MDAwMDAwMDAsImp0aSI6InNuYXBfZml4dHVyZSIsImlzcyI6Imh0dHBzOi8vYXBwLmV4YW1wbGUuY29tIiwiYXVkIjoiaHR0cHM6Ly9hcHAuZXhhbXBsZS5jb20iLCJleHAiOjIwMDAwMDAwMDB9.41KijBuOn1Ehodp60-Pn6qx_WrHQ-BiVUmYy2vjcHjO3o1dopXxjnHJP7P1c-6ghYgrvucPu7hZrDjTtPhxWBw";
920
+ readonly approval: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6InZuZC5wZXJtZG9jay5hcHByb3ZhbCtqd3QifQ.eyJzdWIiOiJ1XzEiLCJ0b2tlbiI6InNoYS0yNTY6NDdERVFwajhIQlNhLV9USW1XLTVKQ2V1UWVSa201Tk1wSldaRzNoU3VGVSIsInJlc29sdmVkX2J5IjoidV8yIiwiYXBwcm92YWxzIjpbeyJieSI6InVfMiIsImF0IjoiMjAyMy0xMS0xNFQyMjoxMzoyMFoifV0sImF1dGhvcml6YXRpb25fZGV0YWlscyI6W3sidHlwZSI6InBvc3QiLCJhY3Rpb25zIjpbImRlbGV0ZSJdLCJpZGVudGlmaWVyIjoiNDIifV0sImlhdCI6MTcwMDAwMDAwMCwianRpIjoiYXByX2ZpeHR1cmUiLCJpc3MiOiJodHRwczovL2FwcC5leGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXBwLmV4YW1wbGUuY29tIiwiZXhwIjoyMDAwMDAwMDAwfQ.Q76F3tDT2FrEnxD9TjdLfEayJEyyGUWHu6bTCCl5Flegcl9-o370agNVhcV03Khfidm-lK7gPg05ZiYcpCfyBQ";
921
+ readonly decisions: "eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiMjAyNi0wOSIsInR5cCI6InZuZC5wZXJtZG9jay5ldmlkZW5jZStqd3QifQ.eyJldmVudHMiOltdLCJpYXQiOjE3MDAwMDAwMDAsImp0aSI6ImRlY19maXh0dXJlIiwiaXNzIjoiaHR0cHM6Ly9hcHAuZXhhbXBsZS5jb20iLCJhdWQiOiJodHRwczovL2FwcC5leGFtcGxlLmNvbSIsImV4cCI6MjAwMDAwMDAwMH0.oGiFmCEFWUAEBtLO3F_rnGMSKBhb9rIxng4YLwRbBTA3fudrbJMcJD2BhNH99cjcBa1xCmADfdOnTc-Ltq-kAA";
656
922
  };
657
923
  //#endregion
658
924
  //#region src/testing/supabase-fixtures.d.ts
@@ -660,7 +926,7 @@ export declare const jwtFixtureTokens: {
660
926
  * Claim sets in the shape the Supabase custom access token hook produces (the RBAC guide's
661
927
  * `user_role` claim, optionally mirrored into `app_metadata`, plus a `memberships` array for
662
928
  * multi-org apps). `tenantPlans` has scoped memberships, `tenant_id` and per-tenant plans in
663
- * `features`, read with `plans: 'features'`. `full` sets every field of the
929
+ * `features`, read with `claims: { plans: 'features' }`. `full` sets every field of the
664
930
  * claim contract plus a `hook.claims` extra claim; `portalContact`, `oauthClient` and
665
931
  * `actChain` cover a customer contact, a Supabase OAuth server token and an RFC 8693 chain.
666
932
  * `supportSession`, `supportSessionReadOnly` and `impersonation` are the `act.kind` tokens
@@ -672,7 +938,9 @@ type SupabaseClaimFixture = {
672
938
  readonly claims: Readonly<Record<string, unknown>>;
673
939
  /** `subjectFromSupabase` options the case needs. */
674
940
  readonly options?: {
675
- readonly plans?: string;
941
+ readonly claims?: {
942
+ readonly plans?: string;
943
+ };
676
944
  readonly anonymousSignIns?: "deny";
677
945
  };
678
946
  readonly expect: {
@@ -742,4 +1010,21 @@ export declare const supabaseClaimVectors: SupabaseClaimVectors;
742
1010
  */
743
1011
  export declare const supabaseHookManifestFixture: SupabaseHookManifest;
744
1012
  //#endregion
745
- export { type AgentAdapterOptions, type AgentCall, type AgentMounted, type AgentOutcome, 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 DescribePolicyConfig, type HttpAdapterOptions, type HttpCall, type HttpMounted, type HttpOp, type HttpResult, type HttpScenarioDomain, type HttpScenarioName, 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, expectTypeOf, supabaseMembershipsBudget };
1013
+ //#region src/core/problem-types.d.ts
1014
+ /**
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.
1017
+ */
1018
+ declare const PROBLEM_TYPES: readonly ["denied", "approval-required", "validation", "step-up-required", "not-entitled", "rate-limited", "limit-unavailable", "invalid-signature", "approver-not-eligible"];
1019
+ type ProblemType = (typeof PROBLEM_TYPES)[number];
1020
+ //#endregion
1021
+ //#region src/testing/problem-examples.d.ts
1022
+ /**
1023
+ * One RFC 9457 body per PermDock problem type, exactly as the HTTP adapters
1024
+ * write it for a `post.delete` request by subject `u_123`. A client tests its
1025
+ * error handling against these; `tests/standards/problem-details.test.ts`
1026
+ * rebuilds each from the code that emits it, and the docs show the same JSON.
1027
+ */
1028
+ export declare const PROBLEM_EXAMPLES: Readonly<Record<ProblemType, ProblemDetails>>;
1029
+ //#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 };