permdock 0.4.0 → 0.6.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 (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.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 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.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-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1,32 @@
1
+ import { T as Policy } from "./policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "./permdock-SV8ZINYT.js";
3
+ import { m as ApprovalStore } from "./types-BdtSDbBO.js";
4
+ //#region src/server/evaluations.d.ts
5
+ /** AuthZEN 1.0 section 7.1.2.1 `options.evaluations_semantic` values. */
6
+ declare const EVALUATIONS_SEMANTICS: readonly ["execute_all", "deny_on_first_deny", "permit_on_first_permit"];
7
+ type EvaluationsSemantic = (typeof EVALUATIONS_SEMANTICS)[number];
8
+ /** The batch's `evaluations_semantic`: `execute_all` when absent, `undefined` for an unknown value. */
9
+ declare function evaluationsSemantic(body: Readonly<Record<string, unknown>>): EvaluationsSemantic | undefined;
10
+ /**
11
+ * Evaluates `items` under `semantic`: all at once for `execute_all`, else in
12
+ * order, stopping after the first deny or permit.
13
+ */
14
+ declare function evaluateBatch<T extends {
15
+ readonly decision: boolean;
16
+ }>(items: readonly unknown[], semantic: EvaluationsSemantic, rowOf: (item: unknown) => Promise<T>): Promise<T[]>;
17
+ declare function evaluationsHandler(options: {
18
+ readonly policy: Policy;
19
+ readonly resolve?: (request: Request) => Promise<PermDock>;
20
+ readonly getPermDock?: (query?: {
21
+ readonly tenant?: string;
22
+ }) => Promise<PermDock>;
23
+ readonly store?: ApprovalStore;
24
+ readonly adapter?: string;
25
+ /** The most evaluations one POST may carry; a larger batch is a 413 before any instance is resolved. */
26
+ readonly maxEvaluations?: number;
27
+ }): {
28
+ readonly POST: (request: Request) => Promise<Response>;
29
+ readonly GET: (request: Request) => Promise<Response>;
30
+ };
31
+ //#endregion
32
+ export { evaluationsSemantic as a, evaluationsHandler as i, EvaluationsSemantic as n, evaluateBatch as r, EVALUATIONS_SEMANTICS as t };
@@ -1,10 +1,13 @@
1
- import { t as compact } from "./compact-CAf557ZB.js";
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { t as PROBLEM_BASE } from "./validation-error-ZfUHbKvf.js";
3
- import { a as wireDenials } from "./problem-details-DECUnXAn.js";
4
- import { c as listPermissions, g as formerScopes, h as formerKeys } from "./permission-registry-BsblpB-z.js";
3
+ import { t as wireDenials } from "./wire-denial-C7PaVYEM.js";
4
+ import { c as listPermissions, g as formerScopes, h as formerKeys } from "./permission-registry-Br4jSNVi.js";
5
+ import { h as secondsAt } from "./time-DkWjdL98.js";
5
6
  import { n as resourceRef } from "./resource-ref-CaS9yVPi.js";
6
- import { c as problemResponse, d as validationProblem, n as batchTooLarge } from "./problem-CnWraVhC.js";
7
- import { i as readApprovalHeader, s as resumeDecision } from "./helpers-C9YmyBIa.js";
7
+ import { n as readBodyText } from "./body-text-QcXok_SI.js";
8
+ import { c as problemResponse, d as validationProblem, n as batchTooLarge } from "./problem-CTviyH5L.js";
9
+ import { i as readApprovalHeader, s as resumeDecision } from "./helpers-CBYVMjwh.js";
10
+ import { t as bodyTooLarge } from "./body-CH5of8Ne.js";
8
11
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
9
12
  //#region src/core/decision.ts
10
13
  /** The denial for a check that failed or named no declared permission. */
@@ -47,12 +50,20 @@ function permissionLookup(tree) {
47
50
  return named(`${type}.${action}`) ?? byPair.get(`${type}\u0000${action}`);
48
51
  };
49
52
  }
