permdock 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -1,12 +1,14 @@
1
- import { E as Policy, Er as JsonWebKeyLike, Ft as SnapshotOptions, an as Snapshot, ir as Decision, j as PolicyVocabulary, jt as PermDock, kr as Subject, vr as Actor } from "./policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "./permission-types-Dg39z9Kv.js";
3
- import { f as ApprovalStore } from "./types-Br9IXUBG.js";
4
- import { a as ProblemDetails, t as ApprovalHint } from "./errors-OD_4c__H.js";
5
- import { t as InstanceOptions } from "./instance-options-plkrsAog.js";
1
+ import { Nn as Decision, Rt as Instant, Vt as Snapshot, ar as Subject, j as PolicyVocabulary, qn as Actor, tr as JsonWebKeyLike } from "./policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "./vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock, s as SnapshotOptions } from "./permdock-SV8ZINYT.js";
4
+ import { m as ApprovalStore } from "./types-BdtSDbBO.js";
5
+ import { a as ProblemDetails, t as ApprovalHint } from "./errors-DH5QEGXh.js";
6
+ import { t as InstanceOptions } from "./instance-options-BsVpyGIk.js";
6
7
  import { t as RequestContext } from "./request-context-C2_1lchh.js";
7
- import { n as PermDockWrap } from "./wrap-Cr93qqdP.js";
8
- import { r as PdpFactory } from "./types-CIlTojhq.js";
9
- import { n as RevocationFeed } from "./revocations-Cy06JNx2.js";
8
+ import { n as PermDockWrap } from "./wrap-C5jC6sKI.js";
9
+ import { n as RevocationFeed } from "./revocations-R07lFBnX.js";
10
+ import { r as PdpFactory } from "./types-_WhUP7ud.js";
11
+ import { i as evaluationsHandler } from "./evaluations-C_1vdSZc.js";
10
12
  //#region src/server/connection.d.ts
11
13
  type ConnectionData<T> = T | (() => T | null | undefined | Promise<T | null | undefined>);
