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,13 +1,16 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { r as approverLeaves } from "./approvers-CqPOLD-o.js";
4
- import { t as describe } from "./describe-Cgkp7eP0.js";
5
- import { t as parseDuration } from "./duration-xK2jGFVc.js";
6
- import { i as getRegistry, n as findPermission } from "./permission-registry-BsblpB-z.js";
7
- import { r as relationReader, t as pendingRelations } from "./relations-CvmSpG67.js";
8
- import { n as resolveRelated } from "./relation-walk-BXnlLtg2.js";
9
- import { t as ApprovalError } from "./errors-DRnGZHzF.js";
10
- import { f as approverRelationKey, l as APPROVAL_HEADER, n as assertApprover, s as listAllApprovals } from "./store-ILkLUj_o.js";
4
+ import { t as describe } from "./describe-BybMRY7A.js";
5
+ import { i as getRegistry, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
+ import { t as assertAppData } from "./app-data-MuyzVqX8.js";
7
+ import { a as durationOf, i as dateAt, u as isoAt } from "./time-DkWjdL98.js";
8
+ import { r as relationReader, t as pendingRelations } from "./relations-BnCWnJGI.js";
9
+ import { n as resolveRelated } from "./relation-walk-3OyDBF0S.js";
10
+ import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
+ import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
12
+ import { c as listAllApprovals, n as assertApprover } from "./store-BDutJkDL.js";
13
+ import { n as parseApprovalHeader } from "./approval-header-CJACtHkv.js";
11
14
  //#region src/approvals/relations.ts
12
15
  const DEFAULT_PARENT_DEPTH = 16;
13
16
  /** Every approver a request names: `by`, each stage and its escalation, and `escalation.to`, inside `anyOf` groups too. */
@@ -71,7 +74,7 @@ async function approverRelations(request, subject, options) {
71
74
  const registry = getRegistry(options.permissions);
72
75
  const cache = /* @__PURE__ */ new Map();
73
76
  const reader = relationReader(options.relations, cache, registry);
74
- const now = (options.now ?? /* @__PURE__ */ new Date()).getTime() / 1e3;
77
+ const now = dateAt(options.now).getTime() / 1e3;
75
78
  const holds = async (item) => {
76
79
  const start = await startOf(item, request.resource.type, id, reader, cache, registry);
77
80
  if (start === void 0) return false;
@@ -133,7 +136,7 @@ function permissionMeta(permission) {
133
136
  resource: permission.resource
134
137
  };
135
138
  }
136
- function summariseSubject(subject) {
139
+ function summarizeSubject(subject) {
137
140
  const principal = subject.principal;
138
141
  return compact({
139
142
  principal: principal === null ? null : compact({
@@ -146,10 +149,10 @@ function summariseSubject(subject) {
146
149
  kind: subject.actor.kind
147
150
  },
148
151
  session: subject.session,
149
- delegation: subject.delegation === void 0 ? void 0 : compact({
152
+ delegation: toWireDelegation(subject.delegation === void 0 ? void 0 : compact({
150
153
  scopes: subject.delegation.scopes,
151
154
  authorizationDetails: subject.delegation.authorizationDetails
152
- })
155
+ }))
153
156
  });
154
157
  }
155
158
  /**
@@ -158,13 +161,14 @@ function summariseSubject(subject) {
158
161
  * extends it.
159
162
  */
160
163
  function approvalTtl(storeTtl, approval) {
161
- if (storeTtl !== void 0 && (!Number.isSafeInteger(storeTtl) || storeTtl <= 0)) throw new RangeError(`PermDock: approval ttl must be a positive whole number of milliseconds, got ${String(storeTtl)}`);
162
- const base = storeTtl ?? 36e5;
163
- const grant = approval === void 0 || approval === "human" ? void 0 : parseDuration(approval.ttl);
164
- return grant === void 0 ? base : Math.min(base, grant * 1e3);
164
+ if (storeTtl !== void 0 && durationOf(storeTtl) === void 0) throw new RangeError(`PermDock: approval ttl must be a whole number of seconds above 0, got ${String(storeTtl)}`);
165
+ const base = storeTtl ?? 3600;
166
+ const grant = approval === void 0 || approval === "human" ? void 0 : durationOf(approval.ttl);
167
+ return grant === void 0 ? base : Math.min(base, grant);
165
168
  }
166
169
  async function requestApproval(store, decision, meta) {
167
- const now = meta.now ?? /* @__PURE__ */ new Date();
170
+ if (meta.x !== void 0) assertAppData(meta.x, "x of an approval request");
171
+ const now = dateAt(meta.now);
168
172
  const leaf = permissionMeta(meta.permission);
169
173
  const approval = decision.grant.approval;
170
174
  const approvers = approval === void 0 || approval === "human" ? void 0 : compact({
@@ -179,18 +183,20 @@ async function requestApproval(store, decision, meta) {
179
183
  const ttl = approvalTtl(meta.ttl ?? store.ttl, approval);
180
184
  const request = freezeDeep(compact({
181
185
  v: 1,
186
+ id: globalThis.crypto.randomUUID(),
182
187
  token: decision.token,
183
188
  permission: leaf.key,
184
189
  scope: leaf.scope,
185
190
  resource: meta.resource ?? { type: leaf.resource },
186
- subject: summariseSubject(meta.subject),
191
+ subject: summarizeSubject(meta.subject),
187
192
  membership: meta.membership,
188
193
  approvers,
189
194
  detail: meta.detail ?? describe(decision).detail,
190
195
  adapter: meta.adapter,
191
196
  createdAt: now.toISOString(),
192
- expiresAt: new Date(now.getTime() + ttl).toISOString(),
193
- status: "pending"
197
+ expiresAt: isoAt(now.getTime() + ttl * 1e3),
198
+ status: "pending",
199
+ x: meta.x
194
200
  }));
195
201
  await store.create(request);
196
202
  return request;
@@ -220,28 +226,29 @@ async function vouchApproval(store, token, verdict) {
220
226
  vouched: verdict.rule
221
227
  }));
222
228
  }
223
- async function inspectApproval(store, token, now = /* @__PURE__ */ new Date()) {
224
- await store.expire(now);
229
+ async function inspectApproval(store, token, at) {
230
+ const now = dateAt(at).getTime();
231
+ await store.expire({ epochMilliseconds: now });
225
232
  const request = await store.get(token);
226
233
  if (request === null) return {
227
234
  ok: false,
228
- detail: "approval-not-found"
235
+ cause: "approval-not-found"
229
236
  };
230
237
  if (request.status === "pending") return {
231
238
  ok: false,
232
- detail: "approval-pending"
239
+ cause: "approval-pending"
233
240
  };
234
241
  if (request.status === "rejected") return {
235
242
  ok: false,
236
- detail: "approval-rejected"
243
+ cause: "approval-rejected"
237
244
  };
238
245
  if (request.consumedAt !== void 0) return {
239
246
  ok: false,
240
- detail: "approval-consumed"
247
+ cause: "approval-consumed"
241
248
  };
242
- if (request.status === "expired" || Date.parse(request.expiresAt) <= now.getTime()) return {
249
+ if (request.status === "expired" || Date.parse(request.expiresAt) <= now) return {
243
250
  ok: false,
244
- detail: "approval-expired"
251
+ cause: "approval-expired"
245
252
  };
246
253
  return {
247
254
  ok: true,
@@ -249,17 +256,18 @@ async function inspectApproval(store, token, now = /* @__PURE__ */ new Date()) {
249
256
  };
250
257
  }
251
258
  /** Inspects `token` and, when it is approved, consumes it so it resumes once. */
252
- async function consumeApproval(store, token, now = /* @__PURE__ */ new Date()) {
259
+ async function consumeApproval(store, token, at) {
260
+ const now = { epochMilliseconds: dateAt(at).getTime() };
253
261
  const inspected = await inspectApproval(store, token, now);
254
262
  if (!inspected.ok) return inspected;
255
263
  if (typeof store.consume !== "function") return {
256
264
  ok: false,
257
- detail: "approval-not-found"
265
+ cause: "approval-not-found"
258
266
  };
259
267
  const consumed = await store.consume(token, now);
260
268
  if (consumed === null) return {
261
269
  ok: false,
262
- detail: "approval-consumed"
270
+ cause: "approval-consumed"
263
271
  };
264
272
  return {
265
273
  ok: true,
@@ -332,13 +340,13 @@ async function resumeDecision(input) {
332
340
  inspected = await inspectApproval(store, token, input.now);
333
341
  if (inspected.ok) {
334
342
  const { request } = inspected;
335
- if (request.permission !== input.permission.key || request.resource.id !== void 0 && request.resource.id !== input.resource.id) return approvalDenied("approval-mismatch");
343
+ if (request.permission !== input.permission.key || request.resource.id !== void 0 && request.resource.id !== input.resource.id || request.subject.principal?.id !== input.subject.principal?.id) return approvalDenied("approval-mismatch");
336
344
  if (input.consume !== false) inspected = await consumeApproval(store, token, input.now);
337
345
  }
338
346
  } catch {
339
347
  return approvalDenied("approval-not-found");
340
348
  }
341
- if (!inspected.ok) return approvalDenied(inspected.detail);
349
+ if (!inspected.ok) return approvalDenied(inspected.cause);
342
350
  const principal = input.subject.principal;
343
351
  if (principal === null) return approvalDenied("approval-mismatch");
344
352
  return {
@@ -383,16 +391,15 @@ async function cancelApprovals(store, filter, meta) {
383
391
  }
384
392
  }))).filter(Boolean).length;
385
393
  }
394
+ /** The token of a `PermDock-Approval` field: one RFC 9651 sf-token Item with no parameters, else `undefined`. */
386
395
  function readApprovalHeader(headers) {
387
- const value = headers.get(APPROVAL_HEADER);
388
- if (value === null || value.trim() === "") return;
389
- return value.trim();
396
+ return parseApprovalHeader(headers.get(APPROVAL_HEADER));
390
397
  }
391
398
  function resumeFromHeader(store, headers, now) {
392
399
  const token = readApprovalHeader(headers);
393
400
  if (token === void 0) return Promise.resolve({
394
401
  ok: false,
395
- detail: "approval-not-found"
402
+ cause: "approval-not-found"
396
403
  });
397
404
  return inspectApproval(store, token, now);
398
405
  }
@@ -409,7 +416,7 @@ function resumeFromHeader(store, headers, now) {
409
416
  */
410
417
  async function storedApprovalToken(store, decision, options = {}) {
411
418
  if (store === void 0 || decision.outcome !== "approval-required") return;
412
- const now = (options.now ?? /* @__PURE__ */ new Date()).getTime();
419
+ const now = dateAt(options.now).getTime();
413
420
  try {
414
421
  const record = await store.get(decision.token);
415
422
  if (record === null || record.status === "pending" && options.denyPending !== true || record.status === "expired" || Date.parse(record.expiresAt) <= now) return;
@@ -419,4 +426,4 @@ async function storedApprovalToken(store, decision, options = {}) {
419
426
  }
420
427
  }
421
428
  //#endregion
422
- export { requestApproval as a, resumeFromHeader as c, vouchApproval as d, approverPermissions as f, readApprovalHeader as i, storedApprovalToken as l, approverRelations as m, consumeApproval as n, resolveApproval as o, heldPermissions as p, inspectApproval as r, resumeDecision as s, cancelApprovals as t, summariseSubject as u };
429
+ export { requestApproval as a, resumeFromHeader as c, vouchApproval as d, approverPermissions as f, readApprovalHeader as i, storedApprovalToken as l, approverRelations as m, consumeApproval as n, resolveApproval as o, heldPermissions as p, inspectApproval as r, resumeDecision as s, cancelApprovals as t, summarizeSubject as u };
@@ -1,8 +1,9 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
4
- import { A as ConnectionOptions, C as verifyWebBotAuth, O as Connection, b as discoverViaSignatureAgent, i as OpenApiHooks, m as InvalidSignatureError, o as ProtectOptions } from "../server-types-DdqBwZN_.js";
5
- import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
6
7
  import { Context, Hono, MiddlewareHandler } from "hono";
7
8
  import { SSEMessage, SSEStreamingApi } from "hono/streaming";
8
9
  import { WSEvents } from "hono/ws";
@@ -12,15 +13,17 @@ type HonoPermDockOptions<TUser = unknown> = ServerAdapterOptions<Context, TUser>
12
13
  readonly revocations?: RevocationFeed;
13
14
  };
14
15
  /** The `Variables` both middlewares set; Hono merges them into the route's Env. */
15
- type PermDockEnv<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
16
+ type HonoPermDockEnv<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
16
17
  readonly Variables: {
17
18
  readonly permdock: PermDock<V>;
18
19
  readonly permdockData: TData;
19
20
  };
20
21
  };
21
22
  type HonoPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
22
- readonly permdock: () => MiddlewareHandler<PermDockEnv<unknown, V>>;
23
- readonly protect: <TData = unknown>(permission: Permission | null, loadData?: (c: Context) => TData | Promise<TData>, protectOptions?: ProtectOptions) => MiddlewareHandler<PermDockEnv<NonNullable<TData>, V>>;
23
+ /** The `PermDock` for one request, for code the middleware does not run before. */
24
+ readonly getPermDock: (c: Context) => Promise<PermDock<V>>;
25
+ readonly middleware: () => MiddlewareHandler<HonoPermDockEnv<unknown, V>>;
26
+ readonly protect: <TData = unknown>(permission: Permission | null, data?: (c: Context) => TData | Promise<TData>, protectOptions?: ProtectOptions) => MiddlewareHandler<HonoPermDockEnv<NonNullable<TData>, V>>;
24
27
  /** A long-lived connection for the request behind `c`. */
25
28
  readonly connection: (c: Context, connectionOptions?: ConnectionOptions) => Promise<Connection>;
26
29
  /** `upgradeWebSocket` events that close with `1008` when the connection aborts. */
@@ -45,4 +48,4 @@ type SseOptions<T> = {
45
48
  };
46
49
  export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: HonoPermDockOptions<TUser>): HonoPermDock<V>;
47
50
  //#endregion
48
- export { type HonoPermDock, type HonoPermDockOptions, InvalidSignatureError, type PermDockEnv, type SseOptions, discoverViaSignatureAgent, verifyWebBotAuth };
51
+ export { type HonoPermDock, type HonoPermDockEnv, type HonoPermDockOptions, InvalidSignatureError, type SseOptions, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -1,9 +1,9 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { r as PermDockRevokedError } from "../errors-drnfxYtm.js";
3
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-C9YJsv3H.js";
4
- import { t as problemFromError } from "../map-error-BE27PYkE.js";
5
- import { r as bindKernel } from "../bind-kk-uyCwH.js";
6
- import { i as onRevoked, n as guardIterable, t as POLICY_VIOLATION } from "../stream-BMui98KK.js";
2
+ import { r as PermDockRevokedError } from "../errors-BKy0EfhN.js";
3
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
4
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
5
+ import { r as bindKernel } from "../bind-CAvgUuKs.js";
6
+ import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
7
7
  import { Hono } from "hono";
8
8
  //#region src/hono/create.ts
9
9
  function socket(connection, events) {
@@ -11,7 +11,7 @@ function socket(connection, events) {
11
11
  ...events,
12
12
  onOpen: (evt, ws) => {
13
13
  onRevoked(connection, (problem) => {
14
- ws.close(POLICY_VIOLATION, problem.type);
14
+ ws.close(POLICY_VIOLATION, closeReason(problem));
15
15
  });
16
16
  if (!connection.signal.aborted) events.onOpen?.(evt, ws);
17
17
  },
@@ -61,16 +61,16 @@ function mapDownstream(c) {
61
61
  }
62
62
  }
63
63
  function createPermDock(policy, options) {
64
- const { kernel, bind, scopeOf, handlerScope, attach, guard: runGuard } = bindKernel(policy, options, "hono", (c) => c.req.raw);
65
- const permdock = () => async (c, next) => {
64
+ const { kernel, bind, scopeOf, handlerScope, getPermDock, attach, guard: runGuard } = bindKernel(policy, options, "hono", (c) => c.req.raw);
65
+ const middleware = () => async (c, next) => {
66
66
  const attached = await attach(c);
67
67
  if (!attached.ok) return attached.response;
68
68
  c.set("permdock", attached.permdock);
69
69
  await next();
70
70
  mapDownstream(c);
71
71
  };
72
- const protect = (permission, loadData, protectOptions) => async (c, next) => {
73
- const guard = await runGuard(permission, loadData, c, protectOptions);
72
+ const protect = (permission, data, protectOptions) => async (c, next) => {
73
+ const guard = await runGuard(permission, data, c, protectOptions);
74
74
  if (!guard.ok) return guard.response;
75
75
  c.set("permdock", guard.permdock);
76
76
  c.set("permdockData", guard.data);
@@ -86,7 +86,8 @@ function createPermDock(policy, options) {
86
86
  return app;
87
87
  };
88
88
  return {
89
- permdock,
89
+ getPermDock,
90
+ middleware,
90
91
  protect,
91
92
  connection,
92
93
  socket,
@@ -96,4 +97,4 @@ function createPermDock(policy, options) {
96
97
  };
97
98
  }
98
99
  //#endregion
99
- export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, verifyWebBotAuth };
100
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,315 @@
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { n as isForbiddenKey, s as splitPath } from "./paths-DXSHAMIa.js";
4
+ import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-uWQZ4v84.js";
5
+ import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
+ import { d as isSelfParented } from "./resource-relations-D_jw0BFx.js";
7
+ import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-DkWjdL98.js";
8
+ import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
9
+ import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-hxrUsbpM.js";
10
+ import { i as indexPolicy, t as declaredRoleNames } from "./policy-DbM5YYtV.js";
11
+ //#region src/core/hosted.ts
12
+ function memoryPolicySource(document = null) {
13
+ const current = document === null ? null : parsePolicyDocument(document);
14
+ return Object.freeze({
15
+ current: () => current,
16
+ refresh: () => Promise.resolve()
17
+ });
18
+ }
19
+ function rejectUnsafe(value) {
20
+ if (value === null || typeof value !== "object") return;
21
+ if (Array.isArray(value)) {
22
+ for (const item of value) rejectUnsafe(item);
23
+ return;
24
+ }
25
+ for (const key of Object.keys(value)) {
26
+ if (isForbiddenKey(key)) throw new Error(`PermDock: unsafe policy document key '${key}'`);
27
+ rejectUnsafe(value[key]);
28
+ }
29
+ }
30
+ /** Validates the document envelope; per-grant checks happen at merge time. */
31
+ function parsePolicyDocument(json) {
32
+ const input = typeof json === "string" ? JSON.parse(json) : json;
33
+ if (!isRecord(input)) throw new TypeError("PermDock: policy document must be an object");
34
+ const copy = JSON.parse(JSON.stringify(input));
35
+ rejectUnsafe(copy);
36
+ if (copy["v"] !== 1) throw new Error(`PermDock: unsupported policy document version '${String(copy["v"])}'`);
37
+ if (typeof copy["id"] !== "string" || typeof copy["fingerprint"] !== "string" || typeof copy["catalog"] !== "string" || !isRfc3339(copy["issuedAt"]) || !Array.isArray(copy["grants"])) throw new TypeError("PermDock: malformed policy document");
38
+ return freezeDeep(copy);
39
+ }
40
+ /** The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`. */
41
+ function policyDocumentFromClaims(claims) {
42
+ const claim = claims["policy"];
43
+ const jti = claims["jti"];
44
+ const iat = claims["iat"];
45
+ if (!isRecord(claim) || typeof jti !== "string" || typeof iat !== "number") throw new TypeError("PermDock: malformed policy document");
46
+ return parsePolicyDocument({
47
+ ...claim,
48
+ id: jti,
49
+ issuedAt: rfc3339(iat)
50
+ });
51
+ }
52
+ const COMPARISONS = /* @__PURE__ */ new Set([
53
+ "eq",
54
+ "ne",
55
+ "gt",
56
+ "gte",
57
+ "lt",
58
+ "lte",
59
+ "contains"
60
+ ]);
61
+ function safePath(path) {
62
+ if (typeof path !== "string" || path.length === 0) return false;
63
+ return splitPath(path).every((segment) => !isForbiddenKey(segment));
64
+ }
65
+ function portableValue(value) {
66
+ if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return true;
67
+ if (Array.isArray(value)) return value.every(portableValue);
68
+ if (!isRecord(value)) return false;
69
+ const keys = Object.keys(value);
70
+ if (keys.length !== 1) return false;
71
+ if (keys[0] === "ref") return safePath(value["ref"]);
72
+ return keys[0] === "date" && typeof value["date"] === "string";
73
+ }
74
+ /** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
75
+ function isPortableCondition(value) {
76
+ if (!isRecord(value) || typeof value["op"] !== "string") return false;
77
+ const op = value["op"];
78
+ if (COMPARISONS.has(op)) return safePath(value["field"]) && portableValue(value["value"]);
79
+ switch (op) {
80
+ case "in":
81
+ case "notIn": return safePath(value["field"]) && (Array.isArray(value["value"]) || isRecord(value["value"])) && portableValue(value["value"]);
82
+ case "isNull": return safePath(value["field"]) && typeof value["value"] === "boolean";
83
+ case "and":
84
+ case "or": return Array.isArray(value["conditions"]) && value["conditions"].every(isPortableCondition);
85
+ case "not": return isPortableCondition(value["condition"]);
86
+ case "memberOf": return (value["scope"] === "tenant" || value["scope"] === "team" || value["scope"] === "resource") && safePath(value["field"]) && Array.isArray(value["roles"]) && value["roles"].every((item) => typeof item === "string") && (value["resource"] === void 0 || typeof value["resource"] === "string") && (value["parents"] === void 0 || Array.isArray(value["parents"]) && value["parents"].every((parent) => safePath(parent) || isRecord(parent) && safePath(parent["field"]) && typeof parent["resource"] === "string"));
87
+ default: return false;
88
+ }
89
+ }
90
+ function approvalRank(approval) {
91
+ if (approval === void 0) return;
92
+ if (approval === "human") return {
93
+ distinct: true,
94
+ stale: false,
95
+ quorum: 1,
96
+ ttl: Number.POSITIVE_INFINITY,
97
+ escalates: false
98
+ };
99
+ return {
100
+ by: approval.stages === void 0 ? JSON.stringify(approval.by) : JSON.stringify([approval.mode, approval.stages]),
101
+ distinct: approval.distinct !== false,
102
+ stale: approval.staleOn === "resource-change",
103
+ quorum: approval.quorum ?? 1,
104
+ ttl: durationOf(approval.ttl) ?? Number.POSITIVE_INFINITY,
105
+ escalates: approval.escalation !== void 0
106
+ };
107
+ }
108
+ /** A hosted approval must meet every approval a code allow requires on the permission. */
109
+ function approvalAtLeast(hosted, code) {
110
+ const mine = approvalRank(hosted);
111
+ for (const required of code) {
112
+ const theirs = approvalRank(required);
113
+ if (theirs === void 0) continue;
114
+ if (mine === void 0) return false;
115
+ if (theirs.distinct && !mine.distinct) return false;
116
+ if (theirs.stale && !mine.stale) return false;
117
+ if (theirs.by !== void 0 && mine.by !== theirs.by) return false;
118
+ if (mine.quorum < theirs.quorum || mine.ttl > theirs.ttl) return false;
119
+ if (mine.escalates && !theirs.escalates) return false;
120
+ }
121
+ return true;
122
+ }
123
+ /** A grantee kind this build does not know is never declared, so the hosted grant is dropped. */
124
+ function undeclaredKind(_grantee) {
125
+ return false;
126
+ }
127
+ function declaredGrantee(policy, grantee, permissionResource) {
128
+ switch (grantee.kind) {
129
+ case "role": return declaredRoleNames(policy).has(grantee.role);
130
+ case "plan": return listPlans(policy.vocabulary.plans).some((leaf) => leaf.key === grantee.plan);
131
+ case "relation": return grantee.resource === permissionResource && getResource(policy.permissions, grantee.resource)?.relations[grantee.relation] !== void 0 && (grantee.through === void 0 || grantee.through === "parent" && isSelfParented(getResource(policy.permissions, grantee.resource))) && (grantee.depth === void 0 || grantee.through === "parent" && Number.isInteger(grantee.depth) && grantee.depth >= 0 && grantee.depth <= 32);
132
+ case "anyone":
133
+ case "authenticated":
134
+ case "actor":
135
+ case "assurance":
136
+ case "inherit": return false;
137
+ default: return undeclaredKind(grantee);
138
+ }
139
+ }
140
+ /** Approvers are declared roles, plans or relations, or any authenticated human. */
141
+ function approvalAcceptable(policy, approval, permissionResource) {
142
+ if (approval === void 0 || approval === "human") return true;
143
+ if (!isRecord(approval)) return false;
144
+ if (approval["mode"] !== void 0 || approval["stages"] !== void 0) return false;
145
+ if (approval["distinct"] !== void 0 && typeof approval["distinct"] !== "boolean") return false;
146
+ if (approval["staleOn"] !== void 0 && (approval["staleOn"] !== "resource-change" || getResource(policy.permissions, permissionResource)?.version === void 0)) return false;
147
+ if (approval["quorum"] !== void 0 && (!Number.isInteger(approval["quorum"]) || approval["quorum"] < 1)) return false;
148
+ if (approval["ttl"] !== void 0 && durationOf(approval["ttl"]) === void 0) return false;
149
+ const escalation = approval["escalation"];
150
+ if (escalation !== void 0 && (!isRecord(escalation) || durationOf(escalation["after"]) === void 0 || !granteesAcceptable(policy, escalation["to"], permissionResource))) return false;
151
+ if (approval["by"] === void 0) return true;
152
+ return granteesAcceptable(policy, approval["by"], permissionResource);
153
+ }
154
+ function granteesAcceptable(policy, raw, permissionResource) {
155
+ if (raw === void 0) return false;
156
+ const items = flattenGrantee(raw);
157
+ return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
158
+ }
159
+ function buildGrant(policy, document, raw) {
160
+ if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
161
+ ok: false,
162
+ reason: "invalid"
163
+ };
164
+ const permission = findPermission(policy.permissions, raw["permission"]);
165
+ if (permission === void 0) return {
166
+ ok: false,
167
+ reason: "unknown-permission"
168
+ };
169
+ if (!policy.hostable.includes(permission.key)) return {
170
+ ok: false,
171
+ reason: "not-hostable"
172
+ };
173
+ const to = flattenGrantee(raw["to"]);
174
+ if (to.length === 0 || !to.every((item) => isRecord(item) && declaredGrantee(policy, item, permission.resource))) return {
175
+ ok: false,
176
+ reason: "unknown-grantee"
177
+ };
178
+ for (const condition of [raw["where"], raw["check"]]) if (condition !== void 0 && !isPortableCondition(condition)) return {
179
+ ok: false,
180
+ reason: "non-portable"
181
+ };
182
+ if (!approvalAcceptable(policy, raw["approval"], permission.resource)) return {
183
+ ok: false,
184
+ reason: "invalid"
185
+ };
186
+ if (raw["fields"] !== void 0 && !(Array.isArray(raw["fields"]) && raw["fields"].every((field) => typeof field === "string"))) return {
187
+ ok: false,
188
+ reason: "invalid"
189
+ };
190
+ const effect = raw["effect"] ?? "allow";
191
+ const options = compact({
192
+ where: raw["where"] === void 0 ? void 0 : normalizeWhere(raw["where"]),
193
+ check: raw["check"] === void 0 ? void 0 : normalizeWhere(raw["check"]),
194
+ approval: raw["approval"],
195
+ fields: raw["fields"]
196
+ });
197
+ let built;
198
+ try {
199
+ const roleItem = to.length === 1 && to[0]?.kind === "role" ? to[0] : null;
200
+ if (roleItem === null) {
201
+ const partial = (effect === "allow" ? allow : deny)(permission, {
202
+ ...options,
203
+ to
204
+ });
205
+ built = completeGrant(partial);
206
+ } else {
207
+ const binding = policy.rolesByName.get(roleItem.role);
208
+ const leaf = findRole(policy.vocabulary.roles, roleItem.role);
209
+ const [first] = role(leaf ?? roleItem.role, [(effect === "allow" ? allow : deny)(permission, options)], binding?.on === void 0 ? {} : { on: binding.on }).grants;
210
+ if (first === void 0) throw new TypeError("PermDock: role produced no grant");
211
+ built = first;
212
+ }
213
+ } catch {
214
+ return {
215
+ ok: false,
216
+ reason: "invalid"
217
+ };
218
+ }
219
+ if (effect === "allow") {
220
+ const codeApprovals = policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === permission.key).map((grant) => grant.approval);
221
+ if (!approvalAtLeast(built.approval, codeApprovals)) return {
222
+ ok: false,
223
+ reason: "weaker-approval"
224
+ };
225
+ }
226
+ return {
227
+ ok: true,
228
+ grant: freezeDeep({
229
+ ...built,
230
+ hosted: {
231
+ document: document.fingerprint,
232
+ grant: raw["id"]
233
+ }
234
+ })
235
+ };
236
+ }
237
+ /** The grants of `document` that `policy` drops, in document order; `permdock/catalog` turns them into drift findings. */
238
+ function hostedGrantDrops(policy, document) {
239
+ return document.grants.flatMap((raw) => {
240
+ const result = buildGrant(policy, document, raw);
241
+ if (result.ok) return [];
242
+ return [freezeDeep({
243
+ grant: isRecord(raw) && typeof raw.id === "string" ? raw.id : "",
244
+ permission: isRecord(raw) && typeof raw.permission === "string" ? raw.permission : "",
245
+ reason: result.reason
246
+ })];
247
+ });
248
+ }
249
+ /**
250
+ * The code policy plus the hosted grants that pass every rule. Hosted
251
+ * allows OR with code allows and any deny still wins, so a hosted grant can
252
+ * never override a code deny; one that fails a rule is dropped, not thrown.
253
+ */
254
+ function mergeHostedGrants(policy, document) {
255
+ if (document === null || document.grants.length === 0) return {
256
+ policy,
257
+ dropped: []
258
+ };
259
+ const merged = [];
260
+ const dropped = [];
261
+ for (const raw of document.grants) {
262
+ const result = buildGrant(policy, document, raw);
263
+ if (result.ok) {
264
+ merged.push(result.grant);
265
+ continue;
266
+ }
267
+ dropped.push(freezeDeep({
268
+ kind: "hosted-grant-dropped",
269
+ document: document.fingerprint,
270
+ grant: isRecord(raw) && typeof raw.id === "string" ? raw.id : "",
271
+ reason: result.reason
272
+ }));
273
+ }
274
+ if (merged.length === 0) return {
275
+ policy,
276
+ dropped
277
+ };
278
+ const grants = [...policy.grants, ...merged];
279
+ return {
280
+ policy: freezeDeep({
281
+ ...policy,
282
+ grants,
283
+ index: indexPolicy(policy.roles, grants, policy.vocabulary),
284
+ fingerprint: sha256Digest(`${policy.fingerprint}:${document.fingerprint}`)
285
+ }),
286
+ dropped
287
+ };
288
+ }
289
+ function hostedPolicies(source) {
290
+ return Object.freeze({
291
+ feature: "hosted-policies",
292
+ apply(policy) {
293
+ if (policy.hostable.length === 0) return {
294
+ policy,
295
+ errors: []
296
+ };
297
+ let document;
298
+ try {
299
+ document = source.current();
300
+ } catch (error) {
301
+ return {
302
+ policy,
303
+ errors: [error]
304
+ };
305
+ }
306
+ const merged = mergeHostedGrants(policy, document);
307
+ return {
308
+ policy: merged.policy,
309
+ errors: merged.dropped
310
+ };
311
+ }
312
+ });
313
+ }
314
+ //#endregion
315
+ export { mergeHostedGrants as a, memoryPolicySource as i, hostedPolicies as n, parsePolicyDocument as o, isPortableCondition as r, policyDocumentFromClaims as s, hostedGrantDrops as t };