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,5 +1,12 @@
1
- import { n as RoleThrough } from "./types-CqrjB9o6.js";
2
- import { o as SqlMembershipSource } from "./sources-Dljy06zL.js";
1
+ import { n as RoleThrough } from "./types-BzzaHxt3.js";
2
+ import { o as SqlMembershipSource } from "./sources-Xc4zkszI.js";
3
+ //#region src/cli/core/errors.d.ts
4
+ /**
5
+ * 0 success, 1 failure, 2 usage, 3 action required, 130 interrupted (SIGINT
6
+ * or a cancelled prompt), 143 terminated (SIGTERM).
7
+ */
8
+ type ExitCode = 0 | 1 | 2 | 3 | 130 | 143;
9
+ //#endregion
3
10
  //#region src/cli/types.d.ts
4
11
  type CollectConfig = {
5
12
  readonly srcPath?: readonly string[];
@@ -88,7 +95,7 @@ type RlsConfig = {
88
95
  readonly dialect?: RlsDialect;
89
96
  readonly memberships?: RlsMemberships;
90
97
  /**
91
- * `database` mode: the `fromTable` / `fromJunction` sources the helpers
98
+ * `database` mode: the `tableMembershipSource` / `junctionMembershipSource` sources the helpers
92
99
  * read for every scope `memberships` maps no table for. Default
93
100
  * `supabase.hook.memberships`, so the helpers and the token hook run the
94
101
  * same SQL. Setting it selects `database` mode.
@@ -117,6 +124,13 @@ type RlsConfig = {
117
124
  /** Postgres type of each named scope's id column; overrides `tenantType` / `teamType`. */
118
125
  readonly scopeTypes?: Readonly<Record<string, string>>;
119
126
  readonly roleClaim?: string;
127
+ /**
128
+ * Role values the existing SQL compares against (a string literal or an
129
+ * enum label) and the PermDock role each one is. `rls import` writes the
130
+ * PermDock name for a mapped value; `rls migrate` filters a `role` helper by
131
+ * it. An unmapped value must already be a declared role.
132
+ */
133
+ readonly roleValues?: Readonly<Record<string, string>>;
120
134
  readonly gucPrefix?: string;
121
135
  readonly out?: string;
122
136
  /** `--target drizzle`: where each policy's `.link()` finds its table. */
@@ -218,7 +232,8 @@ type RlsConfig = {
218
232
  * Add the approval store `supabaseApprovalStore` reads and writes: the
219
233
  * `approval_requests` table and one function per `ApprovalStore` method, in
220
234
  * the helper schema, executable by no client role. Off by default. An
221
- * object adopts a table the app already has instead.
235
+ * object with `table` adopts a table the app already has instead, and
236
+ * `delegations: true` adds the out-of-office covers.
222
237
  */
223
238
  readonly approvals?: boolean | RlsApprovalsAdopt;
224
239
  /**
@@ -301,8 +316,15 @@ type RlsConfig = {
301
316
  * fields into the app's own columns on each write, converted to their types.
302
317
  */
303
318
  type RlsApprovalsAdopt = {
304
- /** `table` or `schema.table`. */
305
- readonly table: string;
319
+ /** `table` or `schema.table`. Without it the store is the generated `approval_requests`. */
320
+ readonly table?: string;
321
+ /**
322
+ * Add `approval_delegations`, the out-of-office covers a user writes for
323
+ * themselves, and the four-argument `permdock_is_approver` that answers for
324
+ * a delegate inside an active cover. `tableApprovalDelegationSource` reads
325
+ * the same rows for `approvalsHandler`. Off by default.
326
+ */
327
+ readonly delegations?: boolean;
306
328
  /** A text column unique per request. Default `token`. */
307
329
  readonly token?: string;
308
330
  /** A jsonb column holding the `ApprovalRequest`. Default `body`. */
@@ -359,6 +381,8 @@ type RlsCustomRoleTable = {
359
381
  readonly id?: string;
360
382
  /** A boolean column marking rows that are not custom roles (declared or system roles); those rows are skipped. */
361
383
  readonly skip?: string;
384
+ /** A boolean column marking a row with no tenant as a shared custom role, held at `scope` (default the first scope) in every tenant. Without it a row with no tenant is a platform role. */
385
+ readonly shared?: string;
362
386
  };
363
387
  /** `rls.customRoles` as an object: custom roles on, plus where existing ones live. */
364
388
  type RlsCustomRolesConfig = {
@@ -432,6 +456,9 @@ type RlsActions = Readonly<Record<string, "select" | "insert" | "update" | "dele
432
456
  type RlsMigrateHelper = {
433
457
  readonly form: "ids" | "row" | "membership";
434
458
  readonly scope: string;
459
+ } | {
460
+ readonly form: "role";
461
+ readonly scope: string;
435
462
  } | {
436
463
  readonly form: "scoped";
437
464
  } | {
@@ -500,7 +527,7 @@ type RlsStorage = {
500
527
  };
501
528
  /** `permdock supabase hook generate` input. */
502
529
  type SupabaseHookConfig = {
503
- /** The same `fromTable` / `fromJunction` sources the app passes as `memberships`. */
530
+ /** The same `tableMembershipSource` / `junctionMembershipSource` sources the app passes as `memberships`. */
504
531
  readonly memberships: readonly SqlMembershipSource[];
505
532
  /** Schema of the hook and the version table. Default `rls.schema`, else `permdock`. */
506
533
  readonly schema?: string;
@@ -565,8 +592,21 @@ type SupabaseHookConfig = {
565
592
  readonly suspension?: RlsSuspension;
566
593
  readonly out?: string;
567
594
  };
595
+ /**
596
+ * How the project turns SQL into Supabase migrations: `'pg-delta'`
597
+ * (Declarative Schemas 2.0, `supabase db schema declarative sync`),
598
+ * `'migra'` (declarative schemas on `supabase db diff`) or `'migrations'`
599
+ * (hand-written migrations, no declarative schemas).
600
+ */
601
+ type SupabaseSchemas = "pg-delta" | "migra" | "migrations";
568
602
  type SupabaseConfig = {
569
603
  readonly hook?: SupabaseHookConfig;
604
+ /**
605
+ * The schema workflow `rls generate --split`, `supabase hook generate` and
606
+ * doctor follow. Default: `'migra'` when `supabase/config.toml` sets
607
+ * `[experimental.pgdelta] enabled = false`, else `'pg-delta'`.
608
+ */
609
+ readonly schemas?: SupabaseSchemas;
570
610
  };
571
611
  type DoctorConfig = {
572
612
  /**
@@ -578,7 +618,7 @@ type DoctorConfig = {
578
618
  readonly srcPath?: readonly string[];
579
619
  readonly sensitiveActions?: readonly string[];
580
620
  readonly memberships?: string;
581
- /** A JSON fixture `{ credentials?, settings? }` of API-key credentials and per-tenant settings (the `memorySettings` input) for PD029. */
621
+ /** A JSON fixture `{ credentials?, settings? }` of API-key credentials and per-tenant settings (the `memorySettingsSource` input) for PD029. */
582
622
  readonly credentials?: string;
583
623
  /** Globs or directories whose files are client entries for PD001, for frameworks with no `'use client'` convention. */
584
624
  readonly clientEntries?: readonly string[];
@@ -590,6 +630,8 @@ type DoctorConfig = {
590
630
  type PermDockConfig = {
591
631
  readonly permissions?: string;
592
632
  readonly policy?: string;
633
+ /** A module exporting the `defineOperations` map as `operations` or default; `collect` writes it to the catalog's `operations`. */
634
+ readonly operations?: string;
593
635
  readonly collect?: CollectConfig;
594
636
  readonly catalog?: CatalogConfig;
595
637
  readonly openapi?: {
@@ -608,7 +650,7 @@ type PowerSyncConfig = {
608
650
  readonly resources?: readonly string[];
609
651
  /** The action whose grants decide which rows sync; default `read`. */
610
652
  readonly action?: string;
611
- /** Where `generate` writes `localSnapshotManifest(policy)` as JSON for `localSnapshot` and `powersyncSource`; none by default. */
653
+ /** Where `generate` writes `localSnapshotManifest(policy)` as JSON for `localSnapshot` and `powerSyncSource`; none by default. */
612
654
  readonly manifest?: string;
613
655
  };
614
656
  type CliIo = {
@@ -617,13 +659,23 @@ type CliIo = {
617
659
  readonly now?: () => Date;
618
660
  readonly fetch?: typeof fetch;
619
661
  readonly env?: Readonly<Record<string, string | undefined>>;
620
- /** Styled human output; `--no-color` turns it off. Unset is plain. */
662
+ /** Styled stdout; `--no-color` turns it off. Unset is plain. */
621
663
  readonly color?: boolean;
664
+ /** Styled stderr, decided for that stream on its own. Unset is plain. */
665
+ readonly errColor?: boolean;
622
666
  /** A person at a terminal: commands may prompt. Unset never prompts. */
623
667
  readonly interactive?: boolean;
668
+ /** stdout is a terminal; agent detection reads it. Unset is a pipe. */
669
+ readonly stdoutIsTty?: boolean;
670
+ /** stderr is a terminal: progress draws a spinner. Unset prints lines. */
671
+ readonly stderrIsTty?: boolean;
672
+ /** Reads all of stdin, for `--*-stdin` secrets. Unset reads nothing. */
673
+ readonly readStdin?: () => Promise<string>;
674
+ /** Aborted on SIGINT or SIGTERM. */
675
+ readonly signal?: AbortSignal;
624
676
  };
625
677
  type RunResult = {
626
- readonly code: 0 | 1 | 2;
678
+ readonly code: ExitCode;
627
679
  readonly stdout: string;
628
680
  readonly stderr: string;
629
681
  };
@@ -0,0 +1,67 @@
1
+ import { a as durationOf } from "./time-DkWjdL98.js";
2
+ //#region src/approvals/errors.ts
3
+ var ApprovalError = class extends Error {
4
+ name = "ApprovalError";
5
+ code;
6
+ constructor(code, message) {
7
+ super(message);
8
+ this.code = code;
9
+ }
10
+ };
11
+ const CODES = /* @__PURE__ */ new Set([
12
+ "approval-not-found",
13
+ "approval-not-pending",
14
+ "approval-expired",
15
+ "approver-unauthenticated",
16
+ "approver-is-actor",
17
+ "approver-is-principal",
18
+ "approver-not-eligible",
19
+ "approver-repeated"
20
+ ]);
21
+ function isApprovalErrorCode(value) {
22
+ return typeof value === "string" && CODES.has(value);
23
+ }
24
+ /** Matches by `name` and `code`, so an error from another copy of the module still maps. */
25
+ function isApprovalError(value) {
26
+ if (!(value instanceof Error) || value.name !== "ApprovalError") return false;
27
+ const code = Reflect.get(value, "code");
28
+ return typeof code === "string" && CODES.has(code);
29
+ }
30
+ //#endregion
31
+ //#region src/approvals/types.ts
32
+ const APPROVAL_HEADER = "PermDock-Approval";
33
+ /** Seconds a request stays open when neither the store nor the call sets a `ttl`. */
34
+ const DEFAULT_APPROVAL_TTL = 3600;
35
+ /** The approvals a request needs in total: `approvers.quorum` (or 1), or the sum of its stages' quorums. */
36
+ function approvalQuorum(request) {
37
+ const stages = request.approvers?.stages;
38
+ if (stages !== void 0) return stages.reduce((sum, stage) => sum + (stage.quorum ?? 1), 0);
39
+ return request.approvers?.quorum ?? 1;
40
+ }
41
+ /**
42
+ * The instant from which `approvers.escalation.to` may approve, in epoch
43
+ * milliseconds, or `undefined` when the request has no escalation or its
44
+ * `after` does not parse (then nobody escalates: fail-closed).
45
+ */
46
+ function escalationOpenAt(request) {
47
+ const seconds = durationOf(request.approvers?.escalation?.after);
48
+ if (seconds === void 0) return;
49
+ return Date.parse(request.createdAt) + seconds * 1e3;
50
+ }
51
+ /** The instant from which a stage's own `escalation.to` may approve it, in epoch milliseconds; `undefined` when it has none or `after` does not parse. */
52
+ function stageEscalationOpenAt(request, stage) {
53
+ const seconds = durationOf(stage.escalation?.after);
54
+ if (seconds === void 0) return;
55
+ return Date.parse(request.createdAt) + seconds * 1e3;
56
+ }
57
+ /** The key a verdict's `relations` lists a relation approver under. */
58
+ function approverRelationKey(item) {
59
+ return JSON.stringify([
60
+ item.resource,
61
+ item.relation,
62
+ item.through ?? null,
63
+ item.depth ?? null
64
+ ]);
65
+ }
66
+ //#endregion
67
+ export { escalationOpenAt as a, isApprovalError as c, approverRelationKey as i, isApprovalErrorCode as l, DEFAULT_APPROVAL_TTL as n, stageEscalationOpenAt as o, approvalQuorum as r, ApprovalError as s, APPROVAL_HEADER as t };
@@ -1,4 +1,5 @@
1
- import { S as ResourceRelation } from "./permission-types-Dg39z9Kv.js";
1
+ import { I as ResourceRelation } from "./vocabulary-CN8H_9UF.js";
2
+ import { s as OperationMeta } from "./operations-X0VM7F3m.js";
2
3
  //#region src/catalog/types.d.ts
3
4
  type CatalogUsage = {
4
5
  readonly file: string;
@@ -35,7 +36,8 @@ type CatalogBreakGlass = {
35
36
  readonly overrides: readonly string[];
36
37
  readonly purpose?: readonly string[];
37
38
  readonly reason: boolean;
38
- readonly maxDuration?: string;
39
+ /** Seconds. */
40
+ readonly maxDuration?: number;
39
41
  readonly obligations: readonly string[];
40
42
  };
41
43
  type CatalogApproval = "human" | {
@@ -48,9 +50,11 @@ type CatalogApproval = "human" | {
48
50
  readonly distinct?: boolean;
49
51
  readonly staleOn?: "resource-change";
50
52
  readonly quorum?: number;
51
- readonly ttl?: string;
53
+ /** Seconds. */
54
+ readonly ttl?: number;
55
+ /** `after` is seconds from the request's creation. */
52
56
  readonly escalation?: {
53
- readonly after: string;
57
+ readonly after: number;
54
58
  readonly to: unknown;
55
59
  };
56
60
  };
@@ -58,6 +62,18 @@ type CatalogResource = {
58
62
  readonly id: string;
59
63
  readonly schema: unknown;
60
64
  readonly definedIn?: string;
65
+ /** `resource(…, { parent })`: the row field that holds the parent row's id. */
66
+ readonly parent?: {
67
+ readonly field: string;
68
+ readonly resource: string;
69
+ };
70
+ /** `resource(…, { links })`: to-one links `through` walks; absent when none. */
71
+ readonly links?: Readonly<Record<string, {
72
+ readonly field: string;
73
+ readonly resource: string;
74
+ }>>;
75
+ /** `'hide'` answers a denied check on a loaded row as if the row did not exist; absent for `'reveal'`. */
76
+ readonly disclosure?: "hide";
61
77
  readonly relations?: Readonly<Record<string, ResourceRelation>>;
62
78
  /** The row field an `approval: { staleOn: 'resource-change' }` binds to. */
63
79
  readonly version?: string;
@@ -88,7 +104,8 @@ type CatalogRole = {
88
104
  };
89
105
  /** A role activation as the catalog carries it. */
90
106
  type CatalogActivation = {
91
- readonly maxDuration?: string;
107
+ /** Seconds. */
108
+ readonly maxDuration?: number;
92
109
  readonly justification: "required" | "optional";
93
110
  readonly approval?: boolean;
94
111
  readonly assurance?: {
@@ -101,7 +118,8 @@ type CatalogActivation = {
101
118
  type CatalogSupportAccess = {
102
119
  readonly actorRequired: boolean;
103
120
  readonly group: string;
104
- readonly durations: readonly string[];
121
+ /** Seconds. */
122
+ readonly durations: readonly number[];
105
123
  };
106
124
  /** One declared scope, in declaration order. */
107
125
  type CatalogScope = {
@@ -109,10 +127,10 @@ type CatalogScope = {
109
127
  readonly key: string;
110
128
  readonly within?: string;
111
129
  };
112
- /** A grant's `validFrom` / `validUntil` window in Unix seconds. */
130
+ /** A grant's `validFrom` / `validUntil` window in RFC 3339. */
113
131
  type CatalogValidity = {
114
- readonly from?: number;
115
- readonly until?: number;
132
+ readonly from?: string;
133
+ readonly until?: string;
116
134
  };
117
135
  /**
118
136
  * One code grant as the catalog carries it: the normalised shape
@@ -143,7 +161,8 @@ type CatalogGrant = {
143
161
  readonly requires?: string | readonly string[];
144
162
  readonly limit?: {
145
163
  readonly count: number;
146
- readonly per: string;
164
+ /** Seconds. */
165
+ readonly per: number;
147
166
  readonly mode?: "hard" | "soft";
148
167
  };
149
168
  /** Present when the grant is a closure, reads the relation graph or is opaque; `where` and `check` are then omitted. */
@@ -171,6 +190,22 @@ type CatalogDocument = {
171
190
  readonly grants?: readonly CatalogGrant[];
172
191
  /** The policy's standing delegations, canonically ordered; present when the policy declares any. */
173
192
  readonly delegations?: readonly CatalogDelegation[];
193
+ /** The `defineOperations` map in definition order; present when the config names an `operations` module. */
194
+ readonly operations?: readonly CatalogOperation[];
195
+ /** The policy's coarse OAuth scopes, sorted by scope; present when the policy declares any. */
196
+ readonly oauthScopes?: readonly CatalogOAuthScope[];
197
+ };
198
+ /** One `definePolicy({ oauthScopes })` entry: the coarse scope an authorization server issues and the permission keys it covers, sorted by code point. */
199
+ type CatalogOAuthScope = {
200
+ readonly scope: string;
201
+ readonly permissions: readonly string[];
202
+ };
203
+ /** One `defineOperations` entry: its name, the permission keys it is bound to, and its meta. */
204
+ type CatalogOperation = {
205
+ readonly name: string;
206
+ readonly permission: string;
207
+ readonly results?: string;
208
+ readonly meta: OperationMeta;
174
209
  };
175
210
  /** One `definePolicy({ delegations })` entry: who hands over, to which actor, which permission keys, and when. */
176
211
  type CatalogDelegation = {
@@ -184,4 +219,4 @@ type CatalogDelegation = {
184
219
  readonly validity?: CatalogValidity;
185
220
  };
186
221
  //#endregion
187
- export { CatalogDocument as a, CatalogResource as c, CatalogSupportAccess as d, CatalogUsage as f, CatalogDelegation as i, CatalogRole as l, CatalogApproval as n, CatalogGrant as o, CatalogValidity as p, CatalogBreakGlass as r, CatalogPermission as s, CatalogActivation as t, CatalogScope as u };
222
+ export { CatalogDocument as a, CatalogOperation as c, CatalogRole as d, CatalogScope as f, CatalogValidity as h, CatalogDelegation as i, CatalogPermission as l, CatalogUsage as m, CatalogApproval as n, CatalogGrant as o, CatalogSupportAccess as p, CatalogBreakGlass as r, CatalogOAuthScope as s, CatalogActivation as t, CatalogResource as u };
@@ -1,5 +1,6 @@
1
- import { At as DeriveOptions, Dr as Membership, E as Policy, It as WhereResult, Mn as ArazzoSimulateInput, Mt as PermDockOptions, Or as Principal, Pt as SimulateOptions, ir as Decision, j as PolicyVocabulary, jn as ArazzoPlan, jt as PermDock, kr as Subject, kt as DecideOptions, lr as ExplainedDecision } from "./policy-types-sp9P1iIV.js";
2
- import { d as Permission, p as PermissionTree } from "./permission-types-Dg39z9Kv.js";
1
+ import { Nn as Decision, Rn as ExplainedDecision, T as Policy, ar as Subject, j as PolicyVocabulary, nr as Membership, rr as Principal } from "./policy-types-n0uRTsW8.js";
2
+ import { E as PermissionTree, w as Permission } from "./vocabulary-CN8H_9UF.js";
3
+ import { c as WhereResult, i as PermDockOptions, n as DeriveOptions, o as SimulateOptions, r as PermDock, t as DecideOptions } from "./permdock-SV8ZINYT.js";
3
4
  //#region src/pdp/types.d.ts
4
5
  type RemotePdpAuth = {
5
6
  readonly bearer: string | (() => string | Promise<string>);
@@ -25,7 +26,8 @@ type RemotePdpEndpoints = {
25
26
  readonly searchResource?: string;
26
27
  };
27
28
  type RemotePdpCache = {
28
- readonly ttl: number | `${number}s` | `${number}ms`;
29
+ /** Seconds, at most 30. */
30
+ readonly ttl: number;
29
31
  };
30
32
  type RemotePdpOptions = {
31
33
  readonly url: string;
@@ -84,9 +86,9 @@ type SpiceDbOptions = {
84
86
  readonly cache?: RemotePdpCache;
85
87
  readonly fetch?: typeof fetch;
86
88
  };
87
- type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<V>, "can" | "decide" | "assert" | "explain" | "filter" | "where" | "simulate" | "tenant" | "team" | "derive"> & {
89
+ type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<V>, "can" | "decide" | "decideEach" | "assert" | "explain" | "filter" | "where" | "simulate" | "tenant" | "team" | "derive"> & {
88
90
  /** `permdock.derive` with the same providers: the result asks the PDP too. */
89
- readonly derive: (options: DeriveOptions) => PdpPermDock<V> | Promise<PdpPermDock<V>>;
91
+ readonly derive: (options: DeriveOptions) => Promise<PdpPermDock<V>>;
90
92
  /**
91
93
  * For a delegated permission whose provider lists ids, an `in` over them
92
94
  * (AND the local condition when local grants exist); otherwise the local
@@ -95,6 +97,8 @@ type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<
95
97
  readonly where: (permission: Permission) => Promise<WhereResult>;
96
98
  readonly can: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<boolean>;
97
99
  readonly decide: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<Decision>;
100
+ /** `decide` for each row, in row order, asking the PDP per row. */
101
+ readonly decideEach: (permission: Permission, rows: readonly unknown[], options?: DecideOptions) => Promise<readonly Decision[]>;
98
102
  readonly assert: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<Extract<Decision, {
99
103
  readonly outcome: "granted";
100
104
  }>>;
@@ -103,7 +107,6 @@ type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<
103
107
  readonly filter: <T>(permission: Permission<string, T, "instance">, rows: readonly T[], options?: DecideOptions) => Promise<T[]>;
104
108
  readonly simulate: {
105
109
  (checks: readonly (readonly [Permission, unknown?])[], options?: SimulateOptions): Promise<readonly Decision[]>;
106
- (plan: ArazzoSimulateInput): ArazzoPlan;
107
110
  (preview: {
108
111
  readonly roles?: readonly (string | {
109
112
  readonly key: string;
@@ -1,4 +1,5 @@
1
- import { j as PolicyVocabulary, jt as PermDock, xn as DecisionEvent } from "./policy-types-sp9P1iIV.js";
1
+ import { Xt as DecisionEvent, j as PolicyVocabulary } from "./policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "./permdock-SV8ZINYT.js";
2
3
  //#region src/otel/types.d.ts
3
4
  declare const GENAI_SEMCONV_PIN = "1.37.0";
4
5
  declare const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
@@ -1,4 +1,4 @@
1
- import { a as PermDockPluginOptions } from "../types-7rJVLWe5.js";
1
+ import { a as PermDockPluginOptions } from "../types-Dfv0aTER.js";
2
2
  import { createUnplugin } from "unplugin";
3
3
  //#region src/unplugin/index.d.ts
4
4
  type CreateUnplugin = typeof createUnplugin<PermDockPluginOptions | undefined>;
@@ -1,5 +1,5 @@
1
- import { n as createCollectScheduler, r as report } from "../watch-zeucB7eF.js";
2
- import { t as peerHint } from "../peer-BOr_kJE1.js";
1
+ import { n as createCollectScheduler, r as report } from "../watch-vea54PRw.js";
2
+ import { r as peerHint } from "../peer-C8swJ2GH.js";
3
3
  import { createRequire } from "node:module";
4
4
  //#region src/unplugin/index.ts
5
5
  function loadCreateUnplugin() {
@@ -0,0 +1,32 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { a as failOnFlag } from "./flags-C3DktBDY.js";
3
+ //#region src/cli/commands/usage.ts
4
+ const usage = defineLeaf({
5
+ flags: {
6
+ ...failOnFlag,
7
+ ignore: {
8
+ type: "string",
9
+ repeatable: true,
10
+ description: "Permission keys or globs to skip",
11
+ valueHint: "glob"
12
+ },
13
+ "dynamic-as-used": {
14
+ type: "boolean",
15
+ description: "Count computed permission references as uses"
16
+ }
17
+ },
18
+ async run(ctx, { flags }) {
19
+ return (await import("./usage-CZpSQP6L.js")).runUsage({
20
+ cwd: ctx.cwd,
21
+ config: ctx.config,
22
+ ignore: flags.ignore,
23
+ strict: flags["fail-on"] === "warning",
24
+ json: ctx.json,
25
+ dynamicAsUsed: flags["dynamic-as-used"],
26
+ now: ctx.now,
27
+ io: ctx.io
28
+ });
29
+ }
30
+ });
31
+ //#endregion
32
+ export { usage };
@@ -0,0 +1 @@
1
+ export { t as runUsage } from "./usage-SveTRTyr.js";
@@ -1,10 +1,13 @@
1
- import { a as getResource } from "./permission-registry-BsblpB-z.js";
2
- import { o as usageResult } from "./errors-CWfoNg9N.js";
1
+ import { a as getResource } from "./permission-registry-Br4jSNVi.js";
2
+ import { u as usageResult } from "./errors-CWTY6uih.js";
3
3
  import { a as rel, r as listSourceFiles } from "./files-D_JIzUrP.js";
4
- import { a as USAGE_REPORT_SCHEMA } from "./version-BEogC-rB.js";
5
- import { o as jsonSchemaOf } from "./catalog-doc-DWtg0gGR.js";
6
- import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-C3_oTHyO.js";
7
- import { r as runCollect } from "./collect-2SrB7lfk.js";
4
+ import { o as USAGE_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
5
+ import { s as jsonSchemaOf } from "./catalog-doc-Cdn7-0pQ.js";
6
+ import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-DFS_ry0W.js";
7
+ import { r as runCollect } from "./collect-mLTY4nwb.js";
8
+ import { t as beforeFirst } from "./text-BMFRfBqc.js";
9
+ import { t as DOCS_BASE } from "./manifest-dvL2XEe1.js";
10
+ import { r as findingOf } from "./output-1im__-08.js";
8
11
  import { existsSync, readFileSync, realpathSync } from "node:fs";
9
12
  import { dirname, resolve } from "node:path";
10
13
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -15,20 +18,26 @@ import { isBuiltin } from "node:module";
15
18
  /** Entries a client file must not import; `tests/cli/doctor-entries.test.ts` keeps it in step with `exports`. */
16
19
  const SERVER_SPECIFIERS = [
17
20
  "permdock/a2a",
21
+ "permdock/agent",
18
22
  "permdock/ai-sdk",
19
23
  "permdock/approvals",
24
+ "permdock/astro",
20
25
  "permdock/authzen",
21
26
  "permdock/better-auth",
22
27
  "permdock/better-supabase",
28
+ "permdock/chat",
29
+ "permdock/chat-sdk",
23
30
  "permdock/claude-agent",
24
31
  "permdock/clerk",
25
32
  "permdock/cloud",
26
33
  "permdock/convex",
34
+ "permdock/delivery",
27
35
  "permdock/drizzle",
28
36
  "permdock/elysia",
29
37
  "permdock/eve",
30
38
  "permdock/express",
31
39
  "permdock/fastify",
40
+ "permdock/h3",
32
41
  "permdock/hono",
33
42
  "permdock/jwt",
34
43
  "permdock/kysely",
@@ -42,24 +51,35 @@ const SERVER_SPECIFIERS = [
42
51
  "permdock/otel",
43
52
  "permdock/pdp",
44
53
  "permdock/prisma",
54
+ "permdock/resend",
45
55
  "permdock/scim",
46
56
  "permdock/server",
57
+ "permdock/solid-start",
47
58
  "permdock/ssf",
48
59
  "permdock/supabase",
49
60
  "permdock/supabase/middleware",
61
+ "permdock/sveltekit",
62
+ "permdock/tanstack-start",
50
63
  "permdock/terminal",
51
- "permdock/trpc"
64
+ "permdock/trpc",
65
+ "permdock/workflow",
66
+ "permdock/workflow-sdk"
52
67
  ];
53
68
  /** Entries that feed request, tool or model data into a check. */
54
69
  const ADAPTER_SPECIFIERS = [
55
70
  "permdock/a2a",
71
+ "permdock/agent",
56
72
  "permdock/ai-sdk",
73
+ "permdock/astro",
57
74
  "permdock/authzen",
75
+ "permdock/chat",
76
+ "permdock/chat-sdk",
58
77
  "permdock/claude-agent",
59
78
  "permdock/elysia",
60
79
  "permdock/eve",
61
80
  "permdock/express",
62
81
  "permdock/fastify",
82
+ "permdock/h3",
63
83
  "permdock/hono",
64
84
  "permdock/mcp",
65
85
  "permdock/nest",
@@ -68,7 +88,10 @@ const ADAPTER_SPECIFIERS = [
68
88
  "permdock/openai",
69
89
  "permdock/orpc",
70
90
  "permdock/server",
91
+ "permdock/solid-start",
71
92
  "permdock/supabase/middleware",
93
+ "permdock/sveltekit",
94
+ "permdock/tanstack-start",
72
95
  "permdock/terminal",
73
96
  "permdock/trpc",
74
97
  "permdock/webmcp"
@@ -241,6 +264,12 @@ function stringValue(node) {
241
264
  if (value?.type === "Literal") return typeof value.value === "string" ? value.value : void 0;
242
265
  return value?.type === "TemplateLiteral" ? value.quasis[0]?.value.cooked ?? void 0 : void 0;
243
266
  }
267
+ /** Their `jwks` holds Standard Webhooks `v1a` keys, not a token issuer's. */
268
+ const WEBHOOK_VERIFIERS = /* @__PURE__ */ new Set([
269
+ "cloudApprovalWaiter",
270
+ "verifyWebhook",
271
+ "webhookVerifier"
272
+ ]);
244
273
  function isPermDockSpecifier(value) {
245
274
  return value === "permdock" || value.startsWith("permdock/");
246
275
  }
@@ -254,7 +283,8 @@ function permdockOptionObjects(source) {
254
283
  ImportDeclaration(node) {
255
284
  if (node.importKind === "type" || !isPermDockSpecifier(node.source.value)) return;
256
285
  for (const specifier of node.specifiers) if (specifier.type === "ImportNamespaceSpecifier") namespaces.add(specifier.local.name);
257
- else if (specifier.type === "ImportDefaultSpecifier" || specifier.importKind !== "type") functions.add(specifier.local.name);
286
+ else if (specifier.type === "ImportDefaultSpecifier") functions.add(specifier.local.name);
287
+ else if (specifier.importKind !== "type" && !WEBHOOK_VERIFIERS.has(specifier.imported.type === "Identifier" ? specifier.imported.name : specifier.imported.value)) functions.add(specifier.local.name);
258
288
  },
259
289
  VariableDeclarator(node) {
260
290
  const init = unwrapped(node.init);
@@ -373,7 +403,7 @@ function pd038(sources, tenantClaim, fallback) {
373
403
  code: "PD038",
374
404
  severity: "warning",
375
405
  message: `${source.file}:${line} reads the tenant from '${read}', but rls.tenantClaim is '${tenantClaim}'`,
376
- fix: `pass tenant: '${tenantClaim}' or set rls.tenantClaim to '${read}'`
406
+ fix: `pass claims: { tenant: '${tenantClaim}' } or set rls.tenantClaim to '${read}'`
377
407
  });
378
408
  }
379
409
  return findings;
@@ -534,7 +564,20 @@ async function runUsage(input) {
534
564
  };
535
565
  return {
536
566
  code: report.errors > 0 || input.strict && report.warnings > 0 ? 1 : 0,
537
- output: input.json ? `${JSON.stringify(report, null, 2)}\n` : formatUsage(report)
567
+ output: input.json ? `${JSON.stringify(report, null, 2)}\n` : formatUsage(report),
568
+ findings: [
569
+ ...unused,
570
+ ...ungranted,
571
+ ...noRole,
572
+ ...dynamic,
573
+ ...undeclared,
574
+ ...outsideInclude
575
+ ].map((item) => findingOf({
576
+ code: item.kind,
577
+ severity: item.kind === "no-role" ? "error" : "warning",
578
+ message: `${item.key === "*" ? "" : `${item.key}: `}${item.detail}`,
579
+ docs: `${DOCS_BASE}/usage`
580
+ }))
538
581
  };
539
582
  }
540
583
  async function usagePolicy(cwd, policyRel, loaded) {
@@ -587,7 +630,7 @@ function declaredFields(policy, resource) {
587
630
  function conditionFields(condition, out) {
588
631
  if (condition === void 0) return;
589
632
  const add = (field) => {
590
- out.add(field.split(".")[0] ?? field);
633
+ out.add(beforeFirst(field, "."));
591
634
  };
592
635
  switch (condition.op) {
593
636
  case "eq":
@@ -1,4 +1,4 @@
1
- import { a as ProblemDetails } from "./errors-OD_4c__H.js";
1
+ import { a as ProblemDetails } from "./errors-DH5QEGXh.js";
2
2
  import { StandardSchemaV1 } from "@standard-schema/spec";
3
3
  //#region src/core/validation-error.d.ts
4
4
  /** The base of every Problem Details `type` URI; defined here so a validation error does not pull in the Problem Details builders. */