50
- /** The row an item's resource describes: its `properties`, else `{ id }`. */
53
+ /** AuthZEN's sentinel resource id for a collection: the type as a whole, no row. */
54
+ const COLLECTION_ID = "*";
55
+ /** A resource id as a row id: `undefined` for none, a non-scalar or the collection sentinel `*`. */
56
+ function wireResourceId(id) {
57
+ if (typeof id !== "string" && typeof id !== "number") return;
58
+ const text = String(id);
59
+ return text === COLLECTION_ID ? void 0 : text;
60
+ }
61
+ /** The row an item's resource describes: its `properties`, else `{ id }`, else none for `id: "*"`. */
51
62
  function itemResourceData(resource) {
52
63
  const properties = resource?.properties;
53
64
  if (properties !== null && typeof properties === "object") return properties;
54
- const id = resource?.id;
55
- if (typeof id === "string" || typeof id === "number") return { id: String(id) };
65
+ const id = wireResourceId(resource?.id);
66
+ return id === void 0 ? void 0 : { id };
56
67
  }
57
68
  //#endregion
58
69
  //#region src/server/web-bot-auth.ts
@@ -61,6 +72,7 @@ const DIRECTORY_TIMEOUT_MS = 5e3;
61
72
  const DEFAULT_MAX_AGE = 300;
62
73
  const FUTURE_SKEW = 60;
63
74
  const DIRECTORY_PATH = "/.well-known/http-message-signatures-directory";
75
+ const WEB_BOT_AUTH_TAG = "web-bot-auth";
64
76
  var InvalidSignatureError = class extends Error {
65
77
  name = "InvalidSignatureError";
66
78
  response;
@@ -110,7 +122,18 @@ function discoverViaSignatureAgent(options) {
110
122
  };
111
123
  return { lookup };
112
124
  }
113
- async function verifyWebBotAuth(request, options) {
125
+ /**
126
+ * Verifies Web Bot Auth requests: an RFC 9421 signature tagged `web-bot-auth`
127
+ * that covers `@authority`, and `signature-agent` when the request sends
128
+ * `Signature-Agent` (draft-meunier-webbotauth-httpsig-protocol).
129
+ */
130
+ function webBotAuthVerifier(options) {
131
+ return Object.freeze({
132
+ name: "web-bot-auth",
133
+ verify: (request) => verifySignature(request, options, true)
134
+ });
135
+ }
136
+ async function verifySignature(request, options, profile) {
114
137
  if (options === void 0 || options.verify === false) return;
115
138
  const signatureInput = request.headers.get("Signature-Input");
116
139
  if (signatureInput === null) {
@@ -122,13 +145,15 @@ async function verifyWebBotAuth(request, options) {
122
145
  if (parsed === void 0 || signatureHeader === null) throw reject("Signature-Input could not be parsed");
123
146
  const signature = parseSignature(signatureHeader, parsed.label);
124
147
  if (signature === void 0) throw reject("Signature could not be parsed");
125
- const now = options.now?.() ?? Math.floor(Date.now() / 1e3);
148
+ const now = secondsAt(options.now?.());
126
149
  const maxAge = options.maxAge ?? DEFAULT_MAX_AGE;
127
150
  if (typeof parsed.created !== "number") throw reject("Signature-Input created is required");
128
151
  if (parsed.created > now + FUTURE_SKEW) throw reject("Signature-Input created is in the future");
129
152
  if (now - parsed.created > maxAge) throw reject("Signature-Input created is too old");
130
153
  if (typeof parsed.expires === "number" && parsed.expires < now) throw reject("Signature-Input expires is in the past");
131
154
  if (parsed.keyid === void 0) throw reject("Signature-Input keyid is required");
155
+ const violation = profile ? profileViolation(request, parsed) : void 0;
156
+ if (violation !== void 0) throw reject(violation);
132
157
  const agent = parseSignatureAgent(request.headers.get("Signature-Agent"), parsed.label);
133
158
  const lookup = typeof options.keys === "function" ? options.keys : options.keys.lookup;
134
159
  let key;
@@ -152,6 +177,11 @@ async function verifyWebBotAuth(request, options) {
152
177
  kind: "web-bot-auth"
153
178
  });
154
179
  }
180
+ function profileViolation(request, parsed) {
181
+ if (parsed.tag !== WEB_BOT_AUTH_TAG) return `Signature-Input tag must be "${WEB_BOT_AUTH_TAG}"`;
182
+ if (!parsed.components.includes("@authority")) return "Signature-Input must cover @authority";
183
+ if (request.headers.has("Signature-Agent") && !parsed.components.includes("signature-agent")) return "Signature-Input must cover signature-agent";
184
+ }
155
185
  function reject(detail) {
156
186
  return new InvalidSignatureError(invalidSignatureProblem(detail));
157
187
  }
@@ -167,6 +197,7 @@ function parseSignatureInput(header) {
167
197
  expires: inner.expires,
168
198
  keyid: inner.keyid,
169
199
  alg: inner.alg,
200
+ tag: inner.tag,
170
201
  innerListAndParams: member.value.trim()
171
202
  });
172
203
  }
@@ -213,7 +244,8 @@ function parseInnerListAndParams(value) {
213
244
  created: asUnix(params["created"]),
214
245
  expires: asUnix(params["expires"]),
215
246
  keyid: typeof params["keyid"] === "string" ? params["keyid"] : void 0,
216
- alg: typeof params["alg"] === "string" ? params["alg"] : void 0
247
+ alg: typeof params["alg"] === "string" ? params["alg"] : void 0,
248
+ tag: typeof params["tag"] === "string" ? params["tag"] : void 0
217
249
  });
218
250
  }
219
251
  function parseQuotedList(inner) {
@@ -367,10 +399,83 @@ function decodeSfBytes(value) {
367
399
  }
368
400
  //#endregion
369
401
  //#region src/server/evaluations.ts
402
+ /** AuthZEN 1.0 section 7.1.2.1 `options.evaluations_semantic` values. */
403
+ const EVALUATIONS_SEMANTICS = [
404
+ "execute_all",
405
+ "deny_on_first_deny",
406
+ "permit_on_first_permit"
407
+ ];
408
+ /** The batch's `evaluations_semantic`: `execute_all` when absent, `undefined` for an unknown value. */
409
+ function evaluationsSemantic(body) {
410
+ const options = body["options"];
411
+ const value = isRecord(options) ? options["evaluations_semantic"] : void 0;
412
+ if (value === void 0) return "execute_all";
413
+ return EVALUATIONS_SEMANTICS.find((semantic) => semantic === value);
414
+ }
415
+ function unknownSemanticProblem() {
416
+ return validationProblem(`options.evaluations_semantic must be one of ${EVALUATIONS_SEMANTICS.join(", ")}`);
417
+ }
418
+ /**
419
+ * Evaluates `items` under `semantic`: all at once for `execute_all`, else in
420
+ * order, stopping after the first deny or permit.
421
+ */
422
+ async function evaluateBatch(items, semantic, rowOf) {
423
+ if (semantic === "execute_all") return Promise.all(items.map(rowOf));
424
+ const stopOn = semantic === "permit_on_first_permit";
425
+ const rows = [];
426
+ for (const item of items) {
427
+ const row = await rowOf(item);
428
+ rows.push(row);
429
+ if (row.decision === stopOn) break;
430
+ }
431
+ return rows;
432
+ }
433
+ /** AuthZEN 1.0 section 10.1.1: a response echoes the request's `X-Request-ID`. */
434
+ function withRequestId(request, response) {
435
+ const id = request.headers.get("x-request-id");
436
+ if (id === null || id === "") return response;
437
+ const headers = new Headers(response.headers);
438
+ headers.set("X-Request-ID", id);
439
+ return new Response(response.body, {
440
+ status: response.status,
441
+ statusText: response.statusText,
442
+ headers
443
+ });
444
+ }
445
+ /** AuthZEN 1.0 section 9.1 PDP metadata for the PDP at `pdp`. */
446
+ function authzenMetadata(pdp, search = {}) {
447
+ return compact({
448
+ policy_decision_point: pdp,
449
+ access_evaluation_endpoint: `${pdp}/access/v1/evaluation`,
450
+ access_evaluations_endpoint: `${pdp}/access/v1/evaluations`,
451
+ search_subject_endpoint: search.subject === true ? `${pdp}/access/v1/search/subject` : void 0,
452
+ search_resource_endpoint: search.resource === true ? `${pdp}/access/v1/search/resource` : void 0,
453
+ search_action_endpoint: search.action === true ? `${pdp}/access/v1/search/action` : void 0
454
+ });
455
+ }
456
+ /**
457
+ * `reason_admin` and `reason_user` for a decision that is not granted, from
458
+ * the denial roles and reasons the context already carries. The user reason
459
+ * names no role, grant or subject.
460
+ */
461
+ function evaluationReasons(decision, permission) {
462
+ switch (decision.outcome) {
463
+ case "granted": return {};
464
+ case "denied": return {
465
+ reason_admin: { en: `${permission} denied: ${decision.denials.map((denial) => `${denial.role ?? "none"} (${denial.reason})`).join(", ")}.` },
466
+ reason_user: { en: `${permission} is not permitted.` }
467
+ };
468
+ case "approval-required": return {
469
+ reason_admin: { en: `${permission} requires human approval (${decision.reason}).` },
470
+ reason_user: { en: `${permission} requires approval.` }
471
+ };
472
+ default: return decision;
473
+ }
474
+ }
370
475
  function permissionOf(lookup, item) {
371
476
  return lookup(typeof item.action?.name === "string" ? item.action.name : void 0, item.resource);
372
477
  }
373
- function evaluationRow(decision) {
478
+ function evaluationRow(decision, permission) {
374
479
  switch (decision.outcome) {
375
480
  case "granted": return {
376
481
  decision: true,
@@ -386,14 +491,16 @@ function evaluationRow(decision) {
386
491
  permdock: {
387
492
  ...decision,
388
493
  denials: wireDenials(decision.denials)
389
- }
494
+ },
495
+ ...evaluationReasons(decision, permission)
390
496
  }
391
497
  };
392
498
  case "approval-required": return {
393
499
  decision: false,
394
500
  context: {
395
501
  outcome: "approval-required",
396
- permdock: decision
502
+ permdock: decision,
503
+ ...evaluationReasons(decision, permission)
397
504
  }
398
505
  };
399
506
  default: return decision;
@@ -412,11 +519,14 @@ function applyApprovalResume(decision, permission, permdock, store, request, res
412
519
  }
413
520
  function evaluateOne(lookup, permdock, item, store, header, adapter) {
414
521
  const permission = permissionOf(lookup, item);
415
- if (permission === void 0) return Promise.resolve(NO_GRANT);
522
+ if (permission === void 0) return Promise.resolve({
523
+ decision: NO_GRANT,
524
+ permission: typeof item.action?.name === "string" ? item.action.name : "unknown"
525
+ });
416
526
  const data = itemResourceData(item.resource);
417
527
  const decide = permdock.decide;
418
528
  const decision = decide(permission, data, compact({
419
- source: "endpoint",
529
+ call: "endpoint",
420
530
  adapter,
421
531
  trusted: false,
422
532
  boundary: "decision-endpoint"
@@ -426,11 +536,14 @@ function evaluateOne(lookup, permdock, item, store, header, adapter) {
426
536
  permission,
427
537
  subject: permdock.subject,
428
538
  store,
429
- resource: resourceRef(permission, data, item.resource?.id),
539
+ resource: resourceRef(permission, data, wireResourceId(item.resource?.id)),
430
540
  adapter,
431
541
  token: header,
432
542
  consume: false
433
- });
543
+ }).then((resumed) => ({
544
+ decision: resumed,
545
+ permission: permission.key
546
+ }));
434
547
  }
435
548
  async function resolvePermdock(options, request, tenant) {
436
549
  if (options.resolve !== void 0) {
@@ -440,14 +553,16 @@ async function resolvePermdock(options, request, tenant) {
440
553
  if (options.getPermDock !== void 0) return options.getPermDock(tenant === void 0 ? void 0 : { tenant });
441
554
  throw new TypeError("evaluations handler needs resolve or getPermDock");
442
555
  }
443
- function createEvaluationsHandler(options) {
556
+ function evaluationsHandler(options) {
444
557
  const adapter = options.adapter ?? "server";
445
558
  const lookup = permissionLookup(options.policy.permissions);
446
559
  const maxEvaluations = options.maxEvaluations ?? 256;
447
560
  const POST = async (request) => {
561
+ const read = await readBodyText(request);
562
+ if (!read.ok) return read.cause === "too-large" ? bodyTooLarge() : validationProblem("evaluations body was not valid JSON");
448
563
  let body;
449
564
  try {
450
- body = await request.json();
565
+ body = JSON.parse(read.text);
451
566
  } catch {
452
567
  return validationProblem("evaluations body was not valid JSON");
453
568
  }
@@ -456,6 +571,8 @@ function createEvaluationsHandler(options) {
456
571
  if (evaluations === void 0) return validationProblem("evaluations array is required");
457
572
  if (!Array.isArray(evaluations)) return validationProblem("evaluations must be an array");
458
573
  if (evaluations.length > maxEvaluations) return batchTooLarge(maxEvaluations);
574
+ const semantic = evaluationsSemantic(body);
575
+ if (semantic === void 0) return unknownSemanticProblem();
459
576
  const header = readApprovalHeader(request.headers);
460
577
  let permdock;
461
578
  try {
@@ -464,21 +581,15 @@ function createEvaluationsHandler(options) {
464
581
  if (error instanceof InvalidSignatureError) return error.response;
465
582
  throw error;
466
583
  }
467
- const rows = await Promise.all(evaluations.map(async (item) => {
468
- return evaluationRow(await evaluateOne(lookup, permdock, item !== null && typeof item === "object" ? item : {}, options.store, header, adapter));
469
- }));
584
+ const rows = await evaluateBatch(evaluations, semantic, async (item) => {
585
+ const evaluated = await evaluateOne(lookup, permdock, item !== null && typeof item === "object" ? item : {}, options.store, header, adapter);
586
+ return evaluationRow(evaluated.decision, evaluated.permission);
587
+ });
470
588
  return Response.json({ evaluations: rows });
471
589
  };
472
590
  const GET = async (request) => {
473
591
  const url = new URL(request.url);
474
- if (url.pathname.includes("authzen-configuration")) {
475
- const origin = url.origin;
476
- return Response.json({
477
- policy_decision_point: origin,
478
- access_evaluation_endpoint: `${origin}/access/v1/evaluation`,
479
- access_evaluations_endpoint: `${origin}/access/v1/evaluations`
480
- });
481
- }
592
+ if (url.pathname.includes("authzen-configuration")) return Response.json(authzenMetadata(url.origin));
482
593
  const tenant = url.searchParams.get("tenant") ?? void 0;
483
594
  let permdock;
484
595
  try {
@@ -491,9 +602,9 @@ function createEvaluationsHandler(options) {
491
602
  return Response.json(await Promise.resolve(snapshot));
492
603
  };
493
604
  return {
494
- POST,
495
- GET
605
+ POST: async (request) => withRequestId(request, await POST(request)),
606
+ GET: async (request) => withRequestId(request, await GET(request))
496
607
  };
497
608
  }
498
609
  //#endregion
499
- export { invalidSignatureProblem as a, itemResourceData as c, discoverViaSignatureAgent as i, permissionLookup as l, createEvaluationsHandler as n, invalidSignatureResponse as o, InvalidSignatureError as r, verifyWebBotAuth as s, applyApprovalResume as t, NO_GRANT as u };
610
+ export { wireResourceId as _, evaluationReasons as a, unknownSemanticProblem as c, discoverViaSignatureAgent as d, invalidSignatureProblem as f, permissionLookup as g, itemResourceData as h, evaluateBatch as i, withRequestId as l, webBotAuthVerifier as m, applyApprovalResume as n, evaluationsHandler as o, invalidSignatureResponse as p, authzenMetadata as r, evaluationsSemantic as s, EVALUATIONS_SEMANTICS as t, InvalidSignatureError as u, NO_GRANT as v };
@@ -1,8 +1,8 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock, wr as Delegation } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { c as ApprovalRequest, f as ApprovalStore } from "../types-Br9IXUBG.js";
4
- import { t as InstanceOptions } from "../instance-options-plkrsAog.js";
5
- import { t as ToolMap } from "../types-DvupZE0w.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { u as ApprovalRequest } from "../types-BdtSDbBO.js";
5
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-CBMmFie-.js";
6
6
  //#region src/eve/create.d.ts
7
7
  /** Structural `SessionAuthContext` from `eve`. */
8
8
  type EvePrincipal = {
@@ -49,14 +49,10 @@ type EveContext = Pick<EveApprovalContext, "session" | "callId">;
49
49
  type EveApprovers = {
50
50
  readonly roles: readonly string[];
51
51
  } | ((responder: EvePrincipal, request: ApprovalRequest) => boolean);
52
- type EvePermDockOptions<TUser = unknown> = InstanceOptions & {
52
+ type EvePermDockOptions<TUser = unknown> = Omit<AgentAdapterOptions<EveContext, TUser>, "subject"> & {
53
+ /** Defaults to `subjectFromEve`: the session initiator's id and `roles` attribute. */
53
54
  readonly subject?: (context: EveContext) => TUser | Promise<TUser>;
54
- readonly actor?: (context: EveContext) => unknown;
55
- readonly delegation?: (context: EveContext) => Delegation | undefined | Promise<Delegation | undefined>;
56
- readonly tenant?: string | ((context: EveContext) => string | undefined | Promise<string | undefined>);
57
- readonly tools: ToolMap;
58
55
  readonly approvers?: EveApprovers;
59
- readonly store?: ApprovalStore;
60
56
  };
61
57
  type EveRequestResult = "not-applicable" | "user-approval" | {
62
58
  readonly type: "denied";
@@ -73,14 +69,14 @@ type EveApprovalPair = {
73
69
  readonly request: (ctx: EveApprovalContext) => Promise<EveRequestResult>;
74
70
  readonly response: (ctx: EveResponseContext) => Promise<EveResponseResult>;
75
71
  };
76
- type EvePermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
72
+ type EvePermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDock<EveContext, V> & {
77
73
  readonly approval: EveApprovalPair;
78
74
  readonly approvalFor: (permission: Permission, data?: (input: unknown) => unknown) => EveApprovalPair;
79
- readonly permdock: (ctx: EveContext) => Promise<PermDock<V>>;
75
+ readonly getPermDock: (ctx: EveContext) => Promise<PermDock<V>>;
80
76
  };
81
77
  export declare function rolesOf(principal: EvePrincipal | null | undefined): string[];
82
- export declare function subjectFromSession(context: EveContext): unknown;
83
- export declare function actorFromSession(context: EveContext): unknown;
84
- export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: EvePermDockOptions<TUser>): EvePermDock<V>;
78
+ export declare function subjectFromEve(context: EveContext): unknown;
79
+ export declare function actorFromEve(context: EveContext): unknown;
80
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: EvePermDockOptions<TUser>): EvePermDock<V>;
85
81
  //#endregion
86
82
  export type { EveApprovalContext, EveApprovalPair, EveApprovers, EveContext, EvePermDock, EvePermDockOptions, EvePrincipal, EveRequestResult, EveResponseContext, EveResponseResult };
package/dist/eve/index.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as isApprovalError } from "../errors-DRnGZHzF.js";
3
- import { r as memoryApprovalStore } from "../store-ILkLUj_o.js";
4
- import { o as resolveApproval } from "../helpers-C9YmyBIa.js";
5
- import { r as instanceOptions } from "../build-instance-DIIV9DbC.js";
6
- import { n as createAgentKernel } from "../kernel-CB3LrIJM.js";
2
+ import { c as withApp } from "../permdock-BrAscV28.js";
3
+ import { c as isApprovalError } from "../types-DqzsnlSA.js";
4
+ import { o as resolveApproval } from "../helpers-CBYVMjwh.js";
5
+ import { t as agentRuntime } from "../create-CGm28gyI.js";
7
6
  import { t as boundedMap } from "../lru-8q4WZjBV.js";
8
7
  //#region src/eve/create.ts
9
8
  const TOKENS_PER_PROCESS = 1e3;
@@ -13,7 +12,7 @@ function rolesOf(principal) {
13
12
  if (!Array.isArray(roles)) return [];
14
13
  return roles.filter((role) => typeof role === "string");
15
14
  }
16
- function subjectFromSession(context) {
15
+ function subjectFromEve(context) {
17
16
  const initiator = context.session?.auth?.initiator;
18
17
  if (initiator === void 0 || initiator === null) return null;
19
18
  return {
@@ -21,7 +20,7 @@ function subjectFromSession(context) {
21
20
  roles: rolesOf(initiator)
22
21
  };
23
22
  }
24
- function actorFromSession(context) {
23
+ function actorFromEve(context) {
25
24
  const auth = context.session?.auth;
26
25
  const initiator = auth?.initiator;
27
26
  const current = auth?.current;
@@ -51,21 +50,15 @@ function mayApprove(approvers, responder, request) {
51
50
  function callKey(sessionId, callId) {
52
51
  return JSON.stringify([sessionId ?? null, callId]);
53
52
  }
54
- function createPermDock(policy, options) {
55
- const store = options.store ?? memoryApprovalStore();
53
+ function createPermDock(policy, given) {
54
+ const options = withApp(policy, given);
55
+ const store = options.store;
56
56
  const tokensByCall = boundedMap(TOKENS_PER_PROCESS);
57
- const kernel = createAgentKernel(policy, {
58
- ...compact({
59
- tenant: options.tenant,
60
- delegation: options.delegation
61
- }),
62
- ...instanceOptions(options),
63
- subject: options.subject ?? subjectFromSession,
64
- actor: options.actor ?? actorFromSession,
65
- tools: options.tools,
66
- store,
67
- adapter: "eve"
68
- });
57
+ const { agent, kernel } = agentRuntime(policy, {
58
+ ...options,
59
+ subject: options.subject ?? subjectFromEve,
60
+ actor: options.actor ?? actorFromEve
61
+ }, "eve");
69
62
  const approverOf = async (responder, sessionId) => {
70
63
  try {
71
64
  return (await kernel.instance({ session: {
@@ -82,6 +75,7 @@ function createPermDock(policy, options) {
82
75
  const pairFor = (bindingFor) => {
83
76
  const request = async (ctx) => {
84
77
  const binding = bindingFor(ctx.toolName);
78
+ if (binding === void 0 && options.unmapped === "allow") return "not-applicable";
85
79
  const verdict = binding === void 0 ? await kernel.decideTool(ctx.toolName, ctx.toolInput, ctx) : await kernel.evaluate(binding, ctx.toolName, ctx.toolInput, ctx, { denyPending: true });
86
80
  if (verdict.outcome === "approval-required" && ctx.callId !== void 0) tokensByCall.set(callKey(ctx.session?.id, ctx.callId), verdict.token);
87
81
  return mapVerdict(verdict);
@@ -105,7 +99,7 @@ function createPermDock(policy, options) {
105
99
  };
106
100
  const response = async (ctx) => {
107
101
  const token = await tokenOf(ctx);
108
- if (token === void 0) return {
102
+ if (token === void 0 || store === void 0) return {
109
103
  status: "rejected",
110
104
  reason: "approval-not-found"
111
105
  };
@@ -158,7 +152,7 @@ function createPermDock(policy, options) {
158
152
  response
159
153
  };
160
154
  };
161
- const approval = pairFor((toolName) => Object.hasOwn(options.tools, toolName) ? options.tools[toolName] : void 0);
155
+ const approval = pairFor((toolName) => Object.hasOwn(options.operations, toolName) ? options.operations[toolName] : void 0);
162
156
  const approvalFor = (permission, data) => {
163
157
  const binding = compact({
164
158
  permission,
@@ -166,11 +160,11 @@ function createPermDock(policy, options) {
166
160
  });
167
161
  return pairFor(() => binding);
168
162
  };
169
- return {
163
+ return Object.freeze({
164
+ ...agent,
170
165
  approval,
171
- approvalFor,
172
- permdock: (ctx) => kernel.instance(ctx)
173
- };
166
+ approvalFor
167
+ });
174
168
  }
175
169
  //#endregion
176
- export { actorFromSession, createPermDock, rolesOf, subjectFromSession };
170
+ export { actorFromEve, createPermDock, rolesOf, subjectFromEve };
@@ -0,0 +1,23 @@
1
+ import { l as isRfc3339, u as isoAt } from "./time-DkWjdL98.js";
2
+ //#region src/core/event-time.ts
3
+ const MAX_TIME_VALUE = 864e13;
4
+ /**
5
+ * An event time as RFC 3339, or `undefined` when there is none or it is not a
6
+ * time: NumericDate seconds are converted and an RFC 3339 string passes through.
7
+ * Never throws, so a decision event never fails on a malformed expiry.
8
+ */
9
+ function eventInstant(value) {
10
+ if (typeof value === "string") return isRfc3339(value) ? value : void 0;
11
+ if (typeof value !== "number") return;
12
+ const millis = value * 1e3;
13
+ return Math.abs(millis) <= MAX_TIME_VALUE ? isoAt(millis) : void 0;
14
+ }
15
+ /** `eventInstant` for a builder input, where a malformed time is the caller's error. */
16
+ function requireEventInstant(value, field) {
17
+ if (value === void 0) return;
18
+ const instant = eventInstant(value);
19
+ if (instant === void 0) throw new RangeError(`PermDock: ${field} is not an RFC 3339 instant`);
20
+ return instant;
21
+ }
22
+ //#endregion
23
+ export { requireEventInstant as n, eventInstant as t };
@@ -0,0 +1,52 @@
1
+ import { c as instantOf } from "./time-DkWjdL98.js";
2
+ //#region src/core/ids.ts
3
+ /**
4
+ * The canonical text of a scope or object id: a non-empty string as is, a
5
+ * finite number or a bigint as its decimal text (a `bigint` key column read
6
+ * through supabase-js arrives as a number), anything else none.
7
+ */
8
+ function idText(value) {
9
+ if (typeof value === "string") return value === "" ? void 0 : value;
10
+ if (typeof value === "number" && Number.isFinite(value)) return String(value);
11
+ if (typeof value === "bigint") return String(value);
12
+ }
13
+ const MAX_ID = 256;
14
+ const MAX_ENTRIES = 64;
15
+ /** A wire id: a non-empty string of at most 256 characters. */
16
+ function isId(value) {
17
+ return typeof value === "string" && value.length > 0 && value.length <= MAX_ID;
18
+ }
19
+ /** A non-empty list of at most 64 wire ids, deduplicated, else `undefined`. */
20
+ function idList(value) {
21
+ if (!Array.isArray(value) || value.length === 0 || value.length > MAX_ENTRIES || !value.every(isId)) return;
22
+ return [...new Set(value)];
23
+ }
24
+ /** Whether two ids are the same id once both are read as text; a missing id matches nothing. */
25
+ function sameId(left, right) {
26
+ const text = idText(left);
27
+ return text !== void 0 && text === idText(right);
28
+ }
29
+ //#endregion
30
+ //#region src/core/expiry.ts
31
+ /**
32
+ * `expiresAt` is Unix seconds; a membership with none never expires. One that
33
+ * is not a number below infinity (`NaN`) has already expired: fail closed.
34
+ */
35
+ function expiredAt(item, now) {
36
+ return item.expiresAt !== void 0 && !(item.expiresAt > now);
37
+ }
38
+ /**
39
+ * Unix seconds of a stored expiry: finite Unix seconds, an RFC 3339 string
40
+ * (the Postgres `timestamptz` JSON form), a `Date` or an `Instant`.
41
+ * `undefined` for anything else, which the caller treats as already expired.
42
+ */
43
+ function expirySeconds(value) {
44
+ if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
45
+ if (value instanceof Date) {
46
+ const millis = value.getTime();
47
+ return Number.isFinite(millis) ? Math.floor(millis / 1e3) : void 0;
48
+ }
49
+ return instantOf(value);
50
+ }
51
+ //#endregion
52
+ export { isId as a, idText as i, expirySeconds as n, sameId as o, idList as r, expiredAt as t };
@@ -1,23 +1,26 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { C as verifyWebBotAuth, b as discoverViaSignatureAgent, i as OpenApiHooks, m as InvalidSignatureError, o as ProtectOptions } from "../server-types-DdqBwZN_.js";
4
- import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
5
- import { a as toRequest, i as sendResponse } from "../http-DPuDaChb.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
5
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
6
+ import { i as toRequest, r as sendResponse } from "../http-B_LphE5Y.js";
6
7
  import { ErrorRequestHandler, Request, RequestHandler, Response, Router } from "express";
7
8
  //#region src/express/create.d.ts
8
9
  type ExpressPermDockOptions<TUser = unknown> = ServerAdapterOptions<Request, TUser>;
9
- type PermDockRequest<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = Request & {
10
+ type ExpressPermDockRequest<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = Request & {
10
11
  permdock: PermDock<V>;
11
12
  permdockData?: T;
12
13
  };
13
14
  type ExpressPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
14
- readonly permdock: () => RequestHandler;
15
- readonly protect: (permission: Permission | null, loadData?: (req: Request) => unknown, protectOptions?: ProtectOptions) => RequestHandler;
15
+ /** The `PermDock` for one request, for code the middleware does not run before. */
16
+ readonly getPermDock: (req: Request) => Promise<PermDock<V>>;
17
+ readonly middleware: () => RequestHandler;
18
+ readonly protect: (permission: Permission | null, data?: (req: Request) => unknown, protectOptions?: ProtectOptions) => RequestHandler;
16
19
  readonly errorHandler: () => ErrorRequestHandler;
17
20
  readonly permdockHandler: () => Router;
18
- readonly withPermDock: (fn: (req: PermDockRequest<unknown, V>, res: Response) => unknown) => RequestHandler;
21
+ readonly withPermDock: (fn: (req: ExpressPermDockRequest<unknown, V>, res: Response) => unknown) => RequestHandler;
19
22
  readonly openapi: OpenApiHooks;
20
23
  };
21
24
  export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: ExpressPermDockOptions<TUser>): ExpressPermDock<V>;
22
25
  //#endregion
23
- export { type ExpressPermDock, type ExpressPermDockOptions, InvalidSignatureError, type PermDockRequest, discoverViaSignatureAgent, sendResponse, toRequest, verifyWebBotAuth };
26
+ export { type ExpressPermDock, type ExpressPermDockOptions, type ExpressPermDockRequest, InvalidSignatureError, discoverViaSignatureAgent, sendResponse, toRequest, webBotAuthVerifier };