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,22 +1,23 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { i as configError } from "./errors-CWTY6uih.js";
2
3
  import { i as readJsonFile } from "./files-D_JIzUrP.js";
3
- import { a as loadModule, s as pickNamed } from "./load-C3_oTHyO.js";
4
+ import { a as loadModule, s as pickNamed } from "./load-DFS_ry0W.js";
4
5
  import { existsSync } from "node:fs";
5
6
  import { resolve } from "node:path";
6
7
  //#region src/cli/fixtures.ts
7
8
  function asFixtures(value) {
8
9
  const list = Array.isArray(value) ? value : isRecord(value) && Array.isArray(value["fixtures"]) ? value["fixtures"] : void 0;
9
- if (list === void 0) throw new Error("PermDock CLI: fixtures must be an array or { fixtures }");
10
+ if (list === void 0) throw configError("PermDock CLI: fixtures must be an array or { fixtures }");
10
11
  return list.map((item, index) => {
11
- if (!isRecord(item) || !isRecord(item["subject"]) || item["row"] === void 0) throw new Error(`PermDock CLI: fixture ${index} needs subject and row`);
12
+ if (!isRecord(item) || !isRecord(item["subject"]) || item["row"] === void 0) throw configError(`PermDock CLI: fixture ${index} needs subject and row`);
12
13
  if (typeof item["action"] !== "string") throw new TypeError(`PermDock CLI: fixture ${index} needs action`);
13
14
  if (typeof item["subject"]["id"] !== "string") throw new TypeError(`PermDock CLI: fixture ${index} subject needs id`);
14
15
  const memberships = item["subject"]["memberships"];
15
- if (memberships !== void 0 && !Array.isArray(memberships)) throw new Error(`PermDock CLI: fixture ${index} subject.memberships must be an array`);
16
+ if (memberships !== void 0 && !Array.isArray(memberships)) throw configError(`PermDock CLI: fixture ${index} subject.memberships must be an array`);
16
17
  const tenant = item["subject"]["tenant"];
17
- if (tenant !== void 0 && typeof tenant !== "string") throw new Error(`PermDock CLI: fixture ${index} subject.tenant must be a string`);
18
+ if (tenant !== void 0 && typeof tenant !== "string") throw configError(`PermDock CLI: fixture ${index} subject.tenant must be a string`);
18
19
  const claims = item["subject"]["claims"];
19
- if (claims !== void 0 && !isRecord(claims)) throw new Error(`PermDock CLI: fixture ${index} subject.claims must be an object`);
20
+ if (claims !== void 0 && !isRecord(claims)) throw configError(`PermDock CLI: fixture ${index} subject.claims must be an object`);
20
21
  return item;
21
22
  });
22
23
  }
