permdock 0.5.0 → 0.7.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 (399) hide show
  1. package/README.md +1 -0
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +5 -5
  4. package/dist/a2a/index.js +4 -4
  5. package/dist/{adoption-scan-B4R5fnMU.js → adoption-scan-D-feE7BE.js} +1 -1
  6. package/dist/agent/index.d.ts +3 -3
  7. package/dist/agent/index.js +1 -1
  8. package/dist/ai-sdk/index.d.ts +21 -6
  9. package/dist/ai-sdk/index.js +19 -9
  10. package/dist/{approval-prompt-Djo_PyZc.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
  11. package/dist/approvals/index.d.ts +4 -4
  12. package/dist/approvals/index.js +4 -4
  13. package/dist/{approvals-DJ6Yd5z1.js → approvals-CMRfsbBh.js} +74 -48
  14. package/dist/{arazzo-B6lebmiQ.js → arazzo-ClrF3PVb.js} +2 -2
  15. package/dist/{arazzo-BWhNF-k0.js → arazzo-rdeJ8n1J.js} +4 -4
  16. package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
  17. package/dist/astro/index.d.ts +6 -6
  18. package/dist/astro/index.js +2 -2
  19. package/dist/{audience-Dg8XsRaO.js → audience-BrMs8c4o.js} +1 -1
  20. package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
  21. package/dist/authzen/index.d.ts +162 -22
  22. package/dist/authzen/index.js +315 -146
  23. package/dist/{automation-BMZPIVUM.d.ts → automation-DOtAFWdy.d.ts} +3 -3
  24. package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
  25. package/dist/base-url-BQbddZO5.js +9 -0
  26. package/dist/better-auth/index.d.ts +2 -2
  27. package/dist/better-auth/index.js +2 -2
  28. package/dist/better-supabase/index.d.ts +50 -8
  29. package/dist/better-supabase/index.js +94 -32
  30. package/dist/{bind-CZzhx-Vj.js → bind-D1nO6fiC.js} +5 -5
  31. package/dist/{bind--9EFVYWF.d.ts → bind-JDuvxjuW.d.ts} +7 -7
  32. package/dist/{build-instance-BMnAudHn.js → build-instance-DxE7czo9.js} +1 -1
  33. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  34. package/dist/{capability-BSslw1QV.d.ts → capability-D4UC9TTW.d.ts} +2 -2
  35. package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
  36. package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
  37. package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
  38. package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
  39. package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
  40. package/dist/catalog/index.d.ts +70 -10
  41. package/dist/catalog/index.js +112 -6
  42. package/dist/catalog-BCCjSAdH.js +1 -0
  43. package/dist/{catalog-R_A__RsH.js → catalog-BaMQfQ6Y.js} +3 -3
  44. package/dist/{catalog-BECMPrwc.js → catalog-D69WhFii.js} +43 -13
  45. package/dist/{catalog-doc-C9wjsfNY.js → catalog-doc-CV9s6B1S.js} +28 -5
  46. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
  47. package/dist/{create-BWRSXgOF.js → challenge-nGWma08S.js} +122 -25
  48. package/dist/chat/index.d.ts +1 -1
  49. package/dist/chat/index.js +2 -2
  50. package/dist/chat-sdk/index.d.ts +3 -3
  51. package/dist/checks-BC_0mPIq.js +37 -0
  52. package/dist/claude-agent/index.d.ts +3 -3
  53. package/dist/claude-agent/index.js +2 -2
  54. package/dist/clerk/index.d.ts +3 -3
  55. package/dist/clerk/index.js +1 -1
  56. package/dist/cli/bin.js +2 -2
  57. package/dist/cli/index.d.ts +3 -3
  58. package/dist/cli/index.js +3 -3
  59. package/dist/cloud/index.d.ts +127 -11
  60. package/dist/cloud/index.js +251 -3
  61. package/dist/{cloud-CIoHNevm.js → cloud-CO8pYtwr.js} +5 -5
  62. package/dist/{codemod-Cxvvc70T.js → codemod-BP6n8N9L.js} +3 -3
  63. package/dist/{codemod-Bmj9dWMH.js → codemod-i4N2BhDc.js} +3 -3
  64. package/dist/{collect-CrZJJnEF.js → collect-BaWeMjwV.js} +17 -8
  65. package/dist/{collect-DloHbDVa.js → collect-DNm3oKOk.js} +6 -5
  66. package/dist/collect-k_Dulxr5.js +1 -0
  67. package/dist/compile/index.d.ts +1 -1
  68. package/dist/compile/index.js +1 -1
  69. package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
  70. package/dist/{compile-Ckm2HqBZ.d.ts → compile-COM2VKuN.d.ts} +3 -3
  71. package/dist/{completion-BqhRBJD8.js → completion-BNdVf7X2.js} +3 -3
  72. package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
  73. package/dist/{config-B46rm9sc.js → config-DGZzMV1B.js} +2 -2
  74. package/dist/{config-report-DUgj62Ai.js → config-report-Cm7UITNA.js} +3 -3
  75. package/dist/connector-schema-_VCSsdtD.js +433 -0
  76. package/dist/{context-bbFHR-0D.js → context--uM9V3Ui.js} +2 -2
  77. package/dist/convex/index.d.ts +5 -5
  78. package/dist/convex/index.js +2 -2
  79. package/dist/core-B5-w6Kw9.js +335 -0
  80. package/dist/core-CQkE8Esr.d.ts +179 -0
  81. package/dist/{create-0VZ7Pdiu.d.ts → create-B2-CQqCI.d.ts} +5 -5
  82. package/dist/{create-C3b4B5eF.js → create-Cb86Z8Im.js} +9 -8
  83. package/dist/{create-DnrmLnLW.js → create-DJrlhEp9.js} +5 -5
  84. package/dist/{create-BFfm17UA.d.ts → create-QHuuPw3q.d.ts} +7 -7
  85. package/dist/{create-BDS7wc3y.d.ts → create-UTnUVETj.d.ts} +30 -10
  86. package/dist/{credential-DM2um3ha.js → credential-CIM7wHwA.js} +4 -4
  87. package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
  88. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
  89. package/dist/{delegation-DaXVdDhM.js → delegation-C5rOdTp5.js} +5 -5
  90. package/dist/delivery/index.d.ts +5 -5
  91. package/dist/delivery/index.js +4 -3
  92. package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
  93. package/dist/{denied-text-D8jDHgsl.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
  94. package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
  95. package/dist/{describe-BZUsixiL.d.ts → describe-O0SwYIK8.d.ts} +2 -2
  96. package/dist/{diff-CxZo9pTq.js → diff-Btr1c1Ow.js} +2 -2
  97. package/dist/{diff-DCePiN6M.js → diff-DzT-xD13.js} +10 -10
  98. package/dist/{doctor-DFjUxf2f.js → doctor-BU1szn63.js} +241 -49
  99. package/dist/{doctor-CxiwSfqH.js → doctor-BoK_y0KO.js} +4 -4
  100. package/dist/drizzle/index.d.ts +3 -3
  101. package/dist/drizzle/index.js +1 -1
  102. package/dist/elysia/index.d.ts +5 -5
  103. package/dist/elysia/index.js +3 -3
  104. package/dist/{errors-C2PXIv4c.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
  105. package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
  106. package/dist/{evaluate-_R8QkWaf.js → evaluate-B_oqFbWC.js} +130 -34
  107. package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
  108. package/dist/{evaluations-DZ2CbV5k.js → evaluations-DReoiVBw.js} +4 -4
  109. package/dist/eve/index.d.ts +5 -5
  110. package/dist/eve/index.js +3 -3
  111. package/dist/express/index.d.ts +5 -5
  112. package/dist/express/index.js +3 -3
  113. package/dist/fastify/index.d.ts +5 -5
  114. package/dist/fastify/index.js +3 -3
  115. package/dist/{fetch-adapter-qKJBuRqy.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
  116. package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-De-u6vhJ.js} +3 -3
  117. package/dist/{fields-D9tPVUUS.js → fields-ClcQLrVc.js} +48 -13
  118. package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
  119. package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
  120. package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
  121. package/dist/{from-snapshot-D2lZt4Dd.js → from-snapshot-Bz469dIh.js} +17 -10
  122. package/dist/generate-3FNO5P5Q.js +159 -0
  123. package/dist/{grantee-Cn1HyUsI.js → grantee-BrRANrpT.js} +14 -4
  124. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
  125. package/dist/{grantee-match-DHArqY82.js → grantee-match-0RtHWQDx.js} +3 -3
  126. package/dist/h3/index.d.ts +4 -4
  127. package/dist/h3/index.js +3 -3
  128. package/dist/{helpers-DTcZOzhF.js → helpers-DY3vXuGs.js} +3 -3
  129. package/dist/hono/index.d.ts +5 -5
  130. package/dist/hono/index.js +3 -3
  131. package/dist/{hosted-DBDX0M-P.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
  132. package/dist/{hosted-BZIAYvon.js → hosted-XBgU6RGT.js} +34 -12
  133. package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
  134. package/dist/{import-DMmOG27O.js → import-Bz0GefWg.js} +5 -5
  135. package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
  136. package/dist/{index-CxGUswIC.d.ts → index-BE8y3moU.d.ts} +50 -8
  137. package/dist/{index-Chrs5fQ-.d.ts → index-BSfRl0hZ.d.ts} +6 -6
  138. package/dist/{index-DOVf7RJv.d.ts → index-BTkwrK7v.d.ts} +155 -17
  139. package/dist/index-CMiPH2Tv.d.ts +206 -0
  140. package/dist/{index-SGdIQyzc.d.ts → index-DH9DUDEM.d.ts} +18 -3
  141. package/dist/{index-BcHcPyIo.d.ts → index-DLwcuCN_.d.ts} +86 -7
  142. package/dist/index.d.ts +18 -17
  143. package/dist/index.js +27 -25
  144. package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
  145. package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
  146. package/dist/{instance-options-Omfd793B.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
  147. package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-CjcwnEiV.js} +20 -14
  148. package/dist/jwt/index.d.ts +83 -5
  149. package/dist/jwt/index.js +143 -5
  150. package/dist/{kernel-5JatXyND.js → kernel-DVExUwkp.js} +138 -12
  151. package/dist/kysely/index.d.ts +3 -3
  152. package/dist/kysely/index.js +1 -1
  153. package/dist/load-DrMHXzgN.js +1 -0
  154. package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
  155. package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
  156. package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
  157. package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
  158. package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
  159. package/dist/{manifest-CtKR3GXL.js → manifest-Dv6q4i5s.js} +54 -35
  160. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
  161. package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
  162. package/dist/{map-error-TCAdw-eW.js → map-error-BQGyDm_M.js} +1 -1
  163. package/dist/mcp/index.d.ts +64 -10
  164. package/dist/mcp/index.js +151 -22
  165. package/dist/{migrate-BShP7Vf4.js → migrate-Dodel0IJ.js} +77 -24
  166. package/dist/nest/index.d.ts +5 -5
  167. package/dist/nest/index.js +3 -3
  168. package/dist/next/index.d.ts +9 -9
  169. package/dist/next/index.js +5 -5
  170. package/dist/next/plugin.d.ts +1 -1
  171. package/dist/next/plugin.js +2 -2
  172. package/dist/node/index.d.ts +5 -5
  173. package/dist/node/index.js +2 -2
  174. package/dist/openai/index.d.ts +5 -5
  175. package/dist/openai/index.js +3 -3
  176. package/dist/openapi/index.d.ts +14 -4
  177. package/dist/openapi/index.js +1 -1
  178. package/dist/{openapi-ahr8rHu3.js → openapi-DMocl1bh.js} +4 -4
  179. package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
  180. package/dist/{openapi-DTaEmTSW.js → openapi-ztVaux6j.js} +8 -8
  181. package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
  182. package/dist/{operations-CxybZErY.d.ts → operations-BNLes61x.d.ts} +1 -1
  183. package/dist/orpc/index.d.ts +6 -6
  184. package/dist/orpc/index.js +4 -4
  185. package/dist/otel/index.d.ts +3 -3
  186. package/dist/otel/index.js +1 -1
  187. package/dist/{output-Dyw8fyPF.js → output-DgSDLrta.js} +7 -3
  188. package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
  189. package/dist/output-files-DPAY7-GX.js +1 -0
  190. package/dist/{ownership-BatFgAA4.js → ownership-Z2LpxsGa.js} +1349 -883
  191. package/dist/parse-Ddhz2xf4.js +148 -0
  192. package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
  193. package/dist/{parse-local-manifest-DgqtruPn.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
  194. package/dist/pdp/index.d.ts +3 -3
  195. package/dist/pdp/index.js +7 -3
  196. package/dist/peer-12Q5I_RH.js +976 -0
  197. package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
  198. package/dist/{permdock-B9JxkBwC.js → permdock-BfWEeMqk.js} +177 -49
  199. package/dist/{permdock-D7eeLJER.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
  200. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
  201. package/dist/{vocabulary-D6lPdb4Z.d.ts → permission-types-DhNEmoRG.d.ts} +4 -62
  202. package/dist/{permissions-oEWfl-kl.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
  203. package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
  204. package/dist/{permissions-CZKiUfFM.js → permissions-DArULThq.js} +4 -4
  205. package/dist/pkce-5h8NgMQJ.js +21 -0
  206. package/dist/{policies-CO1oOymN.js → policies-B2lZIurj.js} +3 -3
  207. package/dist/{policy-Czo4n3Hs.d.ts → policy-B7dg_yzu.d.ts} +2 -2
  208. package/dist/{policy-DLZJ5gAp.js → policy-DaJy4nK4.js} +17 -8
  209. package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-DFWYkNdu.js} +9 -9
  210. package/dist/{policy-types-DzwivBgR.d.ts → policy-types-B-F-qAZk.d.ts} +109 -5
  211. package/dist/postgres-store-BL9M_CA1.js +1001 -0
  212. package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
  213. package/dist/{postgrest-CW0IqC-U.js → postgrest-r5faDIzD.js} +47 -5
  214. package/dist/{powersync-BHfuehf3.js → powersync-13odBwiM.js} +3 -3
  215. package/dist/powersync-53ryOZip.js +1059 -0
  216. package/dist/powersync-CExtTLyA.js +1 -0
  217. package/dist/preset/index.js +1 -1
  218. package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
  219. package/dist/prisma/index.d.ts +2 -2
  220. package/dist/prisma/index.js +1 -1
  221. package/dist/{problem-details-DXlt-vks.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
  222. package/dist/prompt-DwtVemER.js +935 -0
  223. package/dist/{protected-DEPHc2xV.d.ts → protected-BwZYL1X_.d.ts} +6 -5
  224. package/dist/{protected-DfjY5mLA.js → protected-DXE3cQYg.js} +2 -2
  225. package/dist/{provider-CC-u3bYP.js → provider-BQsTYYy0.js} +2 -2
  226. package/dist/{provider-DMVt6yYn.d.ts → provider-Csk-THAn.d.ts} +1 -1
  227. package/dist/{provider-store-B5Yrkhzr.js → provider-store-IgqQipCO.js} +2 -2
  228. package/dist/{pull-BgIfno6w.js → pull-CN5OLxrF.js} +7 -7
  229. package/dist/pull-Cty6Ovyu.js +1 -0
  230. package/dist/{push-CmFVBOeI.js → push-tVdG8dUL.js} +54 -14
  231. package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
  232. package/dist/{pushed-policy-DobP7AHI.js → pushed-policy-CmYeSQqq.js} +1 -1
  233. package/dist/react/index.d.ts +6 -6
  234. package/dist/react/index.js +3 -3
  235. package/dist/react/provider-client.d.ts +1 -1
  236. package/dist/react/provider-client.js +1 -1
  237. package/dist/react-native/index.d.ts +25 -11
  238. package/dist/react-native/index.js +214 -24
  239. package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
  240. package/dist/{replay-D7iKcLFe.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
  241. package/dist/{request-context-BTRTG7OT.js → request-context-BykKLmyE.js} +2 -2
  242. package/dist/resend/index.d.ts +4 -4
  243. package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
  244. package/dist/{rls-BA8an5Ap.js → rls-Ck_PocSp.js} +32 -8
  245. package/dist/{rls-j6t43t7n.js → rls-CxBZb4rZ.js} +478 -534
  246. package/dist/{role-builder-CXbis5-X.js → role-builder-C1VJzvcr.js} +3 -3
  247. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  248. package/dist/{rpc-aPyNi6tA.js → rpc-Bk1bE-ch.js} +1 -1
  249. package/dist/run-Bz7DXGEv.js +1 -0
  250. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
  251. package/dist/{run-ticket-BjhTOi6u.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
  252. package/dist/{run-DOfMtc9V.js → run-uLD2aWuO.js} +7 -7
  253. package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
  254. package/dist/{saas-FO-Q8oj0.js → saas-Az_Kz-4D.js} +7 -7
  255. package/dist/{scan-BOI5tJ-6.js → scan-DSljDE1Y.js} +1 -1
  256. package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
  257. package/dist/scim/index.d.ts +3 -2
  258. package/dist/scim/index.js +3 -1
  259. package/dist/scim-C7JYhySg.js +44 -0
  260. package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
  261. package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
  262. package/dist/server/index.d.ts +11 -11
  263. package/dist/server/index.js +7 -7
  264. package/dist/{server-DqCT4CgZ.js → server-Bnga6I50.js} +3 -3
  265. package/dist/{server-types-BLd4MnBX.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
  266. package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
  267. package/dist/{shared-CD11nBbC.js → shared-fMKOv8hP.js} +46 -39
  268. package/dist/{sink-Bj_lDUDq.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
  269. package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
  270. package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
  271. package/dist/{snapshot-CXUWfsNy.js → snapshot-CbGmYiJx.js} +4 -4
  272. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
  273. package/dist/{snapshot-cache-DqK9eDmM.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
  274. package/dist/solid/index.d.ts +6 -5
  275. package/dist/solid/index.js +4 -4
  276. package/dist/solid-start/index.d.ts +6 -6
  277. package/dist/solid-start/index.js +3 -3
  278. package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
  279. package/dist/{sources-BV9j0DeZ.d.ts → sources-DEEuGb8S.d.ts} +63 -14
  280. package/dist/sources-qoIJQrJv.js +11 -0
  281. package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
  282. package/dist/sql-CDEPCA0g.d.ts +10 -0
  283. package/dist/{src-DLfUWFAI.js → src-DLFrtrrC.js} +154 -53
  284. package/dist/ssf/index.d.ts +4 -4
  285. package/dist/ssf/index.js +640 -211
  286. package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
  287. package/dist/{store-4u_hxjWa.js → store-DSP9oGvh.js} +15 -7
  288. package/dist/{store-options-BqEakYRa.js → store-options-B_poyYvg.js} +6 -6
  289. package/dist/{stores-ClZUgeoP.d.ts → stores-BAZwSYZA.d.ts} +6 -5
  290. package/dist/{stores-BbsD4fAR.js → stores-BqEuHC05.js} +2 -2
  291. package/dist/{stream-7-xmnf3U.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
  292. package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
  293. package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
  294. package/dist/supabase/index.d.ts +8 -7
  295. package/dist/supabase/index.js +5 -5
  296. package/dist/supabase/middleware.d.ts +6 -6
  297. package/dist/supabase/middleware.js +6 -6
  298. package/dist/{supabase-Dxlp8A94.js → supabase--0aJdLEd.js} +9 -7
  299. package/dist/{supabase-9pqI57pW.js → supabase-Bqp7iIY2.js} +3 -3
  300. package/dist/supabase-hook-DJxC4PoP.js +1 -0
  301. package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-Dg0SrQWR.js} +1069 -123
  302. package/dist/supautils-MESd81bF.js +689 -0
  303. package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
  304. package/dist/svelte/index.d.ts +5 -5
  305. package/dist/svelte/index.js +5 -5
  306. package/dist/svelte/runtime.d.ts +3 -3
  307. package/dist/svelte/runtime.js +3 -3
  308. package/dist/svelte/source.d.ts +5 -5
  309. package/dist/svelte/source.js +2 -2
  310. package/dist/sveltekit/index.d.ts +6 -6
  311. package/dist/sveltekit/index.js +2 -2
  312. package/dist/tanstack-start/index.d.ts +6 -6
  313. package/dist/tanstack-start/index.js +2 -2
  314. package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
  315. package/dist/terminal/index.d.ts +6 -6
  316. package/dist/terminal/index.js +3 -3
  317. package/dist/testing/core.d.ts +2 -0
  318. package/dist/testing/core.js +1 -0
  319. package/dist/testing/fixtures/index.d.ts +12 -0
  320. package/dist/testing/fixtures/index.js +770 -0
  321. package/dist/testing/index.d.ts +41 -174
  322. package/dist/testing/index.js +241 -731
  323. package/dist/testing/saas/index.d.ts +5 -5
  324. package/dist/testing/saas/index.js +2 -2
  325. package/dist/testing/saas/permissions.d.ts +1 -1
  326. package/dist/testing/saas/permissions.js +1 -1
  327. package/dist/text-diff-DhITNCnD.js +444 -0
  328. package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
  329. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
  330. package/dist/trpc/index.d.ts +6 -6
  331. package/dist/trpc/index.js +3 -3
  332. package/dist/{types-5Ut_pbKy.d.ts → types-BWZybqs9.d.ts} +112 -8
  333. package/dist/{types-CZTnPFzM.d.ts → types-BXMYB7BY.d.ts} +2 -2
  334. package/dist/{types-CdlxsYQh.d.ts → types-BfVmNJO5.d.ts} +14 -3
  335. package/dist/{types-BqAKcRNW.d.ts → types-CIeZcG8v.d.ts} +2 -2
  336. package/dist/{types-BNORmDM8.d.ts → types-CKV71kKh.d.ts} +4 -4
  337. package/dist/{types-tIgIeIKJ.d.ts → types-CQVEQawv.d.ts} +4 -4
  338. package/dist/{types-BjV-fqcA.d.ts → types-CeIscIKp.d.ts} +4 -4
  339. package/dist/{types-_sHy8BQf.d.ts → types-CfiKC5aN.d.ts} +1 -1
  340. package/dist/{types-ClZaWzfb.d.ts → types-D3A19w4A.d.ts} +8 -4
  341. package/dist/{types-C8-KNsFf.d.ts → types-DBHftjgS.d.ts} +15 -8
  342. package/dist/{types-CCpc2Dcv.d.ts → types-DC44-hqb.d.ts} +2 -2
  343. package/dist/{types-fbZ7JEXr.d.ts → types-DXmwu78Z.d.ts} +4 -4
  344. package/dist/{types-DiQjupG2.d.ts → types-cTos-H7p.d.ts} +2 -2
  345. package/dist/{types-DX0LaKTb.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
  346. package/dist/unplugin/index.d.ts +1 -1
  347. package/dist/unplugin/index.js +2 -2
  348. package/dist/{usage-T5mXq98v.js → usage-Bybmck7f.js} +7 -7
  349. package/dist/{usage-DHtE8j4E.js → usage-CDaLXCfL.js} +2 -2
  350. package/dist/usage-y-kBNdqs.js +1 -0
  351. package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
  352. package/dist/{verify-DbCL9bnB.js → verify-pe8rL_Qw.js} +350 -83
  353. package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
  354. package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
  355. package/dist/vue/index.d.ts +6 -5
  356. package/dist/vue/index.js +4 -4
  357. package/dist/{waiter-CKy4MQSY.d.ts → waiter-DwEyouan.d.ts} +2 -2
  358. package/dist/watch-Bd9mx3rd.js +1 -0
  359. package/dist/{watch-CszoTJMq.js → watch-C-4VmFlL.js} +3 -3
  360. package/dist/webmcp/index.d.ts +2 -2
  361. package/dist/webmcp/index.js +2 -2
  362. package/dist/{where-scope-Dv-WTP-w.js → where-scope-wq2coopv.js} +41 -21
  363. package/dist/{who-can-D0QoYbEb.js → who-can-BwNsI_Js.js} +6 -6
  364. package/dist/workflow/index.d.ts +3 -3
  365. package/dist/workflow/index.js +5 -5
  366. package/dist/workflow-sdk/index.d.ts +5 -5
  367. package/dist/{wrap-Bd1Tejur.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
  368. package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
  369. package/package.json +22 -11
  370. package/schemas/cli-result-v1.json +1 -0
  371. package/schemas/cloud-api-v1.json +152 -7
  372. package/schemas/connector-v1.json +8 -0
  373. package/schemas/supabase-claims-v1.json +5 -0
  374. package/schemas/supabase-manifest-v1.json +276 -75
  375. package/skills/permdock/SKILL.md +1 -0
  376. package/skills/permdock-agents/references/runtimes.md +3 -1
  377. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  378. package/skills/permdock-data/references/queries-and-rls.md +5 -2
  379. package/skills/permdock-tenancy/SKILL.md +1 -1
  380. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -0
  381. package/skills/permdock-wire/references/adapters.md +14 -0
  382. package/skills/permdock-wire/references/policy-options.md +1 -0
  383. package/dist/catalog-DjhMYYCq.js +0 -1
  384. package/dist/collect-FlXJlhus.js +0 -1
  385. package/dist/index-D8EovfsP.d.ts +0 -91
  386. package/dist/load-BxEtwlBS.js +0 -1
  387. package/dist/output-files-B3IZJksC.js +0 -1
  388. package/dist/parse-Cxq0WxrA.js +0 -53
  389. package/dist/peer-C8swJ2GH.js +0 -50
  390. package/dist/powersync-CbzkqL_M.js +0 -1
  391. package/dist/powersync-bYUDLOAO.js +0 -538
  392. package/dist/prompt-DfZLJLIn.js +0 -32
  393. package/dist/pull-ByOks_Tg.js +0 -1
  394. package/dist/run-CNsApDpd.js +0 -1
  395. package/dist/supabase-hook-CXcGpHqq.js +0 -1
  396. package/dist/supautils-B6HYL9eL.js +0 -91
  397. package/dist/text-diff-BQcUapOb.js +0 -15
  398. package/dist/usage-CHOtwL19.js +0 -1
  399. package/dist/watch-Cb-NcaUw.js +0 -1
@@ -2,19 +2,20 @@ import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-BKy0EfhN.js";
4
4
  import { o as sameId } from "./expiry-D4_YKRKD.js";
5
- import { c as listPermissions } from "./permission-registry-Br4jSNVi.js";
5
+ import { c as listPermissions } from "./permission-registry-DpPtSKNZ.js";
6
6
  import { g as secondsOf, o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
7
- import { a as normalizeMemberships, d as scopeList, m as tenantOf, o as resolveScope, t as activeFor } from "./scopes-CUPSjo9q.js";
8
- import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-DaXVdDhM.js";
9
- import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-Cn1HyUsI.js";
7
+ import { f as scopeList, h as tenantOf, o as normalizeMemberships, s as resolveScope, t as activeFor } from "./scopes-BHsc-wp-.js";
8
+ import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-C5rOdTp5.js";
9
+ import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-BrRANrpT.js";
10
10
  import { a as grantCoversField, o as pickVisible, r as readWireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
11
- import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-DN2QAx9z.js";
11
+ import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-CmeBQ6Nv.js";
12
12
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
13
- import { r as tokenPayload, t as decisionToken } from "./token-BLZcjQgt.js";
13
+ import { r as tokenPayload, t as decisionToken } from "./token-2qYDvXz2.js";
14
14
  import { t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
15
- import { n as matchGrantee } from "./grantee-match-DHArqY82.js";
15
+ import { n as matchGrantee } from "./grantee-match-0RtHWQDx.js";
16
16
  import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
17
- import { a as deniedFor, n as mayUse, o as signSnapshot, r as permittedIds, t as whereFromGrants } from "./where-scope-Dv-WTP-w.js";
17
+ import { i as permittedIds, o as deniedFor, r as mayUse, s as signSnapshot, t as whereFromGrants } from "./where-scope-wq2coopv.js";
18
+ import { i as decideAllWith, n as canAllWith } from "./checks-BC_0mPIq.js";
18
19
  //#region src/core/snapshot-evaluate.ts
19
20
  function coveredByInclude(snapshot, permission) {
20
21
  const include = snapshot.include;
@@ -51,7 +52,7 @@ function scopeOk(snapshot, grant, permission, subject, data, team, now, only) {
51
52
  };
52
53
  if (!activeFor(membership, scopes, principal.tenant)) return {
53
54
  ok: false,
54
- reason: principal.tenant === void 0 ? "no-membership" : "tenant-mismatch"
55
+ reason: principal.tenant === void 0 && principal.unheldTenant === void 0 ? "no-tenant" : principal.tenant === void 0 ? "no-membership" : "tenant-mismatch"
55
56
  };
56
57
  if (!inTeam(membership, scopes, team)) return {
57
58
  ok: false,
@@ -361,7 +362,8 @@ function subjectFromSnapshot(snapshot, tenant) {
361
362
  return freezeDeep(compact({
362
363
  principal: principal === null ? null : compact({
363
364
  ...principal,
364
- tenant: nextTenant
365
+ tenant: nextTenant,
366
+ unheldTenant: nextTenant === void 0 ? tenant : void 0
365
367
  }),
366
368
  delegation: fromWireDelegation(snapshot.subject.delegation),
367
369
  context: snapshot.subject.context,
@@ -440,9 +442,14 @@ function fromSnapshot(snapshot, options = {}) {
440
442
  const instance = {
441
443
  can,
442
444
  decide,
445
+ canAll: (checks, decideOptions) => canAllWith(can, checks, decideOptions),
446
+ decideAll: (checks, decideOptions) => decideAllWith(decide, checks, decideOptions),
443
447
  decideEach(permission, rows, decideOptions) {
444
448
  return Object.freeze(rows.map((row) => run(permission, row, decideOptions)));
445
449
  },
450
+ decideIds(permission, ids) {
451
+ return Promise.resolve(Object.freeze(ids.map(() => deniedFor(permission, "unsupported"))));
452
+ },
446
453
  decideFor(_principalId, permission) {
447
454
  return Promise.resolve(deniedFor(permission, "unsupported"));
448
455
  },
@@ -0,0 +1,159 @@
1
+ import { n as SCIM_TABLES, r as SCIM_UNIQUE } from "./postgres-store-BL9M_CA1.js";
2
+ import { o as quoteSqlIdent } from "./sql-B96movIM.js";
3
+ import { n as fileSummary, t as applyFiles } from "./files-acUbNwWt.js";
4
+ import { r as driftOf } from "./output-files-CCMdcFWb.js";
5
+ //#region src/cli/scim/generate.ts
6
+ const SCIM_MARKER = "-- generated by permdock scim generate";
7
+ /** The client roles each dialect's data API connects as; none may reach the directory. */
8
+ function clientRoles(dialect) {
9
+ switch (dialect) {
10
+ case "supabase": return [
11
+ "public",
12
+ "anon",
13
+ "authenticated"
14
+ ];
15
+ case "neon": return [
16
+ "public",
17
+ "anonymous",
18
+ "authenticated"
19
+ ];
20
+ case "guc": return ["public"];
21
+ default: return dialect;
22
+ }
23
+ }
24
+ /**
25
+ * The directory `postgresDirectoryStore` reads and writes: users, groups and
26
+ * group members keyed on `(tenant, id)`, with `userName` and `externalId`
27
+ * unique per tenant. Member values are SCIM `value`s, not a foreign key to
28
+ * users, because a member may be a nested group. No client role may read
29
+ * or write the tables.
30
+ */
31
+ function scimSchemaSql(input) {
32
+ const schema = quoteSqlIdent(input.schema);
33
+ const table = (name) => `${schema}.${quoteSqlIdent(name)}`;
34
+ const users = table(SCIM_TABLES.users);
35
+ const groups = table(SCIM_TABLES.groups);
36
+ const members = table(SCIM_TABLES.members);
37
+ const all = [
38
+ users,
39
+ groups,
40
+ members
41
+ ].join(", ");
42
+ return `${SCIM_MARKER} (--dialect ${input.dialect})
43
+ -- the SCIM directory postgresDirectoryStore reads and writes for scimHandler; every row belongs to one tenant
44
+ create schema if not exists ${schema};
45
+
46
+ create table if not exists ${users} (
47
+ seq bigint generated always as identity unique,
48
+ tenant text not null check (tenant <> ''),
49
+ id text not null check (id <> ''),
50
+ user_name text not null,
51
+ external_id text,
52
+ active boolean not null default true,
53
+ emails jsonb,
54
+ x jsonb,
55
+ created_at timestamptz not null default now(),
56
+ updated_at timestamptz not null default now(),
57
+ revision bigint not null default 1,
58
+ primary key (tenant, id),
59
+ constraint ${quoteSqlIdent(SCIM_UNIQUE.userName)} unique (tenant, user_name),
60
+ constraint ${quoteSqlIdent(SCIM_UNIQUE.userExternalId)} unique (tenant, external_id)
61
+ );
62
+
63
+ create table if not exists ${groups} (
64
+ seq bigint generated always as identity unique,
65
+ tenant text not null check (tenant <> ''),
66
+ id text not null check (id <> ''),
67
+ display_name text not null,
68
+ external_id text,
69
+ roles text[],
70
+ x jsonb,
71
+ created_at timestamptz not null default now(),
72
+ updated_at timestamptz not null default now(),
73
+ revision bigint not null default 1,
74
+ primary key (tenant, id),
75
+ constraint ${quoteSqlIdent(SCIM_UNIQUE.groupExternalId)} unique (tenant, external_id)
76
+ );
77
+
78
+ create table if not exists ${members} (
79
+ tenant text not null,
80
+ group_id text not null,
81
+ user_id text not null,
82
+ position integer not null default 0,
83
+ primary key (tenant, group_id, user_id),
84
+ foreign key (tenant, group_id) references ${groups} (tenant, id) on delete cascade
85
+ );
86
+ create index if not exists ${quoteSqlIdent(`${SCIM_TABLES.members}_user_idx`)} on ${members} (tenant, user_id);
87
+
88
+ -- server only: grant select, insert, update and delete on these tables to the role postgresDirectoryStore
89
+ -- connects as when it does not own them
90
+ alter table ${users} enable row level security;
91
+ alter table ${groups} enable row level security;
92
+ alter table ${members} enable row level security;
93
+ revoke all on table ${all} from ${clientRoles(input.dialect).join(", ")};
94
+ `;
95
+ }
96
+ /** `supabase/schemas/<schema>/scim.sql` for Supabase, the pg-delta per-schema layout; `permdock_scim.sql` otherwise. */
97
+ function scimOut(dialect, schema) {
98
+ return dialect === "supabase" ? `supabase/schemas/${schema}/scim.sql` : "permdock_scim.sql";
99
+ }
100
+ function runScimGenerate(input) {
101
+ const dialect = input.dialect ?? input.config.rls?.dialect ?? "supabase";
102
+ const schema = input.schema ?? input.config.rls?.schema ?? "permdock";
103
+ const sql = scimSchemaSql({
104
+ schema,
105
+ dialect
106
+ });
107
+ const out = input.out ?? scimOut(dialect, schema);
108
+ const data = {
109
+ out,
110
+ dialect,
111
+ schema,
112
+ tables: Object.values(SCIM_TABLES).map((name) => `${schema}.${name}`)
113
+ };
114
+ if (out === "-") return {
115
+ code: 0,
116
+ output: sql.trimEnd(),
117
+ data: {
118
+ ...data,
119
+ sql
120
+ }
121
+ };
122
+ if (input.check) {
123
+ const drift = driftOf(input.cwd, [{
124
+ part: "scim",
125
+ rel: out,
126
+ text: sql
127
+ }]);
128
+ return drift.length === 0 ? {
129
+ code: 0,
130
+ output: `${out} is current`,
131
+ data
132
+ } : {
133
+ code: 1,
134
+ output: `${drift.join("\n")}\nrun permdock scim generate`,
135
+ data: {
136
+ ...data,
137
+ drift
138
+ }
139
+ };
140
+ }
141
+ const applied = applyFiles(input.cwd, [{
142
+ path: out,
143
+ text: sql
144
+ }], { dryRun: input.dryRun });
145
+ return {
146
+ code: 0,
147
+ output: fileSummary(applied, input.dryRun),
148
+ data: {
149
+ ...data,
150
+ files: applied
151
+ },
152
+ next: [{
153
+ when: "in CI, to fail when the file is stale",
154
+ command: "permdock scim generate --check"
155
+ }]
156
+ };
157
+ }
158
+ //#endregion
159
+ export { runScimGenerate };
@@ -1,7 +1,7 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep, t as freezeCopy } from "./freeze-CrU8nQeX.js";
3
3
  import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-DXSHAMIa.js";
4
- import { c as listPermissions, o as isPermission } from "./permission-registry-Br4jSNVi.js";
4
+ import { c as listPermissions, o as isPermission } from "./permission-registry-DpPtSKNZ.js";
5
5
  import { i as readAppData, r as parseAppData, t as assertAppData } from "./app-data-MuyzVqX8.js";
6
6
  //#region src/core/vocabulary.ts
7
7
  const ROLE_KIND = "role";
@@ -133,11 +133,10 @@ function synthesiseRole(key, options) {
133
133
  const on = options?.on;
134
134
  const assignable = options?.assignable ?? false;
135
135
  const meta = options?.meta;
136
- if (on === void 0) return makeRole(key, meta === void 0 ? { assignable } : {
136
+ const leaf = on === void 0 ? makeRole(key, meta === void 0 ? { assignable } : {
137
137
  assignable,
138
138
  meta
139
- });
140
- return makeRole(key, meta === void 0 ? {
139
+ }) : makeRole(key, meta === void 0 ? {
141
140
  on,
142
141
  assignable
143
142
  } : {
@@ -145,6 +144,17 @@ function synthesiseRole(key, options) {
145
144
  assignable,
146
145
  meta
147
146
  });
147
+ if (options?.shared !== true) return leaf;
148
+ const shared = Object.defineProperty({
149
+ ...leaf,
150
+ shared: true
151
+ }, "kind", {
152
+ value: ROLE_KIND,
153
+ enumerable: false,
154
+ writable: false,
155
+ configurable: false
156
+ });
157
+ return Object.freeze(shared);
148
158
  }
149
159
  function isGrantee(value) {
150
160
  return value !== null && typeof value === "object" && "kind" in value && typeof value.kind === "string";
@@ -1,7 +1,7 @@
1
1
  import { a as sole, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, m as restrictedStops, p as restrictedFor, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
3
3
  import { d as isoNow } from "./time-DkWjdL98.js";
4
- import { c as rootScope, d as scopeList, o as resolveScope } from "./scopes-CUPSjo9q.js";
4
+ import { f as scopeList, l as rootScope, s as resolveScope } from "./scopes-BHsc-wp-.js";
5
5
  //#region src/core/grantee-conditions.ts
6
6
  /**
7
7
  * Where a graph relation starts on the row: its own id when the relation is
@@ -1,8 +1,8 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { u as isoAt } from "./time-DkWjdL98.js";
3
- import { d as scopeList, t as activeFor } from "./scopes-CUPSjo9q.js";
4
- import { o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
5
- import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-CcXf8hMM.js";
3
+ import { f as scopeList, t as activeFor } from "./scopes-BHsc-wp-.js";
4
+ import { o as flattenGrantee } from "./grantee-BrRANrpT.js";
5
+ import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-C6P1Tvol.js";
6
6
  //#region src/core/grantee-match.ts
7
7
  function combineWhere(left, right) {
8
8
  if (left === void 0) return right;
@@ -1,7 +1,7 @@
1
- import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { r as PermDock } from "../permdock-D7eeLJER.js";
3
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
4
- import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-qKJBuRqy.js";
1
+ import { Gt as Snapshot, T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
3
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
4
+ import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-CuhyYwC1.js";
5
5
  import { EventHandler, H3Event, H3EventContext, Middleware } from "h3";
6
6
  //#region src/h3/create.d.ts
7
7
  type H3PermDockOptions<TUser = unknown> = FetchAdapterOptions<H3Event, TUser>;
package/dist/h3/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
2
- import { i as decorate } from "../bind-CZzhx-Vj.js";
3
- import { t as fetchAdapter } from "../fetch-adapter-g0ypLkID.js";
1
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
2
+ import { i as decorate } from "../bind-D1nO6fiC.js";
3
+ import { t as fetchAdapter } from "../fetch-adapter-De-u6vhJ.js";
4
4
  //#region src/h3/create.ts
5
5
  function createPermDock(policy, options) {
6
6
  const adapter = fetchAdapter(policy, options, "h3", (event) => event.req);
@@ -1,15 +1,15 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { r as approverLeaves } from "./approvers-CqPOLD-o.js";
4
- import { t as describe } from "./describe-BybMRY7A.js";
5
- import { i as getRegistry, n as findPermission } from "./permission-registry-Br4jSNVi.js";
4
+ import { t as describe } from "./describe-DZlnEtLy.js";
5
+ import { i as getRegistry, n as findPermission } from "./permission-registry-DpPtSKNZ.js";
6
6
  import { t as assertAppData } from "./app-data-MuyzVqX8.js";
7
7
  import { a as durationOf, i as dateAt, u as isoAt } from "./time-DkWjdL98.js";
8
8
  import { r as relationReader, t as pendingRelations } from "./relations-BnCWnJGI.js";
9
9
  import { n as resolveRelated } from "./relation-walk-3OyDBF0S.js";
10
10
  import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
11
  import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
12
- import { c as listAllApprovals, n as assertApprover } from "./store-4u_hxjWa.js";
12
+ import { n as assertApprover, u as listAllApprovals } from "./store-DSP9oGvh.js";
13
13
  import { n as parseApprovalHeader } from "./approval-header-CJACtHkv.js";
14
14
  //#region src/approvals/relations.ts
15
15
  const DEFAULT_PARENT_DEPTH = 16;
@@ -1,9 +1,9 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "../permdock-D7eeLJER.js";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
4
4
  import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
6
- import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
6
+ import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
7
7
  import { Context, Hono, MiddlewareHandler } from "hono";
8
8
  import { SSEMessage, SSEStreamingApi } from "hono/streaming";
9
9
  import { WSEvents } from "hono/ws";
@@ -1,8 +1,8 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
2
  import { r as PermDockRevokedError } from "../errors-BKy0EfhN.js";
3
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
4
- import { t as problemFromError } from "../map-error-TCAdw-eW.js";
5
- import { r as bindKernel } from "../bind-CZzhx-Vj.js";
3
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
4
+ import { t as problemFromError } from "../map-error-BQGyDm_M.js";
5
+ import { r as bindKernel } from "../bind-D1nO6fiC.js";
6
6
  import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
7
7
  import { Hono } from "hono";
8
8
  //#region src/hono/create.ts
@@ -1,4 +1,4 @@
1
- import { T as Policy, a as ApprovalRequirement, bn as Grantee, lr as Condition } from "./policy-types-DzwivBgR.js";
1
+ import { T as Policy, a as ApprovalRequirement, mr as Condition, wn as Grantee } from "./policy-types-B-F-qAZk.js";
2
2
  //#region src/core/hosted.d.ts
3
3
  /** One grant authored in PermDock Cloud; its grantee is a declared role, plan or relation. */
4
4
  type HostedGrant = {
@@ -51,6 +51,18 @@ declare function parsePolicyDocument(json: unknown): PolicyDocument;
51
51
  declare function policyDocumentFromClaims(claims: Readonly<Record<string, unknown>>): PolicyDocument;
52
52
  /** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
53
53
  declare function isPortableCondition(value: unknown): value is Condition;
54
+ type HostedGrantCheck = {
55
+ readonly ok: true;
56
+ } | {
57
+ readonly ok: false;
58
+ readonly reason: HostedGrantDropReason;
59
+ };
60
+ /**
61
+ * Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
62
+ * drop reason it would report when not. Needs no `PolicyDocument`, so a
63
+ * grant form can check a grant before it publishes one.
64
+ */
65
+ declare function checkHostedGrant(policy: Policy, grant: unknown): HostedGrantCheck;
54
66
  /**
55
67
  * The code policy plus the hosted grants that pass every rule. Hosted
56
68
  * allows OR with code allows and any deny still wins, so a hosted grant can
@@ -75,4 +87,4 @@ type HostedPolicies = {
75
87
  };
76
88
  declare function hostedPolicies(source: PolicySource): HostedPolicies;
77
89
  //#endregion
78
- export { PolicyDocument as a, isPortableCondition as c, parsePolicyDocument as d, policyDocumentFromClaims as f, HostedPolicies as i, memoryPolicySource as l, HostedGrantDropReason as n, PolicySource as o, HostedGrantDropped as r, hostedPolicies as s, HostedGrant as t, mergeHostedGrants as u };
90
+ export { HostedPolicies as a, checkHostedGrant as c, memoryPolicySource as d, mergeHostedGrants as f, HostedGrantDropped as i, hostedPolicies as l, policyDocumentFromClaims as m, HostedGrantCheck as n, PolicyDocument as o, parsePolicyDocument as p, HostedGrantDropReason as r, PolicySource as s, HostedGrant as t, isPortableCondition as u };
@@ -1,13 +1,13 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { n as isForbiddenKey, s as splitPath } from "./paths-DXSHAMIa.js";
4
- import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-CXbis5-X.js";
5
- import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
4
+ import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-C1VJzvcr.js";
5
+ import { a as getResource, n as findPermission } from "./permission-registry-DpPtSKNZ.js";
6
6
  import { d as isSelfParented } from "./resource-relations-D_jw0BFx.js";
7
7
  import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-DkWjdL98.js";
8
8
  import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
9
- import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
10
- import { i as indexPolicy, t as declaredRoleNames } from "./policy-DLZJ5gAp.js";
9
+ import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-BrRANrpT.js";
10
+ import { i as indexPolicy, t as declaredRoleNames } from "./policy-DaJy4nK4.js";
11
11
  //#region src/core/hosted.ts
12
12
  function memoryPolicySource(document = null) {
13
13
  const current = document === null ? null : parsePolicyDocument(document);
@@ -124,6 +124,7 @@ function approvalAtLeast(hosted, code) {
124
124
  function undeclaredKind(_grantee) {
125
125
  return false;
126
126
  }
127
+ /** Whether a hosted grant may name `grantee` on a permission of `permissionResource`. */
127
128
  function declaredGrantee(policy, grantee, permissionResource) {
128
129
  switch (grantee.kind) {
129
130
  case "role": return declaredRoleNames(policy).has(grantee.role);
@@ -156,6 +157,10 @@ function granteesAcceptable(policy, raw, permissionResource) {
156
157
  const items = flattenGrantee(raw);
157
158
  return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
158
159
  }
160
+ /** The approvals the code allows on `key` carry; a hosted allow must meet each one. */
161
+ function codeApprovals(policy, key) {
162
+ return policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === key).map((grant) => grant.approval);
163
+ }
159
164
  function buildGrant(policy, document, raw) {
160
165
  if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
161
166
  ok: false,
@@ -216,13 +221,10 @@ function buildGrant(policy, document, raw) {
216
221
  reason: "invalid"
217
222
  };
218
223
  }
219
- if (effect === "allow") {
220
- const codeApprovals = policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === permission.key).map((grant) => grant.approval);
221
- if (!approvalAtLeast(built.approval, codeApprovals)) return {
222
- ok: false,
223
- reason: "weaker-approval"
224
- };
225
- }
224
+ if (effect === "allow" && !approvalAtLeast(built.approval, codeApprovals(policy, permission.key))) return {
225
+ ok: false,
226
+ reason: "weaker-approval"
227
+ };
226
228
  return {
227
229
  ok: true,
228
230
  grant: freezeDeep({
@@ -234,6 +236,26 @@ function buildGrant(policy, document, raw) {
234
236
  })
235
237
  };
236
238
  }
239
+ const CHECKED_DOCUMENT = Object.freeze({
240
+ v: 1,
241
+ id: "",
242
+ fingerprint: "",
243
+ catalog: "",
244
+ issuedAt: "",
245
+ grants: Object.freeze([])
246
+ });
247
+ /**
248
+ * Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
249
+ * drop reason it would report when not. Needs no `PolicyDocument`, so a
250
+ * grant form can check a grant before it publishes one.
251
+ */
252
+ function checkHostedGrant(policy, grant) {
253
+ const result = buildGrant(policy, CHECKED_DOCUMENT, grant);
254
+ return result.ok ? { ok: true } : {
255
+ ok: false,
256
+ reason: result.reason
257
+ };
258
+ }
237
259
  /** The grants of `document` that `policy` drops, in document order; `permdock/catalog` turns them into drift findings. */
238
260
  function hostedGrantDrops(policy, document) {
239
261
  return document.grants.flatMap((raw) => {
@@ -312,4 +334,4 @@ function hostedPolicies(source) {
312
334
  });
313
335
  }
314
336
  //#endregion
315
- export { mergeHostedGrants as a, memoryPolicySource as i, hostedPolicies as n, parsePolicyDocument as o, isPortableCondition as r, policyDocumentFromClaims as s, hostedGrantDrops as t };
337
+ export { hostedPolicies as a, mergeHostedGrants as c, hostedGrantDrops as i, parsePolicyDocument as l, codeApprovals as n, isPortableCondition as o, declaredGrantee as r, memoryPolicySource as s, checkHostedGrant as t, policyDocumentFromClaims as u };
@@ -1,5 +1,5 @@
1
1
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
2
- import { a as describeError, n as CliError } from "./errors-CWTY6uih.js";
2
+ import { a as describeError, n as CliError } from "./errors-DpP_U6Bf.js";
3
3
  import { s as cliVersion } from "./version-CEbQ5UeM.js";
4
4
  import "./device-BARQ8eYG.js";
5
5
  //#region src/cli/core/http.ts
@@ -1,10 +1,10 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { i as configError, u as usageResult } from "./errors-CWTY6uih.js";
2
+ import { i as configError, u as usageResult } from "./errors-DpP_U6Bf.js";
3
3
  import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
4
- import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
5
- import { C as parseMembershipsFlag, r as HELPERS } from "./shared-CD11nBbC.js";
6
- import { f as pgConnector } from "./policies-CO1oOymN.js";
7
- import { t as FIELD_VIEWS } from "./fields-D9tPVUUS.js";
4
+ import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B96movIM.js";
5
+ import { C as parseMembershipsFlag, r as HELPERS } from "./shared-fMKOv8hP.js";
6
+ import { f as pgConnector } from "./policies-B2lZIurj.js";
7
+ import { t as FIELD_VIEWS } from "./fields-ClcQLrVc.js";
8
8
  import { n as emptySchema, r as isSchemaKind, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
9
9
  import { existsSync, readFileSync } from "node:fs";
10
10
  import { resolve } from "node:path";
@@ -1,10 +1,10 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
2
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
3
3
  import { i as readJsonFile } from "./files-D_JIzUrP.js";
4
- import { t as applyFiles } from "./files-C5ZI27eV.js";
5
- import { n as httpRequest } from "./http-DXJ37RDA.js";
4
+ import { t as applyFiles } from "./files-acUbNwWt.js";
5
+ import { n as httpRequest } from "./http-Ca3Sr5x1.js";
6
6
  import { i as schemaExpression, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
7
- import { t as validateOpenapi } from "./schema-yLuBWWsh.js";
7
+ import { t as validateOpenapi } from "./schema-gIcCx7zM.js";
8
8
  import { existsSync, readFileSync } from "node:fs";
9
9
  import { resolve } from "node:path";
10
10
  //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/browser/dist/nodes/identity.js
@@ -1,8 +1,8 @@
1
- import { Nn as Decision, Rt as Instant, T as Policy, Yn as AuthorizationDetail, et as MembershipSource, fn as Approver, ir as Subject, it as RelationSource, nr as Membership, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
- import { E as PermissionTree, V as AppData, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
- import { r as PermDock } from "./permdock-D7eeLJER.js";
4
- import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-CCpc2Dcv.js";
5
- import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-_sHy8BQf.js";
1
+ import { $n as AuthorizationDetail, Ln as Decision, Rt as Instant, T as Policy, et as MembershipSource, gn as Approver, it as RelationSource, lr as Subject, or as Membership, ut as TokenSigner } from "./policy-types-B-F-qAZk.js";
2
+ import { O as AppData, f as PermissionTree, u as Permission } from "./permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "./permdock-Dco6dyCK.js";
4
+ import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-DC44-hqb.js";
5
+ import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-CfiKC5aN.js";
6
6
  import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
7
7
  //#region src/approvals/access-reviews/handler.d.ts
8
8
  type AccessReviewsHandlerOptions = {
@@ -135,6 +135,22 @@ type MatchDelegationOptions = {
135
135
  declare function matchDelegation(request: ApprovalRequest, delegate: Subject, options: MatchDelegationOptions): Promise<ApprovalDelegationMatch | undefined>;
136
136
  //#endregion
137
137
  //#region src/approvals/idempotency.d.ts
138
+ /** The approve or reject call a key was first used for. */
139
+ type IdempotentCall = {
140
+ readonly action: "approve" | "reject";
141
+ /** The approval id in the path. */
142
+ readonly id: string;
143
+ /** The request body text as read; `""` without a body. */
144
+ readonly body: string;
145
+ };
146
+ /** One `Idempotency-Key` entry as `approvalsHandler` stores it. */
147
+ type IdempotencyRecord = {
148
+ /** The store key: the approver's principal id and the field value, joined by a newline. */
149
+ readonly key: string;
150
+ readonly response: IdempotentResponse;
151
+ /** Epoch milliseconds. */
152
+ readonly expiresAt: number;
153
+ };
138
154
  /** A response the approvals handler replays for a repeated `Idempotency-Key`. */
139
155
  type IdempotentResponse = {
140
156
  /** Which request produced it: a reused key with another fingerprint is refused with `422`. */
@@ -156,6 +172,22 @@ type IdempotencyStore = {
156
172
  /** `expiresAt` is epoch milliseconds; the store may drop the entry after it. */
157
173
  set(key: string, response: IdempotentResponse, expiresAt: number): void | Promise<void>;
158
174
  };
175
+ /** The `IdempotencyStore` key for one approver's `Idempotency-Key`: keys never cross approvers. */
176
+ declare function idempotencyRecordKey(principalId: string, key: string): string;
177
+ /**
178
+ * The record `approvalsHandler` stores after `call` answered `response`:
179
+ * the status, headers and body text, the call's fingerprint, and an expiry
180
+ * 24 hours after `now` (epoch milliseconds, default the clock).
181
+ */
182
+ declare function idempotencyRecord(input: {
183
+ readonly principalId: string;
184
+ readonly key: string;
185
+ readonly call: IdempotentCall;
186
+ readonly response: Response;
187
+ readonly now?: number;
188
+ }): Promise<IdempotencyRecord>;
189
+ /** Whether a stored response came from the same call: a reused key with another call is refused with `422`. */
190
+ declare function matchesIdempotencyRecord(response: IdempotentResponse, call: IdempotentCall): boolean;
159
191
  /** An in-process `IdempotencyStore`, for one instance and for tests. */
160
192
  declare function memoryIdempotencyStore(): IdempotencyStore;
161
193
  //#endregion
@@ -193,8 +225,6 @@ type ApprovalsHandlerOptions = {
193
225
  */
194
226
  readonly idempotency?: IdempotencyStore;
195
227
  };
196
- /** An approval as the approvals API shows it: never the resume `token`. */
197
- type ApprovalView = Omit<ApprovalRequest, "token">;
198
228
  declare function approvalsHandler(store: ApprovalStore, options: ApprovalsHandlerOptions): (request: Request) => Promise<Response>;
199
229
  //#endregion
200
230
  //#region src/approvals/parse-request.d.ts
@@ -256,6 +286,18 @@ type SignApprovalOptions = {
256
286
  */
257
287
  declare function signApproval(request: ApprovalRequest, signer: TokenSigner | undefined, options?: SignApprovalOptions): Promise<string | undefined>;
258
288
  //#endregion
289
+ //#region src/approvals/entity-tag.d.ts
290
+ /** An approval as the approvals API shows it: never the resume `token`. */
291
+ type ApprovalView = Omit<ApprovalRequest, "token">;
292
+ /** The request without its resume `token`; every other field stays. */
293
+ declare function approvalView(request: ApprovalRequest): ApprovalView;
294
+ /**
295
+ * A strong RFC 9110 entity tag: the quoted `sha-256:` digest of
296
+ * `approvalView(request)` as RFC 8785 JSON. A field outside
297
+ * `ApprovalRequest` changes the tag, so hash the stored request as is.
298
+ */
299
+ declare function approvalEntityTag(request: ApprovalRequest): string;
300
+ //#endregion
259
301
  //#region src/approvals/relations.d.ts
260
302
  type ApproverRelationsOptions = {
261
303
  /** The object graph relation approvers are read from; without it they match nobody. */
@@ -428,4 +470,4 @@ declare function memoryApprovalStore(options?: {
428
470
  readonly now?: () => Instant;
429
471
  }): MemoryApprovalStore;
430
472
  //#endregion
431
- export { AccessReviewVerdict as $, APPROVAL_REQUEST_SCHEMA as A, matchDelegation as B, ApproverRelationsOptions as C, SignApprovalOptions as D, ApprovalSignatureEntry as E, IdempotencyStore as F, pageAccessReviewItems as G, parseApprovalDelegation as H, IdempotentResponse as I, StartAccessReviewInput as J, AccessReviewHolder as K, memoryIdempotencyStore as L, ApprovalView as M, ApprovalsHandlerOptions as N, approvalSignatureClaims as O, approvalsHandler as P, isAccessReviewError as Q, ApprovalDelegationMatch as R, vouchApproval as S, ApprovalSignatureClaims as T, MemoryAccessReviewStore as U, memoryApprovalDelegationSource as V, memoryAccessReviewStore as W, AccessReviewError as X, startAccessReview as Y, AccessReviewErrorCode as Z, resolveApproval as _, approverPermissions as a, storedApprovalToken as b, decodeApprovalCursor as c, pageApprovals as d, accessReviewerEligible as et, cancelApprovals as f, requestApproval as g, readApprovalHeader as h, memoryApprovalStore as i, parseApprovalRequest as j, signApproval as k, encodeApprovalCursor as l, inspectApproval as m, applyApprovalVerdict as n, AccessReviewsHandlerOptions as nt, ApprovalCursorPosition as o, consumeApproval as p, AccessReviewOptions as q, assertApprover as r, accessReviewsHandler as rt, approvalPageSize as s, MemoryApprovalStore as t, decideAccessReviewItem as tt, listAllApprovals as u, resumeDecision as v, approverRelations as w, summarizeSubject as x, resumeFromHeader as y, MatchDelegationOptions as z };
473
+ export { AccessReviewHolder as $, SignApprovalOptions as A, IdempotentResponse as B, ApproverRelationsOptions as C, approvalView as D, approvalEntityTag as E, ApprovalsHandlerOptions as F, ApprovalDelegationMatch as G, idempotencyRecordKey as H, approvalsHandler as I, memoryApprovalDelegationSource as J, MatchDelegationOptions as K, IdempotencyRecord as L, signApproval as M, APPROVAL_REQUEST_SCHEMA as N, ApprovalSignatureClaims as O, parseApprovalRequest as P, pageAccessReviewItems as Q, IdempotencyStore as R, vouchApproval as S, ApprovalView as T, matchesIdempotencyRecord as U, idempotencyRecord as V, memoryIdempotencyStore as W, MemoryAccessReviewStore as X, parseApprovalDelegation as Y, memoryAccessReviewStore as Z, resolveApproval as _, approverPermissions as a, isAccessReviewError as at, storedApprovalToken as b, decodeApprovalCursor as c, decideAccessReviewItem as ct, pageApprovals as d, AccessReviewOptions as et, cancelApprovals as f, requestApproval as g, readApprovalHeader as h, memoryApprovalStore as i, AccessReviewErrorCode as it, approvalSignatureClaims as j, ApprovalSignatureEntry as k, encodeApprovalCursor as l, AccessReviewsHandlerOptions as lt, inspectApproval as m, applyApprovalVerdict as n, startAccessReview as nt, ApprovalCursorPosition as o, AccessReviewVerdict as ot, consumeApproval as p, matchDelegation as q, assertApprover as r, AccessReviewError as rt, approvalPageSize as s, accessReviewerEligible as st, MemoryApprovalStore as t, StartAccessReviewInput as tt, listAllApprovals as u, accessReviewsHandler as ut, resumeDecision as v, approverRelations as w, summarizeSubject as x, resumeFromHeader as y, IdempotentCall as z };