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
package/dist/mcp/index.js CHANGED
@@ -1,21 +1,21 @@
1
1
  import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
- import { i as stepUpOf } from "../problem-details-DECUnXAn.js";
4
- import { t as describe } from "../describe-Cgkp7eP0.js";
5
- import { m as annotationsFor } from "../permission-registry-BsblpB-z.js";
6
- import { a as scopesReaching, i as hasScope, r as challengeScope } from "../permdock-L26udHSk.js";
3
+ import { i as stepUpOf } from "../problem-details-cn5X30gZ.js";
4
+ import { t as describe } from "../describe-BybMRY7A.js";
5
+ import { m as annotationsFor } from "../permission-registry-Br4jSNVi.js";
6
+ import { t as actorMayCallTool } from "../delegation-j6-rc37o.js";
7
7
  import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
8
- import { t as anonymousSubject } from "../subject-C6dLxqHU.js";
9
- import { t as composeWraps } from "../wrap-DWsU_5Bd.js";
10
- import { t as mayUse } from "../may-use-BOn_dR_w.js";
11
- import { l as protectedResourceMetadataUrl, r as bearerChallenge } from "../problem-CnWraVhC.js";
8
+ import { a as hasScope, c as withApp, i as challengeScope, o as scopesReaching } from "../permdock-BrAscV28.js";
9
+ import { t as anonymousSubject } from "../subject-BGoM5o8B.js";
10
+ import { t as composeWraps } from "../wrap-gX61EtpB.js";
11
+ import { l as protectedResourceMetadataUrl, r as bearerChallenge } from "../problem-CTviyH5L.js";
12
12
  import { t as clientNameOf } from "../clients-DjU5ABMy.js";
13
- import { n as mapClaimsToSubject } from "../map-claims-AVlBaJoa.js";
14
- import { r as instanceOptions } from "../build-instance-DIIV9DbC.js";
15
- import { n as createAgentKernel, r as deniedText } from "../kernel-CB3LrIJM.js";
13
+ import { n as mapClaimsToSubject } from "../map-claims-D3oRmTk0.js";
14
+ import { r as instanceOptions } from "../build-instance-Bu_eDqYw.js";
15
+ import { n as createAgentKernel, r as refusalText } from "../kernel-D0NVb1cK.js";
16
16
  import { t as boundedMap } from "../lru-8q4WZjBV.js";
17
17
  import { t as delegationFrom } from "../delegation-input-FTxMK3ji.js";
18
- import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-CQ7OEia9.js";
18
+ import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-CMLN5xhn.js";
19
19
  //#region src/mcp/mcp-auth.ts
20
20
  /** `_meta` key on `tools/call`, `resources/read` and `prompts/get` carrying an approval token. */
21
21
  const APPROVAL_META_KEY = "dev.permdock/approval";
@@ -234,8 +234,11 @@ function credentialRefusal(checks, permission, reach, authInfo) {
234
234
  }));
235
235
  }
236
236
  /** The completion re-check of a long-running tool: the call must still be allowed, or approved with the same token. */
237
- async function recheck(checks, binding, call, permission, approved) {
238
- const rechecked = await checks.kernel.check(binding, void 0, call, { simulate: true });
237
+ async function recheck(checks, binding, args, call, permission, approved, tool) {
238
+ const rechecked = await checks.kernel.check(binding, args, call, compact({
239
+ simulate: true,
240
+ tool
241
+ }));
239
242
  if (!rechecked.ok) return {
240
243
  ok: false,
241
244
  refusal: failedRefusal(permission, rechecked.failure)
@@ -250,7 +253,7 @@ async function recheck(checks, binding, call, permission, approved) {
250
253
  } : plainRefusal(permission, `Denied: ${permission.key} was revoked before the call completed.`, {})
251
254
  };
252
255
  }
253
- async function decideCall(checks, permission, reach, load, context, handlerContext, capabilities, completion) {
256
+ async function decideCall(checks, permission, reach, args, load, context, handlerContext, capabilities, completion, tool) {
254
257
  const authInfo = context.http?.authInfo;
255
258
  const refused = credentialRefusal(checks, permission, reach, authInfo);
256
259
  if (refused !== void 0) return {
@@ -262,8 +265,11 @@ async function decideCall(checks, permission, reach, load, context, handlerConte
262
265
  data: load === void 0 ? void 0 : () => load()
263
266
  });
264
267
  const call = compact({ authInfo });
265
- if (completion !== void 0) return recheck(checks, binding, call, permission, completion.approved);
266
- const checked = await checks.kernel.check(binding, void 0, call, compact({ resumeToken: approvalTokenOf(context) }));
268
+ if (completion !== void 0) return recheck(checks, binding, args, call, permission, completion.approved, tool);
269
+ const checked = await checks.kernel.check(binding, args, call, compact({
270
+ resumeToken: approvalTokenOf(context),
271
+ tool
272
+ }));
267
273
  if (!checked.ok) return {
268
274
  ok: false,
269
275
  refusal: failedRefusal(permission, checked.failure)
@@ -301,17 +307,17 @@ async function decideCall(checks, permission, reach, load, context, handlerConte
301
307
  default: return decision;
302
308
  }
303
309
  }
304
- /** `decideCall` with the refusal text replaced by `onDenied`'s. */
305
- async function checkCall(checks, permission, reach, load, context, handlerContext, capabilities, completion) {
306
- const checked = await decideCall(checks, permission, reach, load, context, handlerContext, capabilities, completion);
307
- const { onDenied } = checks.options;
308
- if (checked.ok || onDenied === void 0) return checked;
310
+ /** `decideCall` with the refusal text replaced by `deniedText`'s. */
311
+ async function checkCall(checks, permission, reach, args, load, context, handlerContext, capabilities, completion, tool) {
312
+ const checked = await decideCall(checks, permission, reach, args, load, context, handlerContext, capabilities, completion, tool);
313
+ const { deniedText } = checks.options;
314
+ if (checked.ok || deniedText === void 0) return checked;
309
315
  const { refusal } = checked;
310
316
  return {
311
317
  ok: false,
312
318
  refusal: {
313
319
  ...refusal,
314
- text: deniedText(onDenied, {
320
+ text: refusalText(deniedText, {
315
321
  decision: refusal.decision ?? null,
316
322
  permission,
317
323
  text: refusal.text
@@ -321,8 +327,11 @@ async function checkCall(checks, permission, reach, load, context, handlerContex
321
327
  }
322
328
  };
323
329
  }
324
- /** The keys a list shows: unguarded ones, and guarded ones the token reaches and the subject may use. */
325
- async function visible(checks, context, permissionOf, keys, declaredOf = () => void 0) {
330
+ /**
331
+ * The keys a list shows: unguarded ones, and guarded ones the token reaches and the subject may use.
332
+ * With `tools`, a guarded key is also a tool name an `agent` actor's `tools` list must name.
333
+ */
334
+ async function visible(checks, context, permissionOf, keys, declaredOf = () => void 0, tools = false) {
326
335
  const authInfo = context.http?.authInfo;
327
336
  const shown = /* @__PURE__ */ new Set();
328
337
  const guarded = [];
@@ -341,7 +350,7 @@ async function visible(checks, context, permissionOf, keys, declaredOf = () => v
341
350
  } catch {
342
351
  return shown;
343
352
  }
344
- for (const entry of guarded) if (mayUse(permdock, entry.permission)) shown.add(entry.key);
353
+ for (const entry of guarded) if ((!tools || actorMayCallTool(permdock.subject.actor, entry.key)) && permdock.mayUse(entry.permission)) shown.add(entry.key);
345
354
  return shown;
346
355
  }
347
356
  /** `handler` behind the call check; a refusal goes to `onRefusal` instead. */
@@ -349,14 +358,16 @@ function guard(checks, permission, load, handler, dataArgs, onRefusal, extra = {
349
358
  return async (...params) => {
350
359
  const raw = params.at(-1);
351
360
  const context = contextOf(raw);
352
- const loader = load === void 0 ? void 0 : () => load(...dataArgs(params));
361
+ const args = dataArgs(params);
362
+ const loader = load === void 0 ? void 0 : () => load(...args);
353
363
  const reach = extra.reach ?? reachOf(checks.policy, permission, void 0);
354
- const checked = await checkCall(checks, permission, reach, loader, context, raw, extra.capabilities);
364
+ const tool = extra.tool?.();
365
+ const checked = await checkCall(checks, permission, reach, args, loader, context, raw, extra.capabilities, void 0, tool);
355
366
  let result;
356
367
  if (checked.ok) {
357
368
  result = await handler(...params);
358
369
  if (extra.longRunning === true) {
359
- const again = await checkCall(checks, permission, reach, loader, context, raw, extra.capabilities, { approved: checked.approved });
370
+ const again = await checkCall(checks, permission, reach, args, loader, context, raw, extra.capabilities, { approved: checked.approved }, tool);
360
371
  if (!again.ok) result = onRefusal(again.refusal);
361
372
  }
362
373
  } else result = onRefusal(checked.refusal);
@@ -404,7 +415,7 @@ function protectServer(checks, server, enforcement) {
404
415
  if (!isRecord(result) || !Array.isArray(result[field])) return result;
405
416
  const context = contextOf(rawContext);
406
417
  const entries = result[field];
407
- const shown = await visible(checks, context, permissionOf, entries.map(keyOf), remember ? toolDeclared : void 0);
418
+ const shown = await visible(checks, context, permissionOf, entries.map(keyOf), remember ? toolDeclared : void 0, remember);
408
419
  const kept = entries.filter((entry) => shown.has(keyOf(entry)));
409
420
  if (remember) lastListed.set(sessionKey(context), [...shown].toSorted().join(","));
410
421
  return definesCacheScope(context) ? {
@@ -445,18 +456,19 @@ function protectServer(checks, server, enforcement) {
445
456
  const key = sessionKey(context);
446
457
  const before = lastListed.get(key);
447
458
  if (before === void 0) return;
448
- const after = [...await visible(checks, context, toolPermission, [...tools.keys()], toolDeclared)].toSorted().join(",");
459
+ const after = [...await visible(checks, context, toolPermission, [...tools.keys()], toolDeclared, true)].toSorted().join(",");
449
460
  if (after === before) return;
450
461
  lastListed.set(key, after);
451
462
  try {
452
463
  await (context.mcpReq?.notify?.({ method: "notifications/tools/list_changed" }) ?? inner.sendToolListChanged?.());
453
464
  } catch {}
454
465
  };
455
- const guardTool = (permission, reach, load, handler, longRunning) => guard(checks, permission, load, handler, (params) => params.length >= 2 ? [params[0]] : [void 0], toolRefusal, {
466
+ const guardTool = (tool, permission, reach, load, handler, longRunning) => guard(checks, permission, load, handler, (params) => params.length >= 2 ? [params[0]] : [void 0], toolRefusal, {
456
467
  after: announce,
457
468
  longRunning,
458
469
  capabilities,
459
- reach
470
+ reach,
471
+ tool
460
472
  });
461
473
  const originalTool = server.registerTool.bind(server);
462
474
  const toolPermissionOf = (name, config) => {
@@ -465,7 +477,7 @@ function protectServer(checks, server, enforcement) {
465
477
  return requirePermission("tool", name, { permission: enforcement.permissionFor(name) });
466
478
  };
467
479
  /** With `enforce: 'procedure'` the handler runs undecided: the procedure it calls decides. */
468
- const wrapTool = (permission, reach, load, handler, longRunning) => enforcement === void 0 ? guardTool(permission, reach, load, handler, longRunning) : async (...params) => {
480
+ const wrapTool = (tool, permission, reach, load, handler, longRunning) => enforcement === void 0 ? guardTool(tool, permission, reach, load, handler, longRunning) : async (...params) => {
469
481
  const result = await handler(...params);
470
482
  await announce(contextOf(params.at(-1)));
471
483
  return result;
@@ -477,6 +489,8 @@ function protectServer(checks, server, enforcement) {
477
489
  const longRunning = rawLongRunning === true;
478
490
  const declared = declaredScopes(name, rawScopes === void 0 ? enforcement?.oauthScopesFor?.(name) : rawScopes);
479
491
  const reach = reachOf(checks.policy, permission, declared);
492
+ let current = name;
493
+ const tool = () => current;
480
494
  const registered = originalTool(name, {
481
495
  ...passthrough,
482
496
  annotations: {
@@ -484,11 +498,10 @@ function protectServer(checks, server, enforcement) {
484
498
  ...passthrough["annotations"]
485
499
  },
486
500
  scopeChallenge: challengeFor(scopeChallenge, reach.scopes, reach.challenge)
487
- }, wrapTool(permission, reach, load, handler, longRunning));
501
+ }, wrapTool(tool, permission, reach, load, handler, longRunning));
488
502
  tools.set(name, permission);
489
503
  if (declared !== void 0) toolScopes.set(name, declared);
490
- let current = name;
491
- guardUpdates(registered, (callback) => wrapTool(permission, reach, load, callback, longRunning), (from, to) => {
504
+ guardUpdates(registered, (callback) => wrapTool(tool, permission, reach, load, callback, longRunning), (from, to) => {
492
505
  tools.delete(from);
493
506
  toolScopes.delete(from);
494
507
  if (to !== null) {
@@ -581,7 +594,8 @@ function subjectFromMcp(authInfo, options = {}) {
581
594
  }
582
595
  //#endregion
583
596
  //#region src/mcp/create.ts
584
- function createPermDock(policy, options) {
597
+ function createPermDock(policy, given) {
598
+ const options = withApp(policy, given);
585
599
  const actorKind = mcpActorKind(options.actorKind);
586
600
  if (actorKind === void 0) throw new TypeError("permdock/mcp: actorKind must be a non-empty string");
587
601
  const checks = {
@@ -590,6 +604,7 @@ function createPermDock(policy, options) {
590
604
  kernel: createAgentKernel(policy, compact({
591
605
  subject: (call) => options.subject(call.authInfo ?? {}),
592
606
  actor: (call) => {
607
+ if (options.actor !== void 0) return options.actor(call.authInfo ?? {});
593
608
  const clientId = call.authInfo?.clientId;
594
609
  return typeof clientId === "string" && clientId !== "" ? compact({
595
610
  id: clientId,
@@ -597,7 +612,10 @@ function createPermDock(policy, options) {
597
612
  client: clientNameOf(options.clients, clientId)
598
613
  }) : void 0;
599
614
  },
600
- delegation: (call) => call.authInfo === void 0 ? void 0 : delegationFrom(call.authInfo.scopes, call.authInfo.extra),
615
+ delegation: (call) => {
616
+ if (options.delegation !== void 0) return options.delegation(call.authInfo ?? {});
617
+ return call.authInfo === void 0 ? void 0 : delegationFrom(call.authInfo.scopes, call.authInfo.extra);
618
+ },
601
619
  tenant: tenantOf(options.tenant),
602
620
  store: options.store,
603
621
  adapter: "mcp",
@@ -1,20 +1,24 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { i as describeError } from "./errors-CWfoNg9N.js";
2
+ import { i as dateAt } from "./time-DkWjdL98.js";
3
+ import { a as describeError } from "./errors-CWTY6uih.js";
3
4
  import { o as sqlFiles } from "./files-D_JIzUrP.js";
4
- import { n as escapeSqlIdent, o as quoteSqlLiteral } from "./sql-t8teWOfo.js";
5
- import "./sources-B1-b-R0t.js";
6
- import { a as RETIRE_MARKER } from "./markers-CiwAOZtO.js";
7
- import { r as HELPERS } from "./shared-1uhI-e-b.js";
8
- import { l as writeOutputFiles, t as dataMigrationFile } from "./output-files-CgIsvdSa.js";
5
+ import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
6
+ import "./sources-vs5dGOsS.js";
7
+ import { a as RETIRE_MARKER } from "./markers-C6joDI3o.js";
8
+ import { r as refuseDirty, t as applyFiles } from "./files-C5ZI27eV.js";
9
+ import { f as writeOutputFiles, n as dataMigrationFile } from "./output-files-DhRBBE4n.js";
10
+ import { r as HELPERS } from "./shared-BAK8t4Uo.js";
9
11
  import { o as sqlStatements } from "./deciding-columns-Sq12mEA6.js";
10
- import { i as retireSql, r as retirePlan } from "./retire-BFcxL6un.js";
11
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
12
+ import { i as retireSql, r as retirePlan } from "./retire-CALjIQ7e.js";
13
+ import { existsSync, readFileSync } from "node:fs";
12
14
  import { relative, resolve } from "node:path";
13
15
  import { parse } from "pgsql-parser";
14
16
  //#region src/cli/rls/migrate.ts
15
17
  function migrateTarget(generated) {
16
18
  const granted = /* @__PURE__ */ new Map();
19
+ const roles = /* @__PURE__ */ new Set();
17
20
  for (const row of generated.seeds ?? []) {
21
+ roles.add(row.role);
18
22
  if (row.effect !== "allow") continue;
19
23
  let keys = granted.get(row.scope);
20
24
  if (keys === void 0) {
@@ -29,7 +33,8 @@ function migrateTarget(generated) {
29
33
  permissions: new Set(generated.keys?.permissions ?? []),
30
34
  rowConditions: new Set(generated.keys?.rowConditions ?? []),
31
35
  granted,
32
- renamed: generated.keys?.renamed ?? {}
36
+ renamed: generated.keys?.renamed ?? {},
37
+ roles
33
38
  };
34
39
  }
35
40
  function child(node, key) {
@@ -173,6 +178,21 @@ var Rewriter = class {
173
178
  const column = this.#column(idArg);
174
179
  return "to" in column ? { to: `(${column.to} in (select ${helper}()))` } : column;
175
180
  }
181
+ #role(scope, idArg, roleArgs) {
182
+ const name = `member_${scope}_ids`;
183
+ const helper = this.#helper(name);
184
+ if (helper === void 0 || !this.#target.sql.includes(`.${name}(p_roles text[])`)) return skip("missing-helper", `rls generate writes no ${name}(p_roles text[]): run it with this rls.migrate config, which asks for it`);
185
+ const legacy = roleArgs.map((arg) => stringConst(arg)).filter((role) => role !== void 0);
186
+ if (legacy.length === 0 || legacy.length !== roleArgs.length) return skip("dynamic-role", "a role is not a string literal; map it by hand");
187
+ const mapped = [];
188
+ for (const value of legacy) {
189
+ const declared = this.#target.roleValues?.[value] ?? value;
190
+ if (!this.#target.roles.has(declared)) return skip("unknown-role", `${value} maps to ${declared}, which no role grants; add it to rls.roleValues or declare the role`);
191
+ mapped.push(declared);
192
+ }
193
+ const column = this.#column(idArg);
194
+ return "to" in column ? { to: `(${column.to} in (select ${helper}(array[${mapped.map(literal).join(", ")}])))` } : column;
195
+ }
176
196
  #scoped(args, selected) {
177
197
  const [scopeArg, idArg, keyArg] = args;
178
198
  const named = stringConst(scopeArg);
@@ -187,6 +207,7 @@ var Rewriter = class {
187
207
  case "ids": return this.#ids(helper.scope, args[0]);
188
208
  case "row": return this.#row(helper.scope, args[0], args[1]);
189
209
  case "membership": return this.#membership(helper.scope, args[0]);
210
+ case "role": return this.#role(helper.scope, args[0], args.slice(1));
190
211
  case "scoped": return this.#scoped(args, selected);
191
212
  case "global": return this.#global(args[0], selected);
192
213
  default: return helper;
@@ -341,7 +362,7 @@ function describe(report, write) {
341
362
  const lines = [...report.rewrites.map((item) => `${item.file}:${String(item.line)} ${item.from} -> ${item.to}`), ...report.skipped.map((item) => `skipped ${item.file}:${String(item.line)} ${item.call}: ${item.detail}`)];
342
363
  const files = new Set(report.rewrites.map((item) => item.file)).size;
343
364
  const unknown = report.skipped.filter((item) => item.reason === "unknown-key").length;
344
- lines.push(`rls migrate: ${write ? "rewrote" : "would rewrite"} ${String(report.rewrites.length)} call(s) in ${String(files)} file(s), skipped ${String(report.skipped.length)}${unknown === 0 ? "" : `, ${String(unknown)} with an unknown key`}${write ? "" : "; --write applies them"}`);
365
+ lines.push(`rls migrate: ${write ? "rewrote" : "would rewrite"} ${String(report.rewrites.length)} call(s) in ${String(files)} file(s), skipped ${String(report.skipped.length)}${unknown === 0 ? "" : `, ${String(unknown)} with an unknown key`}${write ? "" : "; drop --dry-run to apply them"}`);
345
366
  return lines.join("\n");
346
367
  }
347
368
  /** `permdock rls migrate`: a dry run unless `write`; exits 1 while a key is unknown. */
@@ -355,13 +376,17 @@ async function runRlsMigrate(input) {
355
376
  const rewrites = [];
356
377
  const skipped = [];
357
378
  const statements = [];
379
+ const writes = [];
358
380
  for (const path of files) {
359
381
  const file = relative(input.cwd, path);
360
382
  const text = readFileSync(path, "utf8");
361
383
  const result = await migrateSql(file, text, input.config, input.target);
362
384
  rewrites.push(...result.rewrites);
363
385
  skipped.push(...result.skipped);
364
- if (input.write && result.text !== text) writeFileSync(path, result.text);
386
+ if (input.write && result.text !== text) writes.push({
387
+ path,
388
+ text: result.text
389
+ });
365
390
  for (const statement of sqlStatements(input.write ? result.text : text)) statements.push({
366
391
  file,
367
392
  ...statement
@@ -371,6 +396,16 @@ async function runRlsMigrate(input) {
371
396
  code: 2,
372
397
  output: "rls migrate --retire-out needs rls.migrate.tables in permdock.config.ts"
373
398
  };
399
+ if (writes.length > 0) {
400
+ refuseDirty({
401
+ command: "rls migrate",
402
+ invocation: `rls migrate --sql ${input.sql}`,
403
+ cwd: input.cwd,
404
+ paths: writes.map((write) => write.path),
405
+ force: input.force === true
406
+ });
407
+ applyFiles(input.cwd, writes);
408
+ }
374
409
  const retire = input.config.tables === void 0 ? void 0 : retirePlan(statements, input.config);
375
410
  const report = retire === void 0 ? {
376
411
  rewrites,
@@ -386,14 +421,14 @@ async function runRlsMigrate(input) {
386
421
  code: unknown ? 1 : 0,
387
422
  output
388
423
  };
389
- const retired = writeRetire(input.cwd, input.retireOut, retire, input.now);
424
+ const retired = writeRetire(input.cwd, input.retireOut, retire, input.now, !input.write);
390
425
  return {
391
426
  code: unknown || retired.code === 1 ? 1 : 0,
392
427
  output: `${output}\n${retired.output}`
393
428
  };
394
429
  }
395
430
  /** `--retire-out`: nothing is written while any listed table is still read. */
396
- function writeRetire(cwd, out, plan, now) {
431
+ function writeRetire(cwd, out, plan, now, dryRun) {
397
432
  const read = plan.tables.filter((table) => table.present && table.readers.length > 0);
398
433
  if (read.length > 0) return {
399
434
  code: 1,
@@ -410,13 +445,17 @@ function writeRetire(cwd, out, plan, now) {
410
445
  part: "retire",
411
446
  marker: RETIRE_MARKER,
412
447
  text,
413
- now: now ?? /* @__PURE__ */ new Date(),
448
+ now: now ?? dateAt(),
414
449
  check: false
415
450
  });
416
451
  if (file === void 0) return {
417
452
  code: 0,
418
453
  output: "rls migrate --retire-out: up to date"
419
454
  };
455
+ if (dryRun && file.rel !== "-") return {
456
+ code: 0,
457
+ output: `would write ${file.rel}`
458
+ };
420
459
  const written = writeOutputFiles(cwd, [file]);
421
460
  return {
422
461
  code: 0,
@@ -1,9 +1,10 @@
1
- import { E as Policy, Or as Principal, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
4
- import { A as ConnectionOptions, C as verifyWebBotAuth, O as Connection, b as discoverViaSignatureAgent, i as OpenApiHooks, m as InvalidSignatureError, o as ProtectOptions } from "../server-types-DdqBwZN_.js";
5
- import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
6
- import { i as sendResponse, t as NodeRequest } from "../http-DPuDaChb.js";
1
+ import { T as Policy, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
7
+ import { r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
7
8
  import { CanActivate, DynamicModule, ExceptionFilter, ExecutionContext, Type } from "@nestjs/common";
8
9
  //#region src/nest/http.d.ts
9
10
  /**
@@ -33,8 +34,8 @@ type NestSocket = {
33
34
  disconnect?(close?: boolean): unknown;
34
35
  close?(code?: number, reason?: string): unknown;
35
36
  };
36
- /** `Protect(null, loadData?, { oauthScopes })` needs a principal and one of the OAuth scopes, but no permission. */
37
- type NestProtect = (permission: Permission | null, loadData?: (req: NestRequest) => unknown, protectOptions?: ProtectOptions) => ClassDecorator & MethodDecorator;
37
+ /** `Protect(null, data?, { oauthScopes })` needs a principal and one of the OAuth scopes, but no permission. */
38
+ type NestProtect = (permission: Permission | null, data?: (req: NestRequest) => unknown, protectOptions?: ProtectOptions) => ClassDecorator & MethodDecorator;
38
39
  type NestHandlerOptions = {
39
40
  /** Controller path; may hold route params such as `:org`. Default `api/permdock`. */
40
41
  readonly path?: string;
@@ -44,6 +45,8 @@ type PermDockModuleOptions = {
44
45
  readonly guard?: "global";
45
46
  };
46
47
  type NestPermDock = {
48
+ /** The `PermDock` for one request, for code the guard does not run before. */
49
+ readonly getPermDock: (req: NestRequest) => Promise<PermDock>;
47
50
  readonly PermDockModule: Type<unknown> & {
48
51
  readonly forRoot: (options?: PermDockModuleOptions) => DynamicModule;
49
52
  };
@@ -72,4 +75,4 @@ export declare function decorateMethod(cls: {
72
75
  readonly prototype: object;
73
76
  }, key: string, ...decorators: readonly MethodDecorator[]): void;
74
77
  //#endregion
75
- export { InvalidSignatureError, type NestHandlerOptions, type NestPermDock, type NestPermDockOptions, type NestProtect, type NestRequest, type NestSocket, type PermDockModuleOptions, discoverViaSignatureAgent, sendResponse, verifyWebBotAuth };
78
+ export { InvalidSignatureError, type NestHandlerOptions, type NestPermDock, type NestPermDockOptions, type NestProtect, type NestRequest, type NestSocket, type PermDockModuleOptions, discoverViaSignatureAgent, sendResponse, webBotAuthVerifier };
@@ -1,12 +1,12 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as PermDockValidationError } from "../validation-error-ZfUHbKvf.js";
3
- import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-drnfxYtm.js";
3
+ import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-BKy0EfhN.js";
4
4
  import { c as writeReply, r as hasCredentials } from "../http-BBoKefeS.js";
5
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-C9YJsv3H.js";
6
- import { t as problemFromError } from "../map-error-BE27PYkE.js";
7
- import { a as socketConnection, r as bindKernel } from "../bind-kk-uyCwH.js";
8
- import { i as onRevoked, t as POLICY_VIOLATION } from "../stream-BMui98KK.js";
9
- import { i as toRequest$1, n as isServerResponse, r as sendResponse } from "../http-BEbdMZ05.js";
5
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
6
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
7
+ import { a as socketConnection, r as bindKernel } from "../bind-CAvgUuKs.js";
8
+ import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
9
+ import { n as sendResponse, r as toRequest$1, t as isServerResponse } from "../http-ujKm0JXE.js";
10
10
  import { Catch, Controller, Get, Inject, Injectable, Module, Post, Req, Res, createParamDecorator } from "@nestjs/common";
11
11
  import { APP_FILTER, APP_GUARD, Reflector } from "@nestjs/core";
12
12
  //#region src/nest/decorate.ts
@@ -96,10 +96,10 @@ function rulesOf(target) {
96
96
  if (!Array.isArray(found)) return [];
97
97
  return found;
98
98
  }
99
- const Protect = (permission, loadData, protectOptions) => {
99
+ const Protect = (permission, data, protectOptions) => {
100
100
  const rule = compact({
101
101
  permission,
102
- loadData,
102
+ data,
103
103
  options: protectOptions
104
104
  });
105
105
  return ((target, _propertyKey, descriptor) => {
@@ -110,11 +110,11 @@ const Protect = (permission, loadData, protectOptions) => {
110
110
  });
111
111
  };
112
112
  function createPermDock(policy, options) {
113
- const { kernel, bind, rebind, scopeOf, handlerScope } = bindKernel(policy, options, "nest", toRequest);
113
+ const { kernel, bind, rebind, scopeOf, handlerScope, getPermDock } = bindKernel(policy, options, "nest", toRequest);
114
114
  const applyProtect = async (remaining, req, request, scope, load) => {
115
115
  const [rule, ...rest] = remaining;
116
116
  if (rule === void 0) return;
117
- const guard = await kernel.protect(rule.permission, load(rule.loadData), rule.options)(request, scope);
117
+ const guard = await kernel.protect(rule.permission, load(rule.data), rule.options)(request, scope);
118
118
  if (!guard.ok) throw new PermDockHttpError(guard.response);
119
119
  req.permdock = guard.permdock;
120
120
  req.permdockData = guard.data;
@@ -126,7 +126,7 @@ function createPermDock(policy, options) {
126
126
  onRevoked(conn, (problem) => {
127
127
  client.emit?.("permdock:error", problem);
128
128
  if (typeof client.disconnect === "function") client.disconnect(true);
129
- else client.close?.(POLICY_VIOLATION, problem.type);
129
+ else client.close?.(POLICY_VIOLATION, closeReason(problem));
130
130
  });
131
131
  return conn;
132
132
  });
@@ -136,7 +136,7 @@ function createPermDock(policy, options) {
136
136
  const load = loadsFor(req);
137
137
  for (const rule of rules) {
138
138
  if (conn.signal.aborted) throw conn.signal.reason instanceof PermDockRevokedError ? conn.signal.reason : new PermDockRevokedError({ code: "denied" });
139
- const guard = await kernel.protectOn(conn.permdock, rule.permission, load(rule.loadData), rule.options, request);
139
+ const guard = await kernel.protectOn(conn.permdock, rule.permission, load(rule.data), rule.options, request);
140
140
  if (!guard.ok) throw new PermDockHttpError(guard.response);
141
141
  }
142
142
  };
@@ -158,7 +158,7 @@ function createPermDock(policy, options) {
158
158
  if (req === void 0) return rules.length === 0;
159
159
  const request = bind(req);
160
160
  const scope = await scopeOf(req);
161
- req.permdock = await kernel.permdock(request, scope);
161
+ req.permdock = await kernel.getPermDock(request, scope);
162
162
  await applyProtect(rules, req, request, scope, loadsFor(req));
163
163
  return true;
164
164
  }
@@ -246,6 +246,7 @@ function createPermDock(policy, options) {
246
246
  return EvaluationsController;
247
247
  };
248
248
  return {
249
+ getPermDock,
249
250
  PermDockModule: PermDockRoot,
250
251
  PermDockGuard,
251
252
  Protect,
@@ -257,4 +258,4 @@ function createPermDock(policy, options) {
257
258
  };
258
259
  }
259
260
  //#endregion
260
- export { InvalidSignatureError, createPermDock, decorateMethod, discoverViaSignatureAgent, sendResponse, toRequest, verifyWebBotAuth };
261
+ export { InvalidSignatureError, createPermDock, decorateMethod, discoverViaSignatureAgent, sendResponse, toRequest, webBotAuthVerifier };
@@ -1,16 +1,18 @@
1
- import { E as Policy, Or as Principal, an as Snapshot, ir as Decision, j as PolicyVocabulary, jt as PermDock, sr as DenialReason } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { f as ApprovalStore } from "../types-Br9IXUBG.js";
4
- import { t as InstanceOptions } from "../instance-options-plkrsAog.js";
5
- import { n as PermDockWrap } from "../wrap-Cr93qqdP.js";
6
- import { o as OtelWrap } from "../types-CUcFZfpU.js";
7
- import { n as DescribeMessages } from "../describe-C3ldA9os.js";
8
- import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-J5T7t_vD.js";
1
+ import { In as DenialReason, Nn as Decision, T as Policy, Vt as Snapshot, ar as Subject, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { m as ApprovalStore } from "../types-BdtSDbBO.js";
5
+ import { t as InstanceOptions } from "../instance-options-BsVpyGIk.js";
6
+ import { n as PermDockWrap } from "../wrap-C5jC6sKI.js";
7
+ import { o as OtelWrap } from "../types-lUlG3TVd.js";
8
+ import { n as DescribeMessages } from "../describe-B5qgDvEW.js";
9
+ import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-PXI-vGpY.js";
9
10
  import { ReactElement, ReactNode } from "react";
10
11
  //#region src/next/types.d.ts
11
12
  type NextSubjectInput = unknown;
12
13
  type NextPermDockOptions<TUser = NextSubjectInput> = InstanceOptions & {
13
- readonly subject: () => TUser | Promise<TUser>;
14
+ /** The user, or a full `Subject` (core then skips `policy.subject`). */
15
+ readonly subject: () => TUser | Subject | Promise<TUser | Subject>;
14
16
  readonly tenant?: string | (() => string | undefined | Promise<string | undefined>);
15
17
  readonly onDenied?: (decision: Decision) => never | void;
16
18
  readonly store?: ApprovalStore;
@@ -36,12 +38,7 @@ type GetSnapshotQuery = GetPermDockQuery & {
36
38
  /** Tags added next to `snapshotTag(sub)`, such as the app's own organisation tag. */
37
39
  readonly tags?: readonly string[];
38
40
  };
39
- type RequireAccessInput = {
40
- readonly permission: Permission;
41
- /** The row for an instance permission; omit it for a collection permission. */
42
- readonly data?: unknown;
43
- /** The active tenant, as for `getPermDock({ tenant })`; defaults to the factory's `tenant`. */
44
- readonly tenant?: string;
41
+ type PermissionRequirementOptions = GetPermDockQuery & {
45
42
  /**
46
43
  * Runs before the default interrupts; throw or redirect to replace them.
47
44
  * Defaults to the factory's `onDenied`.
@@ -53,7 +50,7 @@ type ServerPermissionState = {
53
50
  readonly status: "ready";
54
51
  readonly decision: Decision;
55
52
  };
56
- type ServerPermDockProviderProps = {
53
+ type NextPermDockProviderProps = {
57
54
  readonly children: ReactNode;
58
55
  readonly tenant?: string;
59
56
  readonly include?: readonly (Permission | {
@@ -70,7 +67,7 @@ type ServerPermDockProviderProps = {
70
67
  */
71
68
  readonly defaults?: {
72
69
  readonly pending?: ReactNode;
73
- readonly fallback?: ReactNode;
70
+ readonly denied?: ReactNode;
74
71
  readonly approval?: ReactNode;
75
72
  };
76
73
  /** Localised text for `useDescribe()`; records only, for the same reason. */
@@ -102,15 +99,15 @@ type NextPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
102
99
  * subject and `forbidden()` otherwise (`experimental.authInterrupts`);
103
100
  * approval-required and boundary validation throw as from `assert`.
104
101
  */
105
- readonly requireAccess: (input: RequireAccessInput) => Promise<Extract<Decision, {
102
+ readonly requirePermission: (permission: Permission, data?: unknown, options?: PermissionRequirementOptions) => Promise<Extract<Decision, {
106
103
  readonly outcome: "granted";
107
104
  }>>;
108
105
  /** Never awaits: passes an unawaited snapshot to the client provider, whose hooks suspend. */
109
- readonly PermDockProvider: (props: ServerPermDockProviderProps) => ReactElement;
106
+ readonly PermDockProvider: (props: NextPermDockProviderProps) => ReactElement;
110
107
  readonly permdockHandler: () => PermDockHandler;
111
108
  };
112
109
  //#endregion
113
110
  //#region src/next/create.d.ts
114
- export declare function createPermDock<TUser = NextSubjectInput, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: NextPermDockOptions<TUser>): NextPermDock<V>;
111
+ export declare function createPermDock<TUser = NextSubjectInput, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: NextPermDockOptions<TUser>): NextPermDock<V>;
115
112
  //#endregion
116
- export { type CacheLifeForOptions, type GetPermDockQuery, type GetSnapshotQuery, type NextPermDock, type NextPermDockOptions, type PermDockHandler, type RequireAccessInput, type ServerPermDockProviderProps, type ServerPermissionState, type SnapshotHeaders, type SnapshotHeadersOptions, cacheLifeFor, snapshotHeaders, snapshotTag };
113
+ export { type CacheLifeForOptions, type GetPermDockQuery, type GetSnapshotQuery, type NextPermDock, type NextPermDockOptions, type NextPermDockProviderProps, type PermDockHandler, type PermissionRequirementOptions, type ServerPermissionState, type SnapshotHeaders, type SnapshotHeadersOptions, cacheLifeFor, snapshotHeaders, snapshotTag };