@@ -28,7 +29,7 @@ function asCustomRoles(value) {
28
29
  /** A `.json` file or a module exporting `fixtures` (or default) and optionally `customRoles`. */
29
30
  async function loadFixtures(cwd, path) {
30
31
  const abs = resolve(cwd, path);
31
- if (!existsSync(abs)) throw new Error(`PermDock CLI: fixtures not found: ${path}`);
32
+ if (!existsSync(abs)) throw configError(`PermDock CLI: fixtures not found: ${path}`);
32
33
  if (abs.endsWith(".json")) {
33
34
  const parsed = readJsonFile(abs);
34
35
  return {
@@ -0,0 +1,86 @@
1
+ import { n as CliError } from "./errors-CWTY6uih.js";
2
+ import { n as secretInput } from "./credentials-DPyHmYz5.js";
3
+ //#region src/cli/core/flags.ts
4
+ /** The flag vocabulary shared with better-supabase: one spelling per meaning. */
5
+ const dbUrlFlags = { "db-url-stdin": {
6
+ type: "boolean",
7
+ description: "Read the Postgres connection string from stdin (default $DATABASE_URL, then $SUPABASE_DB_URL)"
8
+ } };
9
+ const outFlag = { out: {
10
+ type: "string",
11
+ description: "File to write",
12
+ valueHint: "file"
13
+ } };
14
+ const checkFlag = { check: {
15
+ type: "boolean",
16
+ description: "Exit 1 when a file on disk is stale; write nothing"
17
+ } };
18
+ const dryRunFlag = { "dry-run": {
19
+ type: "boolean",
20
+ description: "Print what would change; write nothing"
21
+ } };
22
+ const forceFlag = { force: {
23
+ type: "boolean",
24
+ description: "Overwrite files PermDock did not write or that changed by hand"
25
+ } };
26
+ const policyFlag = { policy: {
27
+ type: "string",
28
+ description: "Module exporting the policy (default policy in the config)",
29
+ valueHint: "module"
30
+ } };
31
+ const permissionsFlag = { permissions: {
32
+ type: "string",
33
+ description: "Module exporting the permissions (default permissions in the config)",
34
+ valueHint: "module"
35
+ } };
36
+ const failOnFlag = { "fail-on": {
37
+ type: "enum",
38
+ options: ["error", "warning"],
39
+ default: "error",
40
+ description: "Lowest finding severity that exits 1"
41
+ } };
42
+ const validatorFlag = { validator: {
43
+ type: "enum",
44
+ options: [
45
+ "zod",
46
+ "valibot",
47
+ "arktype"
48
+ ],
49
+ description: "Schema library for the generated resources (default zod)"
50
+ } };
51
+ /**
52
+ * The connection string from `--db-url-stdin`, or, when the leaf needs one,
53
+ * `DATABASE_URL` then `SUPABASE_DB_URL`: the order better-supabase reads them.
54
+ */
55
+ async function dbUrl(ctx, flags, options) {
56
+ const piped = await secretInput(ctx, {
57
+ flag: "db-url",
58
+ stdin: flags["db-url-stdin"]
59
+ });
60
+ if (piped !== void 0 || options?.required !== true) return piped;
61
+ for (const name of DB_URL_ENV) {
62
+ const value = ctx.env[name];
63
+ if (value !== void 0 && value !== "") {
64
+ ctx.addSecret(value);
65
+ return value;
66
+ }
67
+ }
68
+ }
69
+ const DB_URL_ENV = ["DATABASE_URL", "SUPABASE_DB_URL"];
70
+ /** A string flag given with a value; a bare flag reads as `""`. */
71
+ function given(value) {
72
+ return value === void 0 || value === "" ? void 0 : value;
73
+ }
74
+ /**
75
+ * `--out` for a command that only writes a file: `-` is refused instead of
76
+ * creating a file named `-`.
77
+ */
78
+ function fileOut(command, value) {
79
+ if (value === "-") throw new CliError("usage", `${command}: --out - is not supported; name a file.`, {
80
+ code: "invalid_value",
81
+ extensions: { flag: "--out" }
82
+ });
83
+ return given(value);
84
+ }
85
+ //#endregion
86
+ export { failOnFlag as a, given as c, policyFlag as d, validatorFlag as f, dryRunFlag as i, outFlag as l, dbUrl as n, fileOut as o, dbUrlFlags as r, forceFlag as s, checkFlag as t, permissionsFlag as u };
@@ -1,17 +1,20 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-drnfxYtm.js";
4
- import { n as sameId } from "./ids-DC4V4CFu.js";
5
- import { a as normalizeMemberships, d as scopeList, m as tenantOf, o as resolveScope, t as activeFor } from "./scopes-tvpa34ep.js";
6
- import { _ as evaluateCondition, a as whereFromGrants, f as rowIdOf, g as simulateArazzo, h as isArazzoSimulateInput, i as signSnapshot, p as rowValues, s as coveredByDelegation } from "./snapshot-Dc9CHPME.js";
7
- import { c as listPermissions } from "./permission-registry-BsblpB-z.js";
8
- import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-CXY-0C87.js";
9
- import { i as pickVisible, r as grantCoversField, t as isActive } from "./validity-dVrUEPJt.js";
10
- import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-DshjqY0n.js";
3
+ import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-BKy0EfhN.js";
4
+ import { o as sameId } from "./expiry-D4_YKRKD.js";
5
+ import { c as listPermissions } from "./permission-registry-Br4jSNVi.js";
6
+ import { g as secondsOf, o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
7
+ import { a as normalizeMemberships, d as scopeList, m as tenantOf, o as resolveScope, t as activeFor } from "./scopes-CUPSjo9q.js";
8
+ import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-j6-rc37o.js";
9
+ import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-hxrUsbpM.js";
10
+ import { a as grantCoversField, o as pickVisible, r as readWireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
11
+ import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-DN2QAx9z.js";
11
12
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
12
- import { n as matchGrantee } from "./grantee-match-fxYp9Nmt.js";
13
+ import { r as tokenPayload, t as decisionToken } from "./token-BLZcjQgt.js";
14
+ import { t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
15
+ import { n as matchGrantee } from "./grantee-match-DbENBHLB.js";
13
16
  import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
14
- import { n as payloadDigest, t as decisionToken } from "./token-Bx9qy30p.js";
17
+ import { a as deniedFor, n as mayUse, o as signSnapshot, r as permittedIds, t as whereFromGrants } from "./where-scope-C9vfEphl.js";
15
18
  //#region src/core/snapshot-evaluate.ts
16
19
  function coveredByInclude(snapshot, permission) {
17
20
  const include = snapshot.include;
@@ -81,6 +84,8 @@ function conditionOk(grant, permission, current, next, subject, now, scopes) {
81
84
  matched: false,
82
85
  reason: "opaque-condition"
83
86
  };
87
+ const deny = grant.effect === "deny";
88
+ let whereMatched;
84
89
  if (grant.where !== void 0) {
85
90
  if (permission.kind === "collection" || current === void 0) return {
86
91
  matched: false,
@@ -90,17 +95,22 @@ function conditionOk(grant, permission, current, next, subject, now, scopes) {
90
95
  matched: false,
91
96
  reason: "opaque-condition"
92
97
  };
93
- const matched = evaluateCondition(grant.where, current, subject, now, scopes, void 0, onOpaque);
98
+ whereMatched = evaluateCondition(grant.where, current, subject, now, scopes, void 0, onOpaque);
94
99
  if (opaqueReached) return {
95
100
  matched: false,
96
101
  reason: "opaque-condition"
97
102
  };
98
- if (!matched) return {
103
+ if (whereMatched && deny) return { matched: true };
104
+ if (!whereMatched && !deny) return {
99
105
  matched: false,
100
106
  reason: "condition"
101
107
  };
102
108
  }
103
- const check = grant.check;
109
+ const check = grant.check ?? (permission.action === "update" ? grant.where : void 0);
110
+ if (check === void 0 && whereMatched === false) return {
111
+ matched: false,
112
+ reason: "condition"
113
+ };
104
114
  if (check !== void 0) {
105
115
  if (check.op === "opaque") return {
106
116
  matched: false,
@@ -135,7 +145,7 @@ function matchedOf(grant) {
135
145
  });
136
146
  }
137
147
  function evaluateSnapshot(snapshot, subject, permission, data, team, options, outcomeOnly = false) {
138
- let clock = options.now;
148
+ let clock = options.now === void 0 ? void 0 : epochSeconds(options.now);
139
149
  const now = () => clock ??= nowSeconds();
140
150
  const tracer = options.explain === true ? {
141
151
  evaluated: 0,
@@ -175,6 +185,15 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
175
185
  }],
176
186
  alternatives: []
177
187
  });
188
+ if (clock !== void 0 && !Number.isFinite(clock)) return done({
189
+ outcome: "denied",
190
+ denials: [{
191
+ role: null,
192
+ reason: "validation",
193
+ detail: INVALID_NOW
194
+ }],
195
+ alternatives: []
196
+ });
178
197
  const { current, next } = rowValues(permission, data);
179
198
  const scopes = scopeList(snapshot.scopes);
180
199
  const denials = [];
@@ -192,7 +211,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
192
211
  continue;
193
212
  }
194
213
  let scoped = scopeOk(snapshot, grant, permission, subject, permission.kind === "instance" ? current : next, team, now(), options.scope);
195
- if (scoped.ok && permission.kind === "instance" && next !== current) scoped = scopeOk(snapshot, grant, permission, subject, next, team, now(), options.scope);
214
+ if (scoped.ok !== (grant.effect === "deny") && permission.kind === "instance" && next !== current) scoped = scopeOk(snapshot, grant, permission, subject, next, team, now(), options.scope);
196
215
  if (!scoped.ok) {
197
216
  denials.push(compact({
198
217
  role: grant.role,
@@ -201,7 +220,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
201
220
  }));
202
221
  continue;
203
222
  }
204
- if (!isActive(grant.validity, now())) {
223
+ if (!isActive(readWireValidity(grant.validity, grant.effect), now())) {
205
224
  if (grant.effect === "allow") denials.push({
206
225
  role: grant.role,
207
226
  reason: "inactive-grant",
@@ -278,7 +297,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
278
297
  alternatives: []
279
298
  });
280
299
  }
281
- if (snapshot.delegated !== void 0 && !snapshot.delegated.includes(permission.key)) return done({
300
+ if (snapshot.delegated !== void 0 && !snapshot.delegated.includes(permission.key) || readOnlyActorRefuses(subject.actor, permission)) return done({
282
301
  outcome: "denied",
283
302
  denials: [{
284
303
  role: null,
@@ -301,8 +320,8 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
301
320
  resourceId,
302
321
  principal: subject.principal,
303
322
  actor: subject.actor,
304
- fingerprint: `snapshot:${String(snapshot.issuedAt)}`,
305
- payload: resourceId === "*" && (next ?? current) !== void 0 ? payloadDigest(next ?? current) : void 0
323
+ fingerprint: `snapshot:${snapshot.issuedAt}`,
324
+ payload: tokenPayload(resourceId, next ?? current, options.args)
306
325
  });
307
326
  const grant = matchedOf(matched);
308
327
  if (requiresApproval(matched.approval)) return done({
@@ -344,9 +363,9 @@ function subjectFromSnapshot(snapshot, tenant) {
344
363
  ...principal,
345
364
  tenant: nextTenant
346
365
  }),
347
- delegation: snapshot.subject.delegation,
366
+ delegation: fromWireDelegation(snapshot.subject.delegation),
348
367
  context: snapshot.subject.context,
349
- expiresAt: snapshot.expiresAt
368
+ expiresAt: secondsOf(snapshot.expiresAt)
350
369
  }));
351
370
  }
352
371
  /**
@@ -415,12 +434,18 @@ function fromSnapshot(snapshot, options = {}) {
415
434
  });
416
435
  const explain = ((permission, data, decideOptions) => run(permission, data, {
417
436
  ...decideOptions,
418
- source: decideOptions?.source ?? "explain",
437
+ call: decideOptions?.call ?? "explain",
419
438
  explain: true
420
439
  }));
421
440
  const instance = {
422
441
  can,
423
442
  decide,
443
+ decideEach(permission, rows, decideOptions) {
444
+ return Object.freeze(rows.map((row) => run(permission, row, decideOptions)));
445
+ },
446
+ decideFor(_principalId, permission) {
447
+ return Promise.resolve(deniedFor(permission, "unsupported"));
448
+ },
424
449
  assert,
425
450
  explain,
426
451
  permissions: {},
@@ -448,7 +473,6 @@ function fromSnapshot(snapshot, options = {}) {
448
473
  },
449
474
  simulate: ((input, simulateOptions) => {
450
475
  if (Array.isArray(input)) return input.map(([permission, data]) => run(permission, data, compact({ now: simulateOptions?.now })));
451
- if (isArazzoSimulateInput(input)) return simulateArazzo(input, input.permissions, (permission, data) => run(permission, data));
452
476
  const preview = input;
453
477
  const previewRoles = preview.roles?.map((item) => typeof item === "string" ? item : item.key);
454
478
  return fromSnapshot(freezeDeep({
@@ -465,7 +489,7 @@ function fromSnapshot(snapshot, options = {}) {
465
489
  }
466
490
  }), options);
467
491
  }),
468
- snapshot: ((signing) => signing?.signer === void 0 ? snapshot : signSnapshot(snapshot, signing.signer, signing.audience)),
492
+ snapshot: ((signing) => signing?.signer === void 0 ? snapshot : signSnapshot(snapshot, signing.signer, compact({ audience: signing.audience }))),
469
493
  on() {
470
494
  return () => void 0;
471
495
  },
@@ -507,38 +531,17 @@ function fromSnapshot(snapshot, options = {}) {
507
531
  }
508
532
  return out;
509
533
  },
510
- loadRelations() {
534
+ prefetchRelations() {
511
535
  return Promise.resolve();
512
536
  },
513
- whoCan(permission) {
514
- return Promise.resolve(freezeDeep({
515
- permission: permission.key,
516
- holders: [],
517
- complete: false
518
- }));
537
+ mayUse(permission) {
538
+ return mayUse(instance, permission);
519
539
  },
520
- decideRoleChange(change) {
521
- return freezeDeep({
522
- outcome: "denied",
523
- change,
524
- denials: [{
525
- role: null,
526
- reason: "unsupported"
527
- }]
528
- });
540
+ permittedIds(permission, scope, query) {
541
+ return permittedIds(instance, permission, scope, query);
529
542
  },
530
543
  derive() {
531
- return instance;
532
- },
533
- activate() {
534
- return freezeDeep({
535
- outcome: "denied",
536
- denials: [{
537
- role: null,
538
- reason: "unsupported"
539
- }],
540
- alternatives: []
541
- });
544
+ return Promise.resolve(instance);
542
545
  },
543
546
  assignableRoles(query) {
544
547
  if (query?.scope === "global") return [];
@@ -566,7 +569,7 @@ function fromSnapshot(snapshot, options = {}) {
566
569
  function emptySnapshot() {
567
570
  return freezeDeep({
568
571
  v: 1,
569
- issuedAt: 0,
572
+ issuedAt: "1970-01-01T00:00:00.000Z",
570
573
  subject: {
571
574
  principal: null,
572
575
  context: {}
@@ -1,6 +1,7 @@
1
1
  import { a as sole, t as compact } from "./compact-CAf557ZB.js";
2
- import { c as rootScope, d as scopeList, o as resolveScope } from "./scopes-tvpa34ep.js";
3
- import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, m as restrictedStops, p as restrictedFor, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D1Un3pcz.js";
2
+ import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, m as restrictedStops, p as restrictedFor, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
3
+ import { d as isoNow } from "./time-DkWjdL98.js";
4
+ import { c as rootScope, d as scopeList, o as resolveScope } from "./scopes-CUPSjo9q.js";
4
5
  //#region src/core/grantee-conditions.ts
5
6
  /**
6
7
  * Where a graph relation starts on the row: its own id when the relation is
@@ -196,7 +197,7 @@ function relationCondition(grantee, resource, scopes = scopeList(void 0), option
196
197
  field: spec.principal,
197
198
  value: { ref: "principal.id" }
198
199
  };
199
- const period = periodConditions(spec, options.now ?? { date: (/* @__PURE__ */ new Date()).toISOString() });
200
+ const period = periodConditions(spec, options.now ?? { date: isoNow() });
200
201
  return period.length === 0 ? owner : {
201
202
  op: "and",
202
203
  conditions: [owner, ...period]
@@ -1,8 +1,8 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep, t as freezeCopy } from "./freeze-CrU8nQeX.js";
3
- import { a as assertSafeKey, c as ownKeys, o as isForbiddenKey } from "./thenable-QSmvt-vZ.js";
4
- import { i as readAppData, r as parseAppData, t as assertAppData } from "./app-data-CV8pqqMi.js";
5
- import { c as listPermissions, o as isPermission } from "./permission-registry-BsblpB-z.js";
3
+ import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-DXSHAMIa.js";
4
+ import { c as listPermissions, o as isPermission } from "./permission-registry-Br4jSNVi.js";
5
+ import { i as readAppData, r as parseAppData, t as assertAppData } from "./app-data-MuyzVqX8.js";
6
6
  //#region src/core/vocabulary.ts
7
7
  const ROLE_KIND = "role";
8
8
  const PLAN_KIND = "plan";
@@ -133,11 +133,10 @@ function synthesiseRole(key, options) {
133
133
  const on = options?.on;
134
134
  const assignable = options?.assignable ?? false;
135
135
  const meta = options?.meta;
136
- if (on === void 0) return makeRole(key, meta === void 0 ? { assignable } : {
136
+ const leaf = on === void 0 ? makeRole(key, meta === void 0 ? { assignable } : {
137
137
  assignable,
138
138
  meta
139
- });
140
- return makeRole(key, meta === void 0 ? {
139
+ }) : makeRole(key, meta === void 0 ? {
141
140
  on,
142
141
  assignable
143
142
  } : {
@@ -145,6 +144,17 @@ function synthesiseRole(key, options) {
145
144
  assignable,
146
145
  meta
147
146
  });
147
+ if (options?.shared !== true) return leaf;
148
+ const shared = Object.defineProperty({
149
+ ...leaf,
150
+ shared: true
151
+ }, "kind", {
152
+ value: ROLE_KIND,
153
+ enumerable: false,
154
+ writable: false,
155
+ configurable: false
156
+ });
157
+ return Object.freeze(shared);
148
158
  }
149
159
  function isGrantee(value) {
150
160
  return value !== null && typeof value === "object" && "kind" in value && typeof value.kind === "string";
@@ -1,7 +1,8 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { d as scopeList, t as activeFor } from "./scopes-tvpa34ep.js";
3
- import { o as flattenGrantee } from "./grantee-CXY-0C87.js";
4
- import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-MQs5NIuX.js";
2
+ import { u as isoAt } from "./time-DkWjdL98.js";
3
+ import { d as scopeList, t as activeFor } from "./scopes-CUPSjo9q.js";
4
+ import { o as flattenGrantee } from "./grantee-hxrUsbpM.js";
5
+ import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-CcXf8hMM.js";
5
6
  //#region src/core/grantee-match.ts
6
7
  function combineWhere(left, right) {
7
8
  if (left === void 0) return right;
@@ -79,7 +80,7 @@ function matchOne(grantee, subject, now, resource, scopes, resources) {
79
80
  };
80
81
  const where = relationCondition(grantee, resource, scopes, {
81
82
  resources,
82
- now: { date: (/* @__PURE__ */ new Date(now * 1e3)).toISOString() }
83
+ now: { date: isoAt(now * 1e3) }
83
84
  });
84
85
  if (where === void 0 && resource !== void 0) return {
85
86
  matched: false,
@@ -0,0 +1,37 @@
1
+ import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
3
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
4
+ import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-Dw0MTS3D.js";
5
+ import { EventHandler, H3Event, H3EventContext, Middleware } from "h3";
6
+ //#region src/h3/create.d.ts
7
+ type H3PermDockOptions<TUser = unknown> = FetchAdapterOptions<H3Event, TUser>;
8
+ /** `event.context` once `middleware()` or `protect` ran: the instance and the loaded row. */
9
+ type H3PermDockContext<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = H3EventContext & {
10
+ readonly permdock: PermDock<V>;
11
+ readonly permdockData: TData;
12
+ };
13
+ /** The event `withPermDock` hands its handler. */
14
+ type H3PermDockEvent<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = H3Event & {
15
+ readonly context: H3PermDockContext<TData, V>;
16
+ };
17
+ type H3PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
18
+ /** Global or route middleware that sets `event.context.permdock`. */
19
+ readonly middleware: () => Middleware;
20
+ /** Route middleware: a refusal short-circuits with Problem Details. */
21
+ readonly protect: FetchProtect<H3Event, Middleware>;
22
+ readonly getPermDock: (event: H3Event) => Promise<PermDock<V>>;
23
+ readonly getSnapshot: (event: H3Event, query?: SnapshotQuery) => Promise<Snapshot>;
24
+ /**
25
+ * Types `event.context.permdock` and `permdockData` for the handler, builds
26
+ * the instance when no middleware set it, and answers a thrown PermDock
27
+ * error with Problem Details.
28
+ */
29
+ readonly withPermDock: <TData = unknown>(handler: (event: H3PermDockEvent<TData, V>) => unknown) => EventHandler;
30
+ readonly connection: (event: H3Event, connectionOptions?: ConnectionOptions) => Promise<Connection>;
31
+ /** The decision endpoint: `app.all('/api/permdock', permdockHandler())`. */
32
+ readonly permdockHandler: () => EventHandler;
33
+ readonly openapi: OpenApiHooks;
34
+ };
35
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: H3PermDockOptions<TUser>): H3PermDock<V>;
36
+ //#endregion
37
+ export { type ContextReader, type H3PermDock, type H3PermDockContext, type H3PermDockEvent, type H3PermDockOptions, InvalidSignatureError, type ProtectTarget, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,35 @@
1
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
2
+ import { i as decorate } from "../bind-CAvgUuKs.js";
3
+ import { t as fetchAdapter } from "../fetch-adapter-DD_gfmrC.js";
4
+ //#region src/h3/create.ts
5
+ function createPermDock(policy, options) {
6
+ const adapter = fetchAdapter(policy, options, "h3", (event) => event.req);
7
+ const middleware = () => async (event, next) => {
8
+ const attached = await adapter.ensure(event.context, event);
9
+ if (!attached.ok) return attached.response;
10
+ return adapter.mapErrors(event, next);
11
+ };
12
+ const protect = ((target, data, protectOptions) => async (event, next) => {
13
+ const guard = await adapter.guard(target, data, event, protectOptions);
14
+ if (!guard.ok) return guard.response;
15
+ decorate(event.context, guard.permdock, guard.data);
16
+ return adapter.mapErrors(event, next);
17
+ });
18
+ const withPermDock = (handler) => async (event) => {
19
+ const attached = await adapter.ensure(event.context, event);
20
+ if (!attached.ok) return attached.response;
21
+ return adapter.mapErrors(event, () => handler(event));
22
+ };
23
+ return {
24
+ middleware,
25
+ protect,
26
+ getPermDock: adapter.getPermDock,
27
+ getSnapshot: adapter.getSnapshot,
28
+ withPermDock,
29
+ connection: adapter.connection,
30
+ permdockHandler: () => adapter.handler(),
31
+ openapi: adapter.kernel.openapi
32
+ };
33
+ }
34
+ //#endregion
35
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,8 @@
1
+ import { t as approvalHeaderValue } from "./approval-header-CJACtHkv.js";
2
+ //#region src/client/headers.ts
3
+ /** The `PermDock-Approval` header for a resume; a `TypeError` for a token that is not an RFC 9651 sf-token. */
4
+ function approvalHeaders(token) {
5
+ return { "PermDock-Approval": approvalHeaderValue(token) };
6
+ }
7
+ //#endregion
8
+ export { approvalHeaders as t };
@@ -0,0 +1,7 @@
1
+ //#region src/client/headers.d.ts
2
+ /** The `PermDock-Approval` header for a resume; a `TypeError` for a token that is not an RFC 9651 sf-token. */
3
+ declare function approvalHeaders(token: string): {
4
+ readonly "PermDock-Approval": string;
5
+ };
6
+ //#endregion
7
+ export { approvalHeaders as t };