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
@@ -1,9 +1,9 @@
1
- import { Ct as Credential, Nn as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, ir as Subject, j as PolicyVocabulary, lt as TokenFailureCause, q as DecisionSink, qt as AuthEvent, rr as Principal, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
- import { E as PermissionTree, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
- import { p as PrincipalSource } from "./permdock-D7eeLJER.js";
4
- import { t as Disclosure } from "./problem-details-DXlt-vks.js";
5
- import { a as ProblemDetails, t as ApprovalHint } from "./errors-C2PXIv4c.js";
6
- import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-BLd4MnBX.js";
1
+ import { Ct as Credential, Ln as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, Zt as AuthEvent, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, j as PolicyVocabulary, lr as Subject, lt as TokenFailureCause, q as DecisionSink, sr as Principal, ut as TokenSigner } from "./policy-types-B-F-qAZk.js";
2
+ import { f as PermissionTree, u as Permission } from "./permission-types-DhNEmoRG.js";
3
+ import { h as PrincipalSource } from "./permdock-Dco6dyCK.js";
4
+ import { t as Disclosure } from "./problem-details-Tcfmj3bV.js";
5
+ import { a as ProblemDetails, t as ApprovalHint } from "./errors-B_Qg9D3e.js";
6
+ import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-C4gZUEZy.js";
7
7
  //#region src/server/create.d.ts
8
8
  /**
9
9
  * The Fetch factory behind every HTTP adapter. The subject and actor are
@@ -1,20 +1,27 @@
1
- import { $n as Delegation, Bt as LocalSnapshotManifest, C as MembershipFixture, D as PolicyDelegation, I as SeparationConflict, In as DenialReason, J as EntitlementSource, Kt as AccessEvent, Lt as InstanceHandle, N as RoleBinding, Nn as Decision, P as RoleOptions, Pn as Denial, Qt as DeliveryEvent, R as SupportAccessOptions, Rt as Instant, T as Policy, V as VocabularyFromInput, Vt as Snapshot, W as CustomRoleSource, Xt as DecisionEvent, Y as JwtClaims, Zn as CustomRole, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, et as MembershipSource, g as GrantCondition, h as Grant, i as ApprovalOption, ir as Subject, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, mr as OpaqueCondition, nr as Membership, nt as RelationGroup, ot as SnapshotSource, rn as SinkEvent, rr as Principal, s as AssuranceRequirement, sn as PolicyScopesInput, ur as ConditionRef, ut as TokenSigner, vr as SqlFunctionArg, yr as SqlFunctionCondition } from "./policy-types-DzwivBgR.js";
2
- import { C as InferPermissionTree, D as PermissionsOptions, E as PermissionTree, F as ResourceParent, L as ResourceRelationInput, M as ResourceMeta, N as ResourceNode, P as ResourceOptions, R as ResourceRestricted, T as PermissionKind, g as ActionMeta, h as ActionList, k as ResourceInit, r as Role, w as Permission, z as ResourceXTree } from "./vocabulary-D6lPdb4Z.js";
3
- import { i as PermDockOptions, r as PermDock } from "./permdock-D7eeLJER.js";
4
- import { a as PolicyDocument } from "./hosted-DBDX0M-P.js";
5
- import { m as ApprovalStore } from "./types-CCpc2Dcv.js";
6
- import { t as InstanceOptions } from "./instance-options-Omfd793B.js";
7
- import { n as PermDockWrap } from "./wrap-Bd1Tejur.js";
1
+ import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-B-F-qAZk.js";
2
+ import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-DhNEmoRG.js";
3
+ import { a as RoleTree, r as Role } from "./vocabulary-Bg3eeT2H.js";
4
+ import { a as PermDock, o as PermDockOptions } from "./permdock-Dco6dyCK.js";
5
+ import { o as PolicyDocument } from "./hosted-BmjzxQhp.js";
6
+ import { m as ApprovalStore } from "./types-DC44-hqb.js";
7
+ import { t as InstanceOptions } from "./instance-options-CU0YQCLH.js";
8
+ import { n as PermDockWrap } from "./wrap-B6R0cMRL.js";
8
9
  import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
9
- import { i as CatalogEventData, s as CloudEvent } from "./sink-Bj_lDUDq.js";
10
+ import { i as CatalogEventData, s as CloudEvent } from "./sink-Cp_Eot9W.js";
10
11
  import { StandardSchemaV1 } from "@standard-schema/spec";
11
12
  //#region src/conditions/refs.d.ts
12
- type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session";
13
+ type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session" | "claims";
13
14
  type SubjectRef = ConditionRef & { readonly [K in KnownRefField]: SubjectRef; } & {
14
15
  readonly [key: string]: SubjectRef;
15
16
  };
16
17
  declare const principal: SubjectRef;
17
18
  declare const context: SubjectRef;
19
+ /**
20
+ * `principal.claims.<path>` for a dot path such as `team_ids` or
21
+ * `attrs.region`, typed `SubjectRef` under `noUncheckedIndexedAccess` and
22
+ * `noPropertyAccessFromIndexSignature`.
23
+ */
24
+ declare function claim(path: string): SubjectRef;
18
25
  //#endregion
19
26
  //#region src/core/custom-roles.d.ts
20
27
  type CustomRoleDropReason = "unknown-permission" | "outside-ceiling" | "condition-not-allowed" | "unknown-level";
@@ -27,6 +34,9 @@ type CustomRoleDrop = {
27
34
  } | {
28
35
  readonly role: string;
29
36
  readonly reason: "unknown-role";
37
+ } | {
38
+ readonly role: string;
39
+ readonly reason: "name-taken";
30
40
  };
31
41
  /** A stored grant that named a permission by a key it was renamed from. */
32
42
  type CustomRoleRename = {
@@ -57,7 +67,29 @@ type CustomRoleValidation = {
57
67
  * together with the denies of the roles those grants belong to.
58
68
  */
59
69
  declare function resolveCustomRole(policy: Policy, role: CustomRole): ResolvedCustomRole;
60
- declare function validateCustomRole(policy: Policy, role: CustomRole): CustomRoleValidation;
70
+ type ValidateCustomRoleOptions = {
71
+ /** The shared custom roles: a tenant role with one of their names is dropped as `name-taken`. */
72
+ readonly shared?: readonly CustomRole[];
73
+ };
74
+ declare function validateCustomRole(policy: Policy, role: CustomRole, options?: ValidateCustomRoleOptions): CustomRoleValidation;
75
+ /** The outcome of one stored allow entry, `<permission>[@<level>]`. */
76
+ type CustomRoleEntry = {
77
+ readonly ok: true;
78
+ /** The current key, after a `renamed` key resolves. */
79
+ readonly permission: string;
80
+ readonly level?: string;
81
+ } | {
82
+ readonly ok: false;
83
+ readonly cause: "unknown-permission" | "outside-ceiling" | "unknown-level";
84
+ };
85
+ /**
86
+ * Checks one stored allow entry, `<permission>[@<level>]`, the way
87
+ * `permdock_custom_role_entry_problem` does in SQL. `scope` defaults to the
88
+ * first scope; its ceiling is the allows of that scope's assignable roles.
89
+ */
90
+ declare function parseCustomRoleEntry(policy: Policy, entry: string, options?: {
91
+ readonly scope?: string;
92
+ }): CustomRoleEntry;
61
93
  /**
62
94
  * The compact JWT form of custom roles for the `memberships[].grants` claim
63
95
  * RLS reads in `jwt` mode: role name to entries, where `key` allows, `-key`
@@ -81,6 +113,19 @@ declare function requiresApproval(approval: Grant["approval"] | undefined): bool
81
113
  //#endregion
82
114
  //#region src/core/policy.d.ts
83
115
  declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>>;
116
+ /** The role names a policy declares: the keys of its `defineRoles` vocabulary, else `string`. */
117
+ type RoleNameOf<P> = P extends {
118
+ readonly vocabulary: infer V;
119
+ } ? V extends {
120
+ readonly roles: infer R extends RoleTree;
121
+ } ? R[keyof R]["key"] : string : string;
122
+ /**
123
+ * Whether `value` names a role the policy declares, for a role read as a
124
+ * string from a database or a token. A name it rejects is an unknown role,
125
+ * which grants nothing (`unknown-role`). A tenant's custom roles are not
126
+ * declared; `CustomRoleSource` resolves them.
127
+ */
128
+ declare function isRoleName<P extends Policy<never>>(policy: P, value: unknown): value is RoleNameOf<P>;
84
129
  declare function separationConflicts(policy: Policy, memberships: readonly MembershipFixture[]): readonly SeparationConflict[];
85
130
  //#endregion
86
131
  //#region src/core/permission-registry.d.ts
@@ -284,11 +329,23 @@ type SignSnapshotOptions = {
284
329
  /** `aud`; a signer with no default audience refuses to sign without one. */
285
330
  readonly audience?: string | readonly string[];
286
331
  };
332
+ /** The claims of a `vnd.permdock.snapshot+jwt` apart from `iss`, `aud` and `jti`. */
333
+ type SnapshotClaims = {
334
+ readonly snapshot: Omit<Snapshot, "issuedAt" | "expiresAt">;
335
+ /** The principal's id; absent for an anonymous snapshot. */
336
+ readonly sub?: string;
337
+ /** `issuedAt` in NumericDate seconds; absent when it is not after the epoch. */
338
+ readonly iat?: number;
339
+ /** `expiresAt` in NumericDate seconds; absent when the snapshot has none, and the signer then sets its default. */
340
+ readonly exp?: number;
341
+ };
287
342
  /**
288
- * Signs `snapshot` as a `vnd.permdock.snapshot+jwt`. `issuedAt` and
289
- * `expiresAt` become `iat` and `exp` and leave the `snapshot` claim, so the
290
- * registered claims are the only times a verifier reads.
343
+ * The claims `signSnapshot` signs for `snapshot`. `issuedAt` and `expiresAt`
344
+ * become `iat` and `exp` and leave the `snapshot` claim, so the registered
345
+ * claims are the only times a verifier reads.
291
346
  */
347
+ declare function snapshotClaims(snapshot: Snapshot): SnapshotClaims;
348
+ /** Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims `snapshotClaims` answers. */
292
349
  declare function signSnapshot(snapshot: Snapshot, signer: TokenSigner, options?: SignSnapshotOptions): Promise<string>;
293
350
  /**
294
351
  * The snapshot a verified `vnd.permdock.snapshot+jwt` carries, parsed as
@@ -433,6 +490,8 @@ type CustomRoleReader = {
433
490
  assignable?(tenant: string): string[] | Promise<string[]>;
434
491
  /** Platform custom roles (`scope: 'global'`). */
435
492
  globalRoles?(): CustomRole[] | Promise<CustomRole[]>;
493
+ /** Shared custom roles (`shared: true`), the same for every tenant. */
494
+ sharedRoles?(): CustomRole[] | Promise<CustomRole[]>;
436
495
  };
437
496
  type CustomRoleSourceOptions = {
438
497
  /** `'all'` (default): read every custom role of each tenant, so `assignableRoles` and `decideRoleChange` see them all. */
@@ -445,8 +504,8 @@ type CustomRoleSourceOptions = {
445
504
  /**
446
505
  * A `CustomRoleSource` over a reader that returns every custom role of a tenant.
447
506
  * It keeps only the roles of the requested tenant. With `read: 'held'` it
448
- * skips a tenant's read, and `globalRoles`, when the subject holds only
449
- * declared roles there.
507
+ * skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
508
+ * subject holds only declared roles there.
450
509
  */
451
510
  declare function customRoleSource(reader: CustomRoleReader, options?: CustomRoleSourceOptions): CustomRoleSource;
452
511
  //#endregion
@@ -481,7 +540,7 @@ type SnapshotForOptions = {
481
540
  declare function snapshotFor<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: SnapshotForOptions): Snapshot;
482
541
  //#endregion
483
542
  //#region src/core/permissions.d.ts
484
- declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>): InferPermissionTree<Input, "", PX> & ResourceXTree<RX>;
543
+ declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>): PermissionsOf<Input, PX, RX>;
485
544
  //#endregion
486
545
  //#region src/core/permission-leaf.d.ts
487
546
  /**
@@ -565,7 +624,15 @@ declare function normalizeAssurance(input: AssuranceRequirement | undefined): As
565
624
  //#endregion
566
625
  //#region src/core/grant-builders.d.ts
567
626
  declare function allow<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
627
+ /**
628
+ * Every action of a resource (`permissions.post`), of several, or of the
629
+ * whole tree, unconditionally. Each grant is listed in the policy as if
630
+ * written out, and an action added to the resource later is granted too.
631
+ */
632
+ declare function allow(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
568
633
  declare function deny<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
634
+ /** Every action of a resource, of several, or of the whole tree, unconditionally. */
635
+ declare function deny(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
569
636
  //#endregion
570
637
  //#region src/core/approval-normalize.d.ts
571
638
  declare function normalizeApproval(approval: ApprovalOption | undefined, permission?: string): Grant["approval"];
@@ -615,6 +682,22 @@ type ActivateInput = {
615
682
  */
616
683
  declare function activate(permdock: InstanceHandle, input: ActivateInput): Decision;
617
684
  //#endregion
685
+ //#region src/core/scope-helpers.d.ts
686
+ /**
687
+ * The canonical form PermDock evaluates one membership in, or `undefined`
688
+ * when it is malformed and grants nothing. `scopes` is the policy's or the
689
+ * catalog's scope list; absent or empty means the implicit `tenant` and
690
+ * `team` pair.
691
+ */
692
+ declare function normalizeMembership(input: unknown, scopes?: readonly Scope[]): Membership | undefined;
693
+ /** Every well-formed membership of `input` in canonical form; malformed entries are dropped. */
694
+ declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[]): readonly Membership[];
695
+ /**
696
+ * The declared scope `name` stands for: the name itself, or the scope the
697
+ * `tenant` (first) or `team` (second) alias names. `undefined` otherwise.
698
+ */
699
+ declare function resolveScope(scopes: readonly Scope[] | undefined, name: unknown): string | undefined;
700
+ //#endregion
618
701
  //#region src/core/ownership.d.ts
619
702
  /** Who a role change is about: their principal id and their membership in the scope instance. */
620
703
  type RoleChangeTarget = {
@@ -667,6 +750,44 @@ type RoleChangeDecision = {
667
750
  readonly change: RoleChange;
668
751
  readonly denials: readonly Denial[];
669
752
  };
753
+ /** The holder-count, membership-kind, exclusivity and `assigns` rules of one role, as the catalog lists them (`CatalogRole`). */
754
+ type RoleRules = {
755
+ readonly key: string;
756
+ readonly min?: number;
757
+ readonly max?: number;
758
+ readonly transferOnly?: boolean;
759
+ readonly assigns?: readonly string[];
760
+ readonly for?: readonly string[];
761
+ readonly exclusiveWith?: readonly string[];
762
+ };
763
+ type RoleChangeCheckInput = {
764
+ readonly change: {
765
+ readonly kind: "assign" | "revoke" | "transfer";
766
+ readonly target: Pick<RoleChangeTarget, "via" | "roles">;
767
+ };
768
+ /** How many principals hold the role in the instance now; without it a role with `min`, `max` or `transferOnly` is denied. */
769
+ readonly holders?: number;
770
+ /** Every declared role: adds the `exclusiveWith` other roles declare against this one, and with `actorRoles` the `assigns` rule. */
771
+ readonly roles?: readonly RoleRules[];
772
+ /** The roles the actor holds at the instance, highest rank first. With `roles` naming any `assigns`, one of them must assign this role. */
773
+ readonly actorRoles?: readonly string[];
774
+ };
775
+ /** `by` names the actor role whose `assigns` allowed the change, `null` when the rule did not apply. */
776
+ type RoleChangeCheck = {
777
+ readonly ok: true;
778
+ readonly by: string | null;
779
+ } | {
780
+ readonly ok: false;
781
+ readonly denials: readonly Denial[];
782
+ };
783
+ /**
784
+ * The rules of a role change that need no subject: `assigns`, `for`,
785
+ * `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
786
+ * the target's roles alone. `decideRoleChange` runs the same function after
787
+ * its actor, tenant and ceiling checks; a service that holds only the
788
+ * catalog calls it with the `CatalogRole` entries.
789
+ */
790
+ declare function checkRoleChange(role: RoleRules, input: RoleChangeCheckInput): RoleChangeCheck;
670
791
  type RoleChangeOptions = {
671
792
  /**
672
793
  * `true` when the application loaded `change.within` from its own store
@@ -879,6 +1000,23 @@ declare function toCsvRow(event: DecisionEvent): string;
879
1000
  */
880
1001
  declare function catalogFingerprint(catalog: unknown): string;
881
1002
  //#endregion
1003
+ //#region src/core/canonical-json.d.ts
1004
+ /**
1005
+ * RFC 8785 (JCS) output for I-JSON input: keys sorted by UTF-16 code units,
1006
+ * ECMAScript number and string serialisation, no whitespace. `undefined`
1007
+ * members are dropped. Outside I-JSON, Dates become ISO strings, bigints
1008
+ * `"<n>n"`, and a repeated object on the current path `"[Circular]"`, so any
1009
+ * validated row serialises.
1010
+ */
1011
+ declare function canonicalJson(value: unknown): string;
1012
+ //#endregion
1013
+ //#region src/core/sha256.d.ts
1014
+ /**
1015
+ * The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
1016
+ * of `text`. An RFC 9651 sf-token, so it fits a structured header as is.
1017
+ */
1018
+ declare function sha256Digest(text: string): string;
1019
+ //#endregion
882
1020
  //#region src/core/delegation.d.ts
883
1021
  type DelegatedPermission = Pick<Permission, "scope" | "resource" | "action">;
884
1022
  /**
@@ -897,4 +1035,4 @@ declare function coveredByDelegation(permission: DelegatedPermission, delegation
897
1035
  */
898
1036
  declare function delegatedPermissions(delegations: readonly PolicyDelegation[] | undefined, subject: Subject, heldRoles: ReadonlySet<string>, now: number): ReadonlySet<string> | undefined;
899
1037
  //#endregion
900
- export { ShadowMismatch as $, CustomRoleValidation as $t, decideRoleChange as A, isExternallyManaged as At, crud as B, getResource as Bt, parseCloudEventBatch as C, MemoryRelationSourceData as Ct, RoleChangeDecision as D, claimsFirst as Dt, RoleChange as E, stripeEntitlementSource as Et, normalizeApproval as F, memorySettingsSource as Ft, definePermissions as G, separationConflicts as Gt, writable as H, listPermissions as Ht, allow as I, memorySnapshotSource as It, CustomRoleReader as J, fromSnapshot as Jt, SnapshotForOptions as K, requiresApproval as Kt, deny as L, sqlFunction as Lt, activate as M, memoryCustomRoleSource as Mt, breakGlass as N, memoryEntitlementSource as Nt, RoleChangeOptions as O, composeMemberships as Ot, supportAccess as P, memoryMembershipSource as Pt, LegacyCheck as Q, CustomRoleRename as Qt, normalizeAssurance as R, opaque as Rt, parseCloudEvent as S, MemoryEdge as St, parseSinkEvents as T, StripeEntitlementsClient as Tt, formerKeys as U, mergePermissions as Ut, readable as V, isPermission as Vt, resource as W, definePolicy as Wt, customRoleSource as X, CustomRoleDrop as Xt, CustomRoleSourceOptions as Y, parseSnapshot as Yt, mayAccess as Z, CustomRoleDropReason as Zt, DIRECTORY_EVENT_SCHEMA as _, signPolicyDocument as _t, toCsvRow as a, principal as an, localSnapshotManifest as at, SINK_EVENT_SCHEMAS as b, WhoCan as bt, OcsfUserManagement as c, ArazzoSimulateInput as ct, ACCESS_EVENT_SCHEMA as d, simulateArazzo as dt, ResolvedCustomRole as en, ShadowOptions as et, AUTOMATION_EVENT_SCHEMA as f, deliveryEvent as ft, DELIVERY_EVENT_SCHEMA as g, SignPolicyDocumentOptions as gt, DECISION_EVENT_SCHEMA as h, snapshotFromClaims as ht, CSV_COLUMNS as i, context as in, AppProfile as it, ActivateInput as j, APPROVAL_POLICY_UNAVAILABLE as jt, RoleChangeTarget as k, countHolders as kt, accessToOcsf as l, ArazzoStepResult as lt, CREDENTIAL_EVENT_SCHEMA as m, signSnapshot as mt, delegatedPermissions as n, resolveCustomRole as nn, defineApp as nt, OCSF_VERSION as o, ArazzoFinding as ot, CATALOG_EVENT_SCHEMA as p, SignSnapshotOptions as pt, snapshotFor as q, emptySnapshot as qt, catalogFingerprint as r, validateCustomRole as rn, AppOptions as rt, OcsfAuthorizeSession as s, ArazzoPlan as st, coveredByDelegation as t, customRoleClaim as tn, shadowMode as tt, toOcsf as u, arazzoFindings as ut, EVENT_SCHEMA_IDS as v, Holder as vt, parseSinkEvent as w, memoryRelationSource as wt, parseCatalogEventData as x, whoCan as xt, MEMBERSHIP_EVENT_SCHEMA as y, HoldingVia as yt, role as z, findPermission as zt };
1038
+ export { resource as $, listPermissions as $t, RoleChangeCheckInput as A, HoldingVia as At, ActivateInput as B, countHolders as Bt, parseCatalogEventData as C, SnapshotClaims as Ct, parseSinkEvents as D, SignPolicyDocumentOptions as Dt, parseSinkEvent as E, snapshotFromClaims as Et, checkRoleChange as F, memoryRelationSource as Ft, allow as G, memoryMembershipSource as Gt, breakGlass as H, APPROVAL_POLICY_UNAVAILABLE as Ht, decideRoleChange as I, StripeEntitlementsClient as It, role as J, sqlFunction as Jt, deny as K, memorySettingsSource as Kt, normalizeMembership as L, stripeEntitlementSource as Lt, RoleChangeOptions as M, whoCan as Mt, RoleChangeTarget as N, MemoryEdge as Nt, RoleChange as O, signPolicyDocument as Ot, RoleRules as P, MemoryRelationSourceData as Pt, formerKeys as Q, isPermission as Qt, normalizeMemberships as R, claimsFirst as Rt, SINK_EVENT_SCHEMAS as S, principal as Sn, SignSnapshotOptions as St, parseCloudEventBatch as T, snapshotClaims as Tt, supportAccess as U, memoryCustomRoleSource as Ut, activate as V, isExternallyManaged as Vt, normalizeApproval as W, memoryEntitlementSource as Wt, readable as X, findPermission as Xt, crud as Y, opaque as Yt, writable as Z, getResource as Zt, DECISION_EVENT_SCHEMA as _, parseCustomRoleEntry as _n, ArazzoSimulateInput as _t, catalogFingerprint as a, requiresApproval as an, customRoleSource as at, EVENT_SCHEMA_IDS as b, claim as bn, simulateArazzo as bt, OCSF_VERSION as c, parseSnapshot as cn, ShadowMismatch as ct, accessToOcsf as d, CustomRoleEntry as dn, defineApp as dt, mergePermissions as en, definePermissions as et, toOcsf as f, CustomRoleRename as fn, AppOptions as ft, CREDENTIAL_EVENT_SCHEMA as g, customRoleClaim as gn, ArazzoPlan as gt, CATALOG_EVENT_SCHEMA as h, ValidateCustomRoleOptions as hn, ArazzoFinding as ht, canonicalJson as i, separationConflicts as in, CustomRoleSourceOptions as it, RoleChangeDecision as j, WhoCan as jt, RoleChangeCheck as k, Holder as kt, OcsfAuthorizeSession as l, CustomRoleDrop as ln, ShadowOptions as lt, AUTOMATION_EVENT_SCHEMA as m, ResolvedCustomRole as mn, localSnapshotManifest as mt, delegatedPermissions as n, definePolicy as nn, snapshotFor as nt, CSV_COLUMNS as o, emptySnapshot as on, mayAccess as ot, ACCESS_EVENT_SCHEMA as p, CustomRoleValidation as pn, AppProfile as pt, normalizeAssurance as q, memorySnapshotSource as qt, sha256Digest as r, isRoleName as rn, CustomRoleReader as rt, toCsvRow as s, fromSnapshot as sn, LegacyCheck as st, coveredByDelegation as t, RoleNameOf as tn, SnapshotForOptions as tt, OcsfUserManagement as u, CustomRoleDropReason as un, shadowMode as ut, DELIVERY_EVENT_SCHEMA as v, resolveCustomRole as vn, ArazzoStepResult as vt, parseCloudEvent as w, signSnapshot as wt, MEMBERSHIP_EVENT_SCHEMA as x, context as xn, deliveryEvent as xt, DIRECTORY_EVENT_SCHEMA as y, validateCustomRole as yn, arazzoFindings as yt, resolveScope as z, composeMemberships as zt };
@@ -0,0 +1,206 @@
1
+ import { T as Policy, sr as Principal, ut as TokenSigner } from "./policy-types-B-F-qAZk.js";
2
+ import { E as SsfPermDockOptions, O as SsfStreamConfiguration, T as SsfPermDock, _ as SetSubject, c as PushSetOptions, d as SetDelivery, g as SetQueue, h as SetPollHandlerOptions, k as SsfStreamStatus, m as SetEvent, p as SetError, t as CaepCommon, v as SignSetOptions } from "./types-cTos-H7p.js";
3
+ //#region src/ssf/create.d.ts
4
+ declare function createPermDock<TUser, TPrincipal extends Principal = Principal>(policy: Policy<TUser, TPrincipal>, options: SsfPermDockOptions): SsfPermDock;
5
+ //#endregion
6
+ //#region src/ssf/poll-client.d.ts
7
+ type PollSetsOptions = {
8
+ /** The transmitter's RFC 8936 poll endpoint, the stream's `delivery.endpoint_url`. */
9
+ readonly endpoint: string;
10
+ /** The `Authorization` header value. */
11
+ readonly authorization?: string;
12
+ /** `jti` values of SETs the receiver accepted. */
13
+ readonly acks?: readonly string[];
14
+ /** SETs the receiver refused, by `jti`. */
15
+ readonly setErrs?: Readonly<Record<string, SetError>>;
16
+ /** At most this many SETs in the response; default 100. `0` only acknowledges. */
17
+ readonly maxEvents?: number;
18
+ /** Default `true`: answer at once rather than wait for a SET. */
19
+ readonly returnImmediately?: boolean;
20
+ readonly fetch?: typeof fetch;
21
+ readonly signal?: AbortSignal;
22
+ };
23
+ /** One SET from a poll response: its `jti` and the compact JWS, not yet verified. */
24
+ type PolledSet = {
25
+ readonly jti: string;
26
+ readonly set: string;
27
+ };
28
+ type PollSetsResult = {
29
+ readonly ok: true;
30
+ readonly sets: readonly PolledSet[];
31
+ readonly moreAvailable: boolean;
32
+ } | Extract<SetDelivery, {
33
+ readonly ok: false;
34
+ }>;
35
+ /**
36
+ * One RFC 8936 poll request: sends `acks` and `setErrs` and answers the SETs
37
+ * the transmitter returns, unverified. A failure maps as `pushSet`'s does; a
38
+ * `2xx` body without a `sets` object is `invalid-request`. Never throws.
39
+ */
40
+ declare function pollSets(options: PollSetsOptions): Promise<PollSetsResult>;
41
+ //#endregion
42
+ //#region src/ssf/set-queue.d.ts
43
+ /**
44
+ * An in-process `SetQueue`: pending SETs per stream in insertion order. A
45
+ * process restart loses them; a deployment with more than one instance needs
46
+ * a shared queue.
47
+ */
48
+ declare function memorySetQueue(): SetQueue;
49
+ /**
50
+ * The RFC 8936 poll endpoint over a `SetQueue`. It applies the request's
51
+ * `acks` and `setErrs`, then answers `{ sets, moreAvailable }` with up to
52
+ * `maxEvents` pending SETs. It answers at once whatever `returnImmediately`
53
+ * says, which RFC 8936 section 2.4 allows.
54
+ */
55
+ declare function setPollHandler(options: SetPollHandlerOptions): (request: Request) => Promise<Response>;
56
+ //#endregion
57
+ //#region src/ssf/streams.d.ts
58
+ /** One stream a transmitter holds and the receiver that created it. */
59
+ type SsfStream = {
60
+ /** The receiver `ssfTransmitter`'s `authorize` answered when the stream was created. */
61
+ readonly owner: string;
62
+ readonly configuration: SsfStreamConfiguration;
63
+ };
64
+ /**
65
+ * The streams an SSF 1.0 transmitter serves (section 8.1). A new stream is
66
+ * `enabled`; `status` answers `null` for a stream that does not exist.
67
+ */
68
+ type SsfStreamStore = {
69
+ /** Names the implementation in errors and events. */
70
+ readonly name?: string;
71
+ create(owner: string, configuration: SsfStreamConfiguration): void | Promise<void>;
72
+ get(streamId: string): SsfStream | null | Promise<SsfStream | null>;
73
+ /** Every stream of `owner`, or every stream when `owner` is absent, oldest first. */
74
+ list(owner?: string): readonly SsfStream[] | Promise<readonly SsfStream[]>;
75
+ /** Replaces the configuration of the stream `configuration.stream_id`; the owner and status stay. */
76
+ update(configuration: SsfStreamConfiguration): void | Promise<void>;
77
+ delete(streamId: string): void | Promise<void>;
78
+ status(streamId: string): SsfStreamStatus | null | Promise<SsfStreamStatus | null>;
79
+ setStatus(status: SsfStreamStatus): void | Promise<void>;
80
+ };
81
+ /**
82
+ * An in-process `SsfStreamStore`. A process restart loses every stream; a
83
+ * deployment with more than one instance needs a shared store.
84
+ */
85
+ declare function memorySsfStreamStore(): SsfStreamStore;
86
+ //#endregion
87
+ //#region src/ssf/transmitter-handler.d.ts
88
+ type SsfTransmitterOptions = {
89
+ /** `iss` of every stream and of the metadata; the `iss` the signer writes. */
90
+ readonly issuer: string;
91
+ /** The URL the handler is mounted at; endpoints are `<endpoint>/stream`, `/status`, `/verify` and `/poll`. Default `issuer`. */
92
+ readonly endpoint?: string;
93
+ readonly streams: SsfStreamStore;
94
+ readonly queue: SetQueue;
95
+ readonly signer: TokenSigner;
96
+ /** The receiver the request's credentials authenticate, or `null` to refuse it with `401`. */
97
+ readonly authorize: (request: Request) => string | null | Promise<string | null>;
98
+ /** `aud` of a receiver's streams; default the receiver itself. */
99
+ readonly audience?: (receiver: string) => string | readonly string[];
100
+ readonly jwksUri?: string;
101
+ /** Default every CAEP and RISC event PermDock's receiver handles. */
102
+ readonly eventsSupported?: readonly string[];
103
+ /** The largest `maxEvents` a poll is answered with; default 100. */
104
+ readonly maxEvents?: number;
105
+ readonly fetch?: typeof fetch;
106
+ };
107
+ type FanOutSetOptions = {
108
+ readonly streams: SsfStreamStore;
109
+ readonly queue: SetQueue;
110
+ readonly signer: TokenSigner;
111
+ readonly fetch?: typeof fetch;
112
+ };
113
+ /** How one stream took a SET. `queued` is `true` for a poll stream and for a paused push stream. */
114
+ type SsfFanOut = {
115
+ readonly stream: string;
116
+ readonly jti: string;
117
+ readonly queued: boolean;
118
+ readonly delivery: SetDelivery;
119
+ };
120
+ /**
121
+ * Signs `event` once per distinct stream audience and delivers it to every
122
+ * stream that is not disabled and has the event in `events_delivered`: a
123
+ * push stream through `pushSet`, a poll stream or a paused stream into the
124
+ * queue. Answers one row per stream that took the event.
125
+ */
126
+ declare function fanOutSet(event: SetEvent, options: FanOutSetOptions): Promise<readonly SsfFanOut[]>;
127
+ /**
128
+ * An SSF 1.0 transmitter as one Fetch handler, routed by path suffix:
129
+ * `/.well-known/ssf-configuration` (section 7.1), `/stream` (8.1.1),
130
+ * `/status` (8.1.2), `/verify` (8.1.4) and `/poll` (RFC 8936). Each receiver
131
+ * sees only the streams it created. Disabling or deleting a stream drops its
132
+ * pending SETs; a paused stream holds them until it is enabled again.
133
+ */
134
+ declare function ssfTransmitter(options: SsfTransmitterOptions): (request: Request) => Promise<Response>;
135
+ //#endregion
136
+ //#region src/ssf/transmitter.d.ts
137
+ /** SSF 1.0 delivery method URN for RFC 8935 push. */
138
+ declare const SSF_PUSH_DELIVERY = "urn:ietf:rfc:8935";
139
+ /** SSF 1.0 delivery method URN for RFC 8936 poll. */
140
+ declare const SSF_POLL_DELIVERY = "urn:ietf:rfc:8936";
141
+ /**
142
+ * Signs one event as an RFC 8417 Security Event Token (`typ: secevent+jwt`):
143
+ * `sub_id` is the event's subject and `events` holds exactly one entry, as
144
+ * SSF 1.0 requires. `iss` is the signer's own.
145
+ */
146
+ declare function signSet(event: SetEvent, signer: TokenSigner, options: SignSetOptions): Promise<string>;
147
+ /**
148
+ * Pushes one SET to a receiver (RFC 8935). A `2xx` is delivery; a `400`
149
+ * maps the receiver's `err` to a cause; `401` and `403` are
150
+ * `authentication-failed` and `access-denied`; a network failure, a timeout,
151
+ * a `429` or a `5xx` is `unavailable` with `retry: true`. Never throws.
152
+ */
153
+ declare function pushSet(set: string, options: PushSetOptions): Promise<SetDelivery>;
154
+ type CaepCredentialChange = CaepCommon & {
155
+ readonly credentialType: string;
156
+ readonly changeType: "create" | "revoke" | "update" | "delete";
157
+ readonly friendlyName?: string;
158
+ readonly x509Issuer?: string;
159
+ readonly x509Serial?: string;
160
+ readonly fido2Aaguid?: string;
161
+ };
162
+ type CaepTokenClaimsChange = CaepCommon & {
163
+ readonly claims: Readonly<Record<string, unknown>>;
164
+ };
165
+ type CaepAssuranceLevelChange = CaepCommon & {
166
+ readonly namespace: string;
167
+ readonly currentLevel: string;
168
+ readonly previousLevel?: string;
169
+ readonly changeDirection?: "increase" | "decrease";
170
+ };
171
+ type CaepDeviceComplianceChange = CaepCommon & {
172
+ readonly previousStatus: "compliant" | "not-compliant";
173
+ readonly currentStatus: "compliant" | "not-compliant";
174
+ };
175
+ type CaepEvents = {
176
+ readonly sessionRevoked: (input: CaepCommon) => SetEvent;
177
+ readonly credentialChange: (input: CaepCredentialChange) => SetEvent;
178
+ readonly tokenClaimsChange: (input: CaepTokenClaimsChange) => SetEvent;
179
+ readonly assuranceLevelChange: (input: CaepAssuranceLevelChange) => SetEvent;
180
+ readonly deviceComplianceChange: (input: CaepDeviceComplianceChange) => SetEvent;
181
+ };
182
+ /** CAEP 1.0 event builders; each returns a `SetEvent` for `signSet`. */
183
+ declare const caepEvents: CaepEvents;
184
+ type RiscAccountDisabled = {
185
+ readonly subject: SetSubject;
186
+ readonly reason?: "hijacking" | "bulk-account";
187
+ };
188
+ type RiscCredentialCompromise = CaepCommon & {
189
+ readonly credentialType: string;
190
+ };
191
+ type RiscEvents = {
192
+ readonly accountDisabled: (input: RiscAccountDisabled) => SetEvent;
193
+ readonly accountPurged: (input: {
194
+ readonly subject: SetSubject;
195
+ }) => SetEvent;
196
+ readonly credentialCompromise: (input: RiscCredentialCompromise) => SetEvent;
197
+ };
198
+ /** RISC 1.0 event builders for the events PermDock's receiver treats as revoking every session. */
199
+ declare const riscEvents: RiscEvents;
200
+ /**
201
+ * The SSF 1.0 section 8.1.4 verification event for `stream`, echoing the
202
+ * receiver's `state`. Its subject is the stream, never a principal.
203
+ */
204
+ declare function streamVerificationEvent(stream: string, state?: string): SetEvent;
205
+ //#endregion
206
+ export { createPermDock as A, memorySsfStreamStore as C, PollSetsResult as D, PollSetsOptions as E, PolledSet as O, SsfStreamStore as S, setPollHandler as T, SsfFanOut as _, CaepTokenClaimsChange as a, ssfTransmitter as b, RiscEvents as c, caepEvents as d, pushSet as f, FanOutSetOptions as g, streamVerificationEvent as h, CaepEvents as i, pollSets as k, SSF_POLL_DELIVERY as l, signSet as m, CaepCredentialChange as n, RiscAccountDisabled as o, riscEvents as p, CaepDeviceComplianceChange as r, RiscCredentialCompromise as s, CaepAssuranceLevelChange as t, SSF_PUSH_DELIVERY as u, SsfTransmitterOptions as v, memorySetQueue as w, SsfStream as x, fanOutSet as y };
@@ -1,7 +1,8 @@
1
- import { dt as TokenVerifier, et as MembershipSource, q as DecisionSink } from "./policy-types-DzwivBgR.js";
2
- import { V as AppData } from "./vocabulary-D6lPdb4Z.js";
1
+ import { dt as TokenVerifier, et as MembershipSource, q as DecisionSink } from "./policy-types-B-F-qAZk.js";
2
+ import { O as AppData } from "./permission-types-DhNEmoRG.js";
3
3
  import { n as RevocationFeed } from "./revocations-R07lFBnX.js";
4
4
  import { t as ClaimsMap } from "./claims-map-Ca-QX8C6.js";
5
+ import { t as SqlQuery } from "./sql-CDEPCA0g.js";
5
6
  //#region src/scim/types.d.ts
6
7
  declare const SCIM_CONTENT_TYPE = "application/scim+json";
7
8
  declare const USER_SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:User";
@@ -192,4 +193,18 @@ declare function directoryMembershipSource(store: DirectoryStore, options?: Dire
192
193
  //#region src/scim/store.d.ts
193
194
  declare function memoryDirectoryStore(): DirectoryStore;
194
195
  //#endregion
195
- export { ScimPage as A, GROUP_SCHEMA as C, SCIM_CONTENT_TYPE as D, ROLES_EXTENSION as E, isDirectoryNotFoundError as F, isDirectoryUniquenessError as I, ScimPatchOp as M, ScimTokenOptions as N, ScimFilter as O, USER_SCHEMA as P, ERROR_SCHEMA as S, PATCH_SCHEMA as T, DirectoryMembershipSourceOptions as _, scimHandler as a, DirectoryUniquenessError as b, parseScimFilter as c, serviceProviderConfig as d, authenticateScim as f, DirectoryGroup as g, DirectoryChange as h, tenantFromPath as i, ScimPageResult as j, ScimHandlerOptions as k, resourceTypes as l, APP_DATA_EXTENSION as m, directoryMembershipSource as n, filterSupported as o, sha256Hex as p, normalizePatchOps as r, matchFilter as s, memoryDirectoryStore as t, schemas as u, DirectoryNotFoundError as v, LIST_SCHEMA as w, DirectoryUser as x, DirectoryStore as y };
196
+ //#region src/scim/postgres-store.d.ts
197
+ type PostgresDirectoryStoreOptions = {
198
+ /** Schema of the generated tables (`permdock scim generate --schema`). Default `permdock`. */
199
+ readonly schema?: string;
200
+ };
201
+ /**
202
+ * A `DirectoryStore` over the tables `permdock scim generate` writes, called
203
+ * through a `SqlQuery` that may read and write them (the table owner, or a
204
+ * role granted on them). Every method is one statement, so a pool needs no
205
+ * transaction: a group and its members change together, and a PATCH that
206
+ * races another write re-reads the row and applies its operations again.
207
+ */
208
+ declare function postgresDirectoryStore(query: SqlQuery, options?: PostgresDirectoryStoreOptions): DirectoryStore;
209
+ //#endregion
210
+ export { ScimFilter as A, DirectoryUser as C, PATCH_SCHEMA as D, LIST_SCHEMA as E, ScimTokenOptions as F, USER_SCHEMA as I, isDirectoryNotFoundError as L, ScimPage as M, ScimPageResult as N, ROLES_EXTENSION as O, ScimPatchOp as P, isDirectoryUniquenessError as R, DirectoryUniquenessError as S, GROUP_SCHEMA as T, DirectoryChange as _, normalizePatchOps as a, DirectoryNotFoundError as b, filterSupported as c, resourceTypes as d, schemas as f, APP_DATA_EXTENSION as g, sha256Hex as h, directoryMembershipSource as i, ScimHandlerOptions as j, SCIM_CONTENT_TYPE as k, matchFilter as l, authenticateScim as m, postgresDirectoryStore as n, tenantFromPath as o, serviceProviderConfig as p, memoryDirectoryStore as r, scimHandler as s, PostgresDirectoryStoreOptions as t, parseScimFilter as u, DirectoryGroup as v, ERROR_SCHEMA as w, DirectoryStore as x, DirectoryMembershipSourceOptions as y };