12
14
  type ConnectionOptions<T = unknown> = {
@@ -14,7 +16,7 @@ type ConnectionOptions<T = unknown> = {
14
16
  readonly permission?: Permission;
15
17
  /** The row for `permission`, or a loader re-run on every revalidation. */
16
18
  readonly data?: ConnectionData<T>;
17
- /** Milliseconds between periodic revalidations; off by default. */
19
+ /** Seconds between periodic revalidations; off by default. */
18
20
  readonly revalidate?: number;
19
21
  };
20
22
  type Connection = {
@@ -51,22 +53,6 @@ type TenantOption<TContext> = string | ((context: TContext) => string | undefine
51
53
  /** Resolves an adapter `tenant` option against its framework context; a throw is no tenant. */
52
54
  declare function tenantScope<TContext>(option: TenantOption<TContext> | undefined, context: TContext): Promise<TenantScope>;
53
55
  //#endregion
54
- //#region src/server/evaluations.d.ts
55
- declare function createEvaluationsHandler(options: {
56
- readonly policy: Policy;
57
- readonly resolve?: (request: Request) => Promise<PermDock>;
58
- readonly getPermDock?: (query?: {
59
- readonly tenant?: string;
60
- }) => Promise<PermDock>;
61
- readonly store?: ApprovalStore;
62
- readonly adapter?: string;
63
- /** The most evaluations one POST may carry; a larger batch is a 413 before any instance is resolved. */
64
- readonly maxEvaluations?: number;
65
- }): {
66
- readonly POST: (request: Request) => Promise<Response>;
67
- readonly GET: (request: Request) => Promise<Response>;
68
- };
69
- //#endregion
70
56
  //#region src/server/web-bot-auth.d.ts
71
57
  type WebBotAuthJwk = JsonWebKeyLike & {
72
58
  readonly kid?: string;
@@ -85,14 +71,18 @@ type WebBotAuthOptions = {
85
71
  readonly keys: WebBotAuthKeys | WebBotAuthKeyLookup;
86
72
  readonly required?: boolean;
87
73
  readonly maxAge?: number;
88
- /** Unix seconds; defaults to the system clock. */
89
- readonly now?: () => number;
74
+ /** The clock; defaults to the system clock. */
75
+ readonly now?: () => Instant;
90
76
  };
91
77
  /**
92
- * An adapter's `webBotAuth` option: `(request) => verifyWebBotAuth(request, options)`,
78
+ * An adapter's `webBotAuth` option: `webBotAuthVerifier(options)`,
93
79
  * so an app without it does not bundle RFC 9421 verification.
94
80
  */
95
- type WebBotAuthVerifier = (request: Request) => Promise<Actor | undefined>;
81
+ type WebBotAuthVerifier = {
82
+ readonly name?: string;
83
+ /** The verified signer as an actor, `undefined` for an unsigned request; throws `InvalidSignatureError` for a bad signature. */
84
+ verify(request: Request): Promise<Actor | undefined>;
85
+ };
96
86
  type DiscoverViaSignatureAgentOptions = {
97
87
  readonly allow: readonly string[];
98
88
  readonly fetch?: typeof fetch;
@@ -105,21 +95,26 @@ declare class InvalidSignatureError extends Error {
105
95
  declare function invalidSignatureResponse(error: unknown): Response | undefined;
106
96
  declare function invalidSignatureProblem(detail: string): Response;
107
97
  declare function discoverViaSignatureAgent(options: DiscoverViaSignatureAgentOptions): WebBotAuthKeys;
108
- declare function verifyWebBotAuth(request: Request, options: WebBotAuthOptions | undefined): Promise<Actor | undefined>;
98
+ /**
99
+ * Verifies Web Bot Auth requests: an RFC 9421 signature tagged `web-bot-auth`
100
+ * that covers `@authority`, and `signature-agent` when the request sends
101
+ * `Signature-Agent` (draft-meunier-webbotauth-httpsig-protocol).
102
+ */
103
+ declare function webBotAuthVerifier(options?: WebBotAuthOptions): WebBotAuthVerifier;
109
104
  //#endregion
110
105
  //#region src/server/server-types.d.ts
111
106
  type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
112
107
  /** The user, or a full `Subject` (core then skips `policy.subject`); `null` is anonymous. */
113
108
  readonly subject: (request: Request) => TUser | Subject | null | Promise<TUser | Subject | null>;
114
109
  readonly actor?: (request: Request) => unknown;
115
- /** `(request) => verifyWebBotAuth(request, options)`; a verified bot becomes the actor. */
110
+ /** `webBotAuthVerifier(options)`; a verified bot becomes the actor. */
116
111
  readonly webBotAuth?: WebBotAuthVerifier;
117
112
  readonly tenant?: string | ((request: Request) => string | undefined | Promise<string | undefined>);
118
113
  readonly store?: ApprovalStore;
119
114
  /** Ends or revalidates open connections; never a decision input. */
120
115
  readonly revocations?: RevocationFeed;
121
116
  /**
122
- * `createPermDock` from `permdock/pdp`: `protect` then decides delegated
117
+ * `getPermDock` from `permdock/pdp`: `protect` then decides delegated
123
118
  * permissions through the remote PDP. The instance handlers receive stays
124
119
  * synchronous and keeps denying delegated permissions (`pdp-unavailable`).
125
120
  */
@@ -131,7 +126,7 @@ type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
131
126
  * Replaces the response of a refused guard. A status below 300, or a
132
127
  * throw, keeps the default response and reports through `on('error')`.
133
128
  */
134
- readonly onDenied?: OnDenied;
129
+ readonly deniedResponse?: DeniedResponse;
135
130
  /**
136
131
  * Request values merged into `subject.context`, under `policy.context`.
137
132
  * Only values the server derived belong here, never client input. A throw
@@ -139,11 +134,13 @@ type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
139
134
  * `on('error')`.
140
135
  */
141
136
  readonly context?: (request: Request) => RequestContext | undefined | Promise<RequestContext | undefined>;
142
- /** Wraps each instance the kernel builds; build it with `wrapPermDock` to cover derived instances. */
137
+ /** Wraps each instance the factory builds; build it with `wrapPermDock` to cover derived instances. */
143
138
  readonly wrap?: PermDockWrap;
139
+ /** The `adapter` label on decision events, revocations and approvals. Defaults to `server`. */
140
+ readonly adapter?: string;
144
141
  };
145
- /** What `onDenied` receives: the refusal and the default Problem Details for it. */
146
- type OnDeniedEvent = {
142
+ /** What `deniedResponse` receives: the refusal and the default Problem Details for it. */
143
+ type DeniedResponseEvent = {
147
144
  readonly decision: Exclude<Decision, {
148
145
  readonly outcome: "granted";
149
146
  }>;
@@ -151,7 +148,7 @@ type OnDeniedEvent = {
151
148
  readonly request: Request | undefined;
152
149
  };
153
150
  /** Returns Problem Details with extra members, a `Response`, or nothing for the default. */
154
- type OnDenied = (event: OnDeniedEvent) => ProblemDetails | Response | undefined | Promise<ProblemDetails | Response | undefined>;
151
+ type DeniedResponse = (event: DeniedResponseEvent) => ProblemDetails | Response | undefined | Promise<ProblemDetails | Response | undefined>;
155
152
  type OperationScopes = {
156
153
  oauthScopesForRequest(method: string, path: string): readonly string[] | undefined;
157
154
  };
@@ -189,14 +186,14 @@ type ScopeGuard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
189
186
  };
190
187
  type Loader<T> = (request: Request) => T | null | undefined | Promise<T | null | undefined>;
191
188
  /**
192
- * `protect(permission, loadData?, options?)`, or `protect(null, loadData?,
189
+ * `protect(permission, data?, options?)`, or `protect(null, data?,
193
190
  * { oauthScopes })` for a route that needs a signed-in principal and, from a
194
191
  * delegated token, one of the OAuth scopes it declares, but no permission.
195
192
  */
196
193
  type Protect<V extends PolicyVocabulary = PolicyVocabulary, TArgs extends unknown[] = []> = {
197
- <T = unknown>(permission: Permission, loadData?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<Guard<T, V>>;
198
- <T = unknown>(permission: null, loadData?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<ScopeGuard<T, V>>;
199
- <T = unknown>(permission: Permission | null, loadData?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<Guard<T, V> | ScopeGuard<T, V>>;
194
+ <T = unknown>(permission: Permission, data?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<Guard<T, V>>;
195
+ <T = unknown>(permission: null, data?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<ScopeGuard<T, V>>;
196
+ <T = unknown>(permission: Permission | null, data?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<Guard<T, V> | ScopeGuard<T, V>>;
200
197
  };
201
198
  type OpenApiHooks = {
202
199
  readonly security: (permission: Permission) => {
@@ -207,7 +204,7 @@ type OpenApiHooks = {
207
204
  };
208
205
  type ProtectOptions = {
209
206
  /**
210
- * `true` when `loadData` returns a row the server loaded itself, to skip
207
+ * `true` when `data` returns a row the server loaded itself, to skip
211
208
  * schema validation. Anything else is validated against the resource
212
209
  * schema before the check.
213
210
  */
@@ -223,25 +220,19 @@ type ProtectOptions = {
223
220
  /** Adds the evaluation `trace` to the guard's decision. */
224
221
  readonly explain?: boolean;
225
222
  };
226
- type ServerKernelOptions<TUser, V extends PolicyVocabulary = PolicyVocabulary> = Omit<ServerPermDockOptions<TUser>, "wrap"> & {
227
- /** Wraps each instance the kernel builds: `otel`, then the adapter's `wrap`. */
228
- readonly wrap?: (permdock: PermDock<V>) => PermDock<V>;
229
- /** The `adapter` label on decision events, revocations and approvals. Defaults to `server`. */
230
- readonly adapter?: string;
231
- };
232
- /**
233
- * What an HTTP adapter builds on: `ServerPermDock` plus an explicit
234
- * `TenantScope` on every call, so the adapter resolves the tenant from its
235
- * own framework context.
236
- */
237
223
  type SnapshotQuery = {
238
224
  /** The active tenant; defaults to the `tenant` option resolved from the request. */
239
225
  readonly tenant?: string;
240
226
  readonly include?: SnapshotOptions["include"];
241
227
  readonly tenants?: "all";
242
228
  };
243
- type ServerKernel<V extends PolicyVocabulary = PolicyVocabulary> = {
244
- readonly permdock: (request: Request, scope?: TenantScope) => Promise<PermDock<V>>;
229
+ /**
230
+ * What `createPermDock` from `permdock/server` returns. Every member takes an
231
+ * optional `TenantScope`, so an adapter resolves the tenant from its own
232
+ * framework context.
233
+ */
234
+ type ServerPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
235
+ readonly getPermDock: (request: Request, scope?: TenantScope) => Promise<PermDock<V>>;
245
236
  /**
246
237
  * The JSON snapshot for a loader (React Router, TanStack Start, SvelteKit, Nuxt), built from the
247
238
  * request's cached subject. Send it with `snapshotHeaders(snapshot)`.
@@ -251,8 +242,10 @@ type ServerKernel<V extends PolicyVocabulary = PolicyVocabulary> = {
251
242
  /**
252
243
  * `protect` against an instance the adapter already holds, such as a gateway
253
244
  * connection's: the same OAuth scope check, loader, decision and approval resume.
245
+ * A method, so a `ServerPermDock<V>` stays assignable to `ServerPermDock`.
254
246
  */
255
- readonly protectOn: <T = unknown>(instance: PermDock<V>, permission: Permission | null, load?: () => T | null | undefined | Promise<T | null | undefined>, protectOptions?: ProtectOptions, request?: Request) => Promise<Guard<T, V> | ScopeGuard<T, V>>;
247
+ protectOn<T = unknown>(instance: PermDock<V>, permission: Permission | null, data?: () => T | null | undefined | Promise<T | null | undefined>, protectOptions?: ProtectOptions, request?: Request): Promise<Guard<T, V> | ScopeGuard<T, V>>;
248
+ /** A long-lived connection for a stream or socket opened by `request`. */
256
249
  readonly connection: <T = unknown>(request: Request, options?: ConnectionOptions<T>, scope?: TenantScope) => Promise<Connection>;
257
250
  /**
258
251
  * Lets `to`, a second `Request` an adapter built for the same incoming
@@ -260,22 +253,12 @@ type ServerKernel<V extends PolicyVocabulary = PolicyVocabulary> = {
260
253
  * actor already resolved for `from`.
261
254
  */
262
255
  readonly shareSubject: (from: Request, to: Request) => void;
263
- readonly problem: ServerPermDock<V>["problem"];
264
- readonly openapi: OpenApiHooks;
265
- readonly permdockHandler: (scope?: (request: Request) => TenantScope | Promise<TenantScope>) => ReturnType<typeof createEvaluationsHandler>;
266
- };
267
- type ServerPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
268
- readonly permdock: (request: Request) => Promise<PermDock<V>>;
269
- readonly getSnapshot: ServerKernel<V>["getSnapshot"];
270
- readonly protect: Protect<V>;
271
- /** A long-lived connection for a stream or socket opened by `request`. */
272
- readonly connection: <T = unknown>(request: Request, options?: ConnectionOptions<T>) => Promise<Connection>;
273
256
  readonly problem: (decision: Decision, init?: {
274
257
  readonly permission?: Permission;
275
258
  readonly instance?: string;
276
259
  }) => Response;
277
260
  readonly openapi: OpenApiHooks;
278
- readonly permdockHandler: () => ReturnType<typeof createEvaluationsHandler>;
261
+ readonly permdockHandler: (scope?: (request: Request) => TenantScope | Promise<TenantScope>) => ReturnType<typeof evaluationsHandler>;
279
262
  };
280
263
  //#endregion
281
- export { ConnectionOptions as A, verifyWebBotAuth as C, tenantScope as D, TenantScope as E, Connection as O, invalidSignatureResponse as S, TenantOption as T, WebBotAuthKeys as _, OperationScopes as a, discoverViaSignatureAgent as b, ServerKernel as c, ServerPermDockOptions as d, SnapshotQuery as f, WebBotAuthKeyLookup as g, WebBotAuthJwk as h, OpenApiHooks as i, ConnectionData as k, ServerKernelOptions as l, InvalidSignatureError as m, OnDenied as n, ProtectOptions as o, DiscoverViaSignatureAgentOptions as p, OnDeniedEvent as r, ScopeGuard as s, Guard as t, ServerPermDock as u, WebBotAuthOptions as v, createEvaluationsHandler as w, invalidSignatureProblem as x, WebBotAuthVerifier as y };
264
+ export { TenantScope as C, ConnectionOptions as D, ConnectionData as E, TenantOption as S, Connection as T, WebBotAuthVerifier as _, OperationScopes as a, invalidSignatureResponse as b, ServerPermDock as c, DiscoverViaSignatureAgentOptions as d, InvalidSignatureError as f, WebBotAuthOptions as g, WebBotAuthKeys as h, OpenApiHooks as i, ServerPermDockOptions as l, WebBotAuthKeyLookup as m, DeniedResponseEvent as n, ProtectOptions as o, WebBotAuthJwk as p, Guard as r, ScopeGuard as s, DeniedResponse as t, SnapshotQuery as u, discoverViaSignatureAgent as v, tenantScope as w, webBotAuthVerifier as x, invalidSignatureProblem as y };
@@ -141,10 +141,17 @@ function sha256(message) {
141
141
  outView.setInt32(28, h7, false);
142
142
  return out;
143
143
  }
144
+ /**
145
+ * The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
146
+ * of `text`. An RFC 9651 sf-token, so it fits a structured header as is.
147
+ */
148
+ function sha256Digest(text) {
149
+ return `sha-256:${bytesToBase64Url(sha256(text))}`;
150
+ }
144
151
  function bytesToBase64Url(bytes) {
145
152
  let binary = "";
146
153
  for (const byte of bytes) binary += String.fromCodePoint(byte);
147
154
  return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
148
155
  }
149
156
  //#endregion
150
- export { sha256 as n, bytesToBase64Url as t };
157
+ export { sha256 as n, sha256Digest as r, bytesToBase64Url as t };
@@ -1,8 +1,9 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { o as isForbiddenKey } from "./thenable-QSmvt-vZ.js";
2
+ import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
3
3
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
4
- import { a as quoteSqlIdent, i as quoteQualifiedTable, o as quoteSqlLiteral, s as quoteSqlTable, t as SQL_IDENT } from "./sql-t8teWOfo.js";
5
- import "./sources-B1-b-R0t.js";
4
+ import { i as configError } from "./errors-CWTY6uih.js";
5
+ import { a as quoteQualifiedTable, c as quoteSqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, t as SQL_IDENT } from "./sql-B5T1IL83.js";
6
+ import "./sources-vs5dGOsS.js";
6
7
  //#region src/cli/sql/quote.ts
7
8
  function quoteIdent(name) {
8
9
  return quoteSqlIdent(name, CLI);
@@ -27,6 +28,15 @@ const CLI = "PermDock CLI";
27
28
  function declaredArray(values) {
28
29
  return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteLiteral).join(", ")}]::text[]`;
29
30
  }
31
+ /**
32
+ * A text array as a Postgres literal (`'{admin,owner}'`). An element that
33
+ * holds a delimiter, a brace, a quote, a backslash, whitespace, or that
34
+ * reads as `NULL`, is double-quoted and escaped, so one element can never
35
+ * split into several.
36
+ */
37
+ function textArrayLiteral(values) {
38
+ return quoteLiteral(`{${values.map((value) => value === "" || /[\s,{}"\\]/u.test(value) || /^null$/iu.test(value) ? `"${value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"` : value).join(",")}}`);
39
+ }
30
40
  //#endregion
31
41
  //#region src/cli/sql/columns.ts
32
42
  /** The Postgres type a JSON Schema property compares as; `undefined` for text or an unknown shape. */
@@ -85,7 +95,7 @@ function arrayColumnsOf(schema) {
85
95
  }
86
96
  const SQL_TYPE = /^[A-Za-z_][A-Za-z0-9_]*( [A-Za-z_][A-Za-z0-9_]*)*(\[\])?$/u;
87
97
  function sqlType(name) {
88
- if (!SQL_TYPE.test(name)) throw new Error(`PermDock CLI: unsafe SQL type '${name}'`);
98
+ if (!SQL_TYPE.test(name)) throw configError(`PermDock CLI: unsafe SQL type '${name}'`);
89
99
  return name;
90
100
  }
91
101
  function tenantTypeOf(ctx) {
@@ -162,7 +172,7 @@ function userIdHelperSql(ctx) {
162
172
  const SESSION_LIVE_HELPER = "permdock_session_live";
163
173
  /** `{ subject: { session: { live: true } } }` in a policy; only Supabase has `auth.sessions`. */
164
174
  function liveSessionSql(ctx) {
165
- if (ctx.dialect !== "supabase") throw new Error(`PermDock CLI: { subject: { session: { live: true } } } reads auth.sessions, which only the supabase dialect has (got ${ctx.dialect})`);
175
+ if (ctx.dialect !== "supabase") throw configError(`PermDock CLI: { subject: { session: { live: true } } } reads auth.sessions, which only the supabase dialect has (got ${ctx.dialect})`);
166
176
  return `(select ${qualified(ctx, SESSION_LIVE_HELPER)}())`;
167
177
  }
168
178
  /**
@@ -214,7 +224,7 @@ function subjectIdSql(ctx) {
214
224
  }
215
225
  }
216
226
  function subjectClaimSql(ctx, claim) {
217
- if (!CLAIM.test(claim)) throw new Error(`PermDock CLI: unsafe claim name '${claim}'`);
227
+ if (!CLAIM.test(claim)) throw configError(`PermDock CLI: unsafe claim name '${claim}'`);
218
228
  switch (ctx.dialect) {
219
229
  case "supabase": return `((select auth.jwt()) ->> ${quoteLiteral(claim)})`;
220
230
  case "neon": return `((select auth.session()) ->> ${quoteLiteral(claim)})`;
@@ -224,7 +234,7 @@ function subjectClaimSql(ctx, claim) {
224
234
  }
225
235
  /** A claim as `jsonb`; the `guc` dialect stores JSON text in `<prefix>.<claim>`. */
226
236
  function subjectClaimJsonSql(ctx, claim) {
227
- if (!CLAIM.test(claim)) throw new Error(`PermDock CLI: unsafe claim name '${claim}'`);
237
+ if (!CLAIM.test(claim)) throw configError(`PermDock CLI: unsafe claim name '${claim}'`);
228
238
  switch (ctx.dialect) {
229
239
  case "supabase": return `((select auth.jwt()) -> ${quoteLiteral(claim)})`;
230
240
  case "neon": return `((select auth.session()) -> ${quoteLiteral(claim)})`;
@@ -275,7 +285,8 @@ const CUSTOM_ROLES = {
275
285
  trustedReplace: "permdock_trusted_replace_custom_role_grants",
276
286
  trustedRename: "permdock_trusted_rename_custom_role_grants",
277
287
  trustedRemove: "permdock_trusted_delete_custom_role_grants",
278
- cascade: "permdock_cascade_custom_role"
288
+ cascade: "permdock_cascade_custom_role",
289
+ shared: "permdock_is_shared_role"
279
290
  };
280
291
  /** The function `rls.roles` adds. The name is part of the SQL contract. */
281
292
  const GLOBAL_ROLES = { replace: "permdock_replace_global_roles" };
@@ -291,4 +302,4 @@ function allowEntry(ctx) {
291
302
  return ctx.customRoles?.levels === true ? "permission || coalesce('@' || c.level, '')" : "permission";
292
303
  }
293
304
  //#endregion
294
- export { declaredArray as A, parseMembershipsFlag as C, sqlType as D, scopeTypeOf as E, quoteQualified as F, quoteTable as I, qualified as M, quoteIdent as N, tenantTypeOf as O, quoteLiteral as P, CLAIM as S, columnTypesOf as T, subjectClaimJsonSql as _, customRolesOn as a, tenantClaimSql as b, SESSION_LIVE_HELPER as c, keyTenantSql as d, kindFilterSql as f, sessionLiveHelperSql as g, roleKindSql as h, allowEntry as i, helperSchema as j, CLI as k, USER_ID_HELPER as l, memberVia as m, GLOBAL_ROLES as n, rootName as o, liveSessionSql as p, HELPERS as r, signedIn as s, CUSTOM_ROLES as t, globalKindFilterSql as u, subjectClaimSql as v, arrayColumnsOf as w, userIdHelperSql as x, subjectIdSql as y };
305
+ export { declaredArray as A, parseMembershipsFlag as C, sqlType as D, scopeTypeOf as E, quoteQualified as F, quoteTable as I, textArrayLiteral as L, qualified as M, quoteIdent as N, tenantTypeOf as O, quoteLiteral as P, CLAIM as S, columnTypesOf as T, subjectClaimJsonSql as _, customRolesOn as a, tenantClaimSql as b, SESSION_LIVE_HELPER as c, keyTenantSql as d, kindFilterSql as f, sessionLiveHelperSql as g, roleKindSql as h, allowEntry as i, helperSchema as j, CLI as k, USER_ID_HELPER as l, memberVia as m, GLOBAL_ROLES as n, rootName as o, liveSessionSql as p, HELPERS as r, signedIn as s, CUSTOM_ROLES as t, globalKindFilterSql as u, subjectClaimSql as v, arrayColumnsOf as w, userIdHelperSql as x, subjectIdSql as y };
@@ -1,13 +1,12 @@
1
- import { t as decisionToken } from "./token-Bx9qy30p.js";
1
+ import { a as durationOf, f as nowMillis } from "./time-DkWjdL98.js";
2
+ import { t as decisionToken } from "./token-BLZcjQgt.js";
2
3
  //#region src/pdp/shared.ts
3
- const MAX_CACHE_TTL_MS = 3e4;
4
+ const MAX_CACHE_TTL = 30;
4
5
  const CACHE_MAX = 1e3;
5
- /** Milliseconds, clamped to `[0, 30s]`; anything unparseable disables the cache. */
6
+ /** Milliseconds from `ttl` seconds, clamped to 30 s; a `ttl` that is not a whole number of seconds above 0 disables the cache. */
6
7
  function ttlMs(cache) {
7
- if (cache === void 0) return 0;
8
- const raw = typeof cache.ttl === "number" ? cache.ttl : cache.ttl.endsWith("ms") ? Number(cache.ttl.slice(0, -2)) : Number(cache.ttl.slice(0, -1)) * 1e3;
9
- if (!Number.isFinite(raw) || raw <= 0) return 0;
10
- return Math.min(raw, MAX_CACHE_TTL_MS);
8
+ const ttl = durationOf(cache?.ttl);
9
+ return ttl === void 0 ? 0 : Math.min(ttl, MAX_CACHE_TTL) * 1e3;
11
10
  }
12
11
  function denied(reason) {
13
12
  return {
@@ -68,13 +67,13 @@ function ttlCache(ttl) {
68
67
  get(key) {
69
68
  if (ttl <= 0) return;
70
69
  const hit = entries.get(key);
71
- if (hit !== void 0 && Date.now() - hit.at < ttl) return hit.value;
70
+ if (hit !== void 0 && nowMillis() - hit.at < ttl) return hit.value;
72
71
  entries.delete(key);
73
72
  },
74
73
  set(key, value) {
75
74
  if (ttl <= 0) return;
76
75
  entries.set(key, {
77
- at: Date.now(),
76
+ at: nowMillis(),
78
77
  value
79
78
  });
80
79
  if (entries.size > CACHE_MAX) {
@@ -0,0 +1,32 @@
1
+ //#region src/cli/core/signals.ts
2
+ const EXIT_CODES = {
3
+ SIGINT: 130,
4
+ SIGTERM: 143
5
+ };
6
+ /** How long a signalled run may take to clean up before the process exits. */
7
+ const GRACE_MS = 2e3;
8
+ /**
9
+ * Turns SIGINT and SIGTERM into an aborted signal and the 128 + n exit code.
10
+ * A second signal, or a run still busy after the grace period, exits at once.
11
+ */
12
+ function trapSignals() {
13
+ const controller = new AbortController();
14
+ const handlers = Object.entries(EXIT_CODES).map(([name, code]) => {
15
+ const handler = () => {
16
+ if (controller.signal.aborted) process.exit(code);
17
+ process.exitCode = code;
18
+ controller.abort(/* @__PURE__ */ new Error(`Received ${name}`));
19
+ setTimeout(() => process.exit(code), GRACE_MS).unref();
20
+ };
21
+ process.on(name, handler);
22
+ return [name, handler];
23
+ });
24
+ return {
25
+ signal: controller.signal,
26
+ dispose: () => {
27
+ for (const [name, handler] of handlers) process.off(name, handler);
28
+ }
29
+ };
30
+ }
31
+ //#endregion
32
+ export { trapSignals };
@@ -0,0 +1,225 @@
1
+ import { Ct as Credential, Jt as AutomationEvent, Kt as AccessEvent, Yt as CredentialEvent, gt as SupportSession, nn as MembershipEvent, q as DecisionSink, rn as SinkEvent, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
2
+ import { V as AppData } from "./vocabulary-CN8H_9UF.js";
3
+ import { u as OperationRisk } from "./operations-X0VM7F3m.js";
4
+ import { t as Automation } from "./automation-BNM3TtDo.js";
5
+ //#region src/core/sink.d.ts
6
+ /**
7
+ * The closed list of CloudEvents `type` values, `com.permdock.<family>` or
8
+ * `com.permdock.<family>.<operation>`. `RESERVED_CLOUD_EVENT_TYPES` are named
9
+ * for later releases and nothing emits them yet.
10
+ */
11
+ declare const CLOUD_EVENT_TYPES: {
12
+ readonly decision: "com.permdock.decision";
13
+ readonly approvalRequested: "com.permdock.approval.requested";
14
+ readonly approvalResolved: "com.permdock.approval.resolved";
15
+ readonly approvalExpired: "com.permdock.approval.expired";
16
+ readonly approvalCancelled: "com.permdock.approval.cancelled";
17
+ readonly membershipAdded: "com.permdock.membership.added";
18
+ readonly membershipRemoved: "com.permdock.membership.removed";
19
+ readonly membershipChanged: "com.permdock.membership.changed";
20
+ readonly credentialCreated: "com.permdock.credential.created";
21
+ readonly credentialUsed: "com.permdock.credential.used";
22
+ readonly credentialRotated: "com.permdock.credential.rotated";
23
+ readonly credentialRevoked: "com.permdock.credential.revoked";
24
+ readonly directoryCreated: "com.permdock.directory.created";
25
+ readonly directoryReplaced: "com.permdock.directory.replaced";
26
+ readonly directoryPatched: "com.permdock.directory.patched";
27
+ readonly directoryDeleted: "com.permdock.directory.deleted";
28
+ readonly catalogPublished: "com.permdock.catalog.published";
29
+ readonly catalogDrifted: "com.permdock.catalog.drifted";
30
+ readonly supportSessionStarted: "com.permdock.support-session.started";
31
+ readonly supportSessionEnded: "com.permdock.support-session.ended";
32
+ readonly automationPublished: "com.permdock.automation.published";
33
+ readonly automationChanged: "com.permdock.automation.changed";
34
+ readonly automationRevoked: "com.permdock.automation.revoked";
35
+ readonly automationRun: "com.permdock.automation.run";
36
+ readonly deliverySent: "com.permdock.delivery.sent";
37
+ readonly deliveryDelivered: "com.permdock.delivery.delivered";
38
+ readonly deliveryBounced: "com.permdock.delivery.bounced";
39
+ readonly deliveryComplained: "com.permdock.delivery.complained";
40
+ readonly deliveryFailed: "com.permdock.delivery.failed";
41
+ };
42
+ type CloudEventType = (typeof CLOUD_EVENT_TYPES)[keyof typeof CLOUD_EVENT_TYPES];
43
+ /** Types named for a later release; a receiver refuses them until then. None are reserved now. */
44
+ declare const RESERVED_CLOUD_EVENT_TYPES: readonly CloudEventType[];
45
+ /** The CloudEvents JSON format media type for one event (structured mode). */
46
+ declare const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
47
+ /** The CloudEvents JSON batch format media type: a JSON array of events. */
48
+ declare const CLOUDEVENTS_BATCH_CONTENT_TYPE = "application/cloudevents-batch+json";
49
+ /**
50
+ * Why a published catalog drifted. The first four broke a live hosted grant,
51
+ * which the Cloud then suspends; the `operation-*` codes only report.
52
+ */
53
+ type CatalogFindingCode = "permission-removed" | "not-hostable" | "grantee-removed" | "approval-tightened" | "operation-risk-raised" | "operation-approval-removed";
54
+ /** One drift finding: the permission key and, when one broke, the hosted grant id. */
55
+ type CatalogFinding = {
56
+ readonly code: CatalogFindingCode;
57
+ readonly permission: string;
58
+ readonly grant?: string;
59
+ /** The operation name, on the `operation-*` codes. */
60
+ readonly operation?: string;
61
+ /** `meta.risk` before the publish, on `operation-risk-raised`; an unset risk is `low`. */
62
+ readonly previous?: OperationRisk;
63
+ /** `meta.risk` after the publish, on `operation-risk-raised`. */
64
+ readonly risk?: OperationRisk;
65
+ };
66
+ /** `data` of a `com.permdock.catalog.*` event: a `permdock cloud push` or a drift against live hosted grants. */
67
+ type CatalogEventData = {
68
+ readonly kind: "publish" | "drift";
69
+ /** The catalog fingerprint after the publish, or the one drift was measured against. */
70
+ readonly fingerprint: string;
71
+ readonly previous?: string;
72
+ readonly findings?: readonly CatalogFinding[];
73
+ };
74
+ /** A CloudEvents 1.0 event in the JSON format, with the distributed-tracing extension. */
75
+ type CloudEvent = {
76
+ readonly specversion: "1.0";
77
+ readonly type: CloudEventType;
78
+ /** An absolute URI naming the producer. */
79
+ readonly source: string;
80
+ readonly subject?: string;
81
+ readonly id: string;
82
+ /** An RFC 3339 instant: the sink event's `at`. */
83
+ readonly time: string;
84
+ readonly datacontenttype: "application/json";
85
+ /** The published JSON Schema of `data`, `https://permdock.com/schemas/<family>-event-v1.json`. */
86
+ readonly dataschema: string;
87
+ /** W3C Trace Context `traceparent`, the CloudEvents distributed-tracing extension. */
88
+ readonly traceparent?: string;
89
+ readonly tracestate?: string;
90
+ readonly data: SinkEvent | CatalogEventData;
91
+ };
92
+ type CloudEventOptions = {
93
+ /** An absolute URI naming the producer, such as the app's origin. */
94
+ readonly source: string;
95
+ /** Defaults to a random UUID. */
96
+ readonly id?: string;
97
+ readonly traceparent?: string;
98
+ readonly tracestate?: string;
99
+ };
100
+ type SignDecisionBatchOptions = {
101
+ readonly audience?: string | readonly string[];
102
+ /** An absolute URI naming the producer, the `source` of every CloudEvent. */
103
+ readonly source: string;
104
+ };
105
+ type MemoryDecisionSinkOptions = {
106
+ readonly capacity?: number;
107
+ } & ({
108
+ readonly signer?: undefined;
109
+ readonly audience?: undefined;
110
+ readonly source?: undefined;
111
+ } | {
112
+ /** Signs each write as an evidence export of CloudEvents. */
113
+ readonly signer: TokenSigner;
114
+ readonly audience?: string | readonly string[];
115
+ /** An absolute URI naming the producer, the `source` of every CloudEvent. */
116
+ readonly source: string;
117
+ });
118
+ type MemoryDecisionSink = DecisionSink & {
119
+ readonly events: () => readonly SinkEvent[];
120
+ readonly batches: () => readonly string[];
121
+ };
122
+ /**
123
+ * The CloudEvents `type` of a sink event. A support access event maps onto the
124
+ * `support-session` family, and a consent the tenant pulls early (`revoked`)
125
+ * ends the session like a lapse; `data.operation` keeps the difference.
126
+ */
127
+ declare function cloudEventType(event: SinkEvent): CloudEventType;
128
+ /**
129
+ * An `automation` sink event for `automation`. `run` carries the run id and
130
+ * belongs on `run` events only.
131
+ */
132
+ declare function automationEvent(input: {
133
+ readonly operation: AutomationEvent["operation"];
134
+ readonly automation: Automation;
135
+ readonly run?: string;
136
+ readonly source?: string;
137
+ readonly by?: AutomationEvent["by"];
138
+ /** An RFC 3339 instant; defaults to now. */
139
+ readonly at?: string;
140
+ /** The application's own data; plain JSON, checked here. */
141
+ readonly x?: AppData;
142
+ }): AutomationEvent;
143
+ /**
144
+ * The `access` event of a `SupportSession`: `started` when it begins,
145
+ * `ended` when it lapses, `revoked` when it is ended early. `principal` is
146
+ * the staff member, as for a support membership.
147
+ */
148
+ declare function supportSessionEvent(input: {
149
+ readonly operation: AccessEvent["operation"];
150
+ readonly session: SupportSession;
151
+ readonly source?: string;
152
+ /** An RFC 3339 instant; defaults to now. */
153
+ readonly at?: string;
154
+ /** The application's own data; plain JSON, checked here. */
155
+ readonly x?: AppData;
156
+ }): AccessEvent;
157
+ /**
158
+ * A `credential` sink event for `credential`. `sample` belongs on `used`
159
+ * events only and must be in `(0, 1]`.
160
+ */
161
+ declare function credentialEvent(input: {
162
+ readonly operation: CredentialEvent["operation"];
163
+ readonly credential: Credential;
164
+ readonly source?: string;
165
+ readonly by?: CredentialEvent["by"];
166
+ readonly sample?: number;
167
+ /** An RFC 3339 instant; defaults to now. */
168
+ readonly at?: string;
169
+ /** The application's own data; plain JSON, checked here. */
170
+ readonly x?: AppData;
171
+ }): CredentialEvent;
172
+ declare function membershipEvent(input: {
173
+ readonly source: string;
174
+ readonly operation: MembershipEvent["operation"];
175
+ readonly principal: MembershipEvent["principal"];
176
+ readonly scope?: string;
177
+ readonly id?: string;
178
+ readonly within?: MembershipEvent["within"];
179
+ readonly via?: string;
180
+ /** An RFC 3339 instant, or NumericDate seconds as a `Membership` holds them. */
181
+ readonly expiresAt?: string | number;
182
+ readonly roles: MembershipEvent["roles"];
183
+ readonly by?: MembershipEvent["by"];
184
+ /** An RFC 3339 instant; defaults to now. */
185
+ readonly at?: string;
186
+ /** The application's own data; plain JSON, checked here. */
187
+ readonly x?: AppData;
188
+ }): MembershipEvent;
189
+ /**
190
+ * A support-access lifecycle event. `started` on consent, `ended` when the
191
+ * session lapses, `revoked` when the tenant pulls consent early. It never
192
+ * decides; the app writes and revokes the membership.
193
+ */
194
+ declare function accessEvent(input: {
195
+ readonly source: string;
196
+ readonly operation: AccessEvent["operation"];
197
+ readonly tenant: string;
198
+ readonly principal: AccessEvent["principal"];
199
+ readonly via?: string;
200
+ readonly roles: readonly string[];
201
+ readonly member?: AccessEvent["member"];
202
+ /** An RFC 3339 instant, or NumericDate seconds as a `Membership` holds them. */
203
+ readonly expiresAt?: string | number;
204
+ readonly grantedBy?: string;
205
+ readonly reason?: string;
206
+ readonly actor?: AccessEvent["actor"];
207
+ /** An RFC 3339 instant; defaults to now. */
208
+ readonly at?: string;
209
+ /** The application's own data; plain JSON, checked here. */
210
+ readonly x?: AppData;
211
+ }): AccessEvent;
212
+ /**
213
+ * Wraps a sink event in a CloudEvents 1.0 envelope. Throws a `TypeError` when
214
+ * `source` is not an absolute URI or `traceparent` is not W3C Trace Context.
215
+ */
216
+ declare function toCloudEvent(event: SinkEvent, options: CloudEventOptions): CloudEvent;
217
+ /**
218
+ * Signs sink events as an offline evidence export: a compact JWS with
219
+ * `typ: vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents.
220
+ * Live deliveries use Standard Webhooks instead.
221
+ */
222
+ declare function signDecisionBatch(events: readonly SinkEvent[], signer: TokenSigner, options: SignDecisionBatchOptions): Promise<string>;
223
+ declare function memoryDecisionSink(options?: MemoryDecisionSinkOptions): MemoryDecisionSink;
224
+ //#endregion
225
+ export { toCloudEvent as S, credentialEvent as _, CatalogFinding as a, signDecisionBatch as b, CloudEventOptions as c, MemoryDecisionSinkOptions as d, RESERVED_CLOUD_EVENT_TYPES as f, cloudEventType as g, automationEvent as h, CatalogEventData as i, CloudEventType as l, accessEvent as m, CLOUDEVENTS_CONTENT_TYPE as n, CatalogFindingCode as o, SignDecisionBatchOptions as p, CLOUD_EVENT_TYPES as r, CloudEvent as s, CLOUDEVENTS_BATCH_CONTENT_TYPE as t, MemoryDecisionSink as u, membershipEvent as v, supportSessionEvent as x, memoryDecisionSink as y };