permdock 0.6.0 → 0.7.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 (399) hide show
  1. package/README.md +1 -0
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +5 -5
  4. package/dist/a2a/index.js +4 -4
  5. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-D-feE7BE.js} +1 -1
  6. package/dist/agent/index.d.ts +3 -3
  7. package/dist/agent/index.js +1 -1
  8. package/dist/ai-sdk/index.d.ts +21 -6
  9. package/dist/ai-sdk/index.js +19 -9
  10. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
  11. package/dist/approvals/index.d.ts +4 -4
  12. package/dist/approvals/index.js +4 -4
  13. package/dist/{approvals-p1PGoVjb.js → approvals-CMRfsbBh.js} +74 -48
  14. package/dist/{arazzo-41WuzHou.js → arazzo-ClrF3PVb.js} +2 -2
  15. package/dist/{arazzo-CaUVBn7D.js → arazzo-rdeJ8n1J.js} +4 -4
  16. package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
  17. package/dist/astro/index.d.ts +6 -6
  18. package/dist/astro/index.js +2 -2
  19. package/dist/{audience-DabClFLQ.js → audience-BrMs8c4o.js} +1 -1
  20. package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
  21. package/dist/authzen/index.d.ts +162 -22
  22. package/dist/authzen/index.js +315 -146
  23. package/dist/{automation-BNM3TtDo.d.ts → automation-DOtAFWdy.d.ts} +3 -3
  24. package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
  25. package/dist/base-url-BQbddZO5.js +9 -0
  26. package/dist/better-auth/index.d.ts +2 -2
  27. package/dist/better-auth/index.js +2 -2
  28. package/dist/better-supabase/index.d.ts +50 -8
  29. package/dist/better-supabase/index.js +94 -32
  30. package/dist/{bind-CAvgUuKs.js → bind-D1nO6fiC.js} +5 -5
  31. package/dist/{bind-DOyrv6zi.d.ts → bind-JDuvxjuW.d.ts} +7 -7
  32. package/dist/{build-instance-Bu_eDqYw.js → build-instance-DxE7czo9.js} +1 -1
  33. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  34. package/dist/{capability-Drg-1YhL.d.ts → capability-D4UC9TTW.d.ts} +2 -2
  35. package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
  36. package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
  37. package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
  38. package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
  39. package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
  40. package/dist/catalog/index.d.ts +70 -10
  41. package/dist/catalog/index.js +112 -6
  42. package/dist/catalog-BCCjSAdH.js +1 -0
  43. package/dist/{catalog-DZVbrF-z.js → catalog-BaMQfQ6Y.js} +3 -3
  44. package/dist/{catalog-HD2gf5mY.js → catalog-D69WhFii.js} +43 -13
  45. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-CV9s6B1S.js} +28 -5
  46. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
  47. package/dist/{create-CQWIpUG-.js → challenge-nGWma08S.js} +122 -25
  48. package/dist/chat/index.d.ts +1 -1
  49. package/dist/chat/index.js +2 -2
  50. package/dist/chat-sdk/index.d.ts +3 -3
  51. package/dist/checks-BC_0mPIq.js +37 -0
  52. package/dist/claude-agent/index.d.ts +3 -3
  53. package/dist/claude-agent/index.js +2 -2
  54. package/dist/clerk/index.d.ts +3 -3
  55. package/dist/clerk/index.js +1 -1
  56. package/dist/cli/bin.js +2 -2
  57. package/dist/cli/index.d.ts +3 -3
  58. package/dist/cli/index.js +3 -3
  59. package/dist/cloud/index.d.ts +127 -11
  60. package/dist/cloud/index.js +251 -3
  61. package/dist/{cloud-ytQ3uviA.js → cloud-CO8pYtwr.js} +5 -5
  62. package/dist/{codemod-ua2hHy7w.js → codemod-BP6n8N9L.js} +3 -3
  63. package/dist/{codemod-5mpSpnUY.js → codemod-i4N2BhDc.js} +3 -3
  64. package/dist/{collect-mLTY4nwb.js → collect-BaWeMjwV.js} +17 -8
  65. package/dist/{collect-Ci6akVwH.js → collect-DNm3oKOk.js} +6 -5
  66. package/dist/collect-k_Dulxr5.js +1 -0
  67. package/dist/compile/index.d.ts +1 -1
  68. package/dist/compile/index.js +1 -1
  69. package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
  70. package/dist/{compile-1bsAezL0.d.ts → compile-COM2VKuN.d.ts} +3 -3
  71. package/dist/{completion-BTFrHZhX.js → completion-BNdVf7X2.js} +3 -3
  72. package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
  73. package/dist/{config-Bj2Ixq3d.js → config-DGZzMV1B.js} +2 -2
  74. package/dist/{config-report-DSpsLpCE.js → config-report-Cm7UITNA.js} +3 -3
  75. package/dist/connector-schema-_VCSsdtD.js +433 -0
  76. package/dist/{context-B_u3_bDJ.js → context--uM9V3Ui.js} +2 -2
  77. package/dist/convex/index.d.ts +5 -5
  78. package/dist/convex/index.js +2 -2
  79. package/dist/core-B5-w6Kw9.js +335 -0
  80. package/dist/core-CQkE8Esr.d.ts +179 -0
  81. package/dist/{create-B30OMUOJ.d.ts → create-B2-CQqCI.d.ts} +5 -5
  82. package/dist/{create-CGm28gyI.js → create-Cb86Z8Im.js} +9 -8
  83. package/dist/{create-DCF2SvoT.js → create-DJrlhEp9.js} +5 -5
  84. package/dist/{create-D_NmPOdH.d.ts → create-QHuuPw3q.d.ts} +7 -7
  85. package/dist/{create-CBMmFie-.d.ts → create-UTnUVETj.d.ts} +30 -10
  86. package/dist/{credential-BcoiejpY.js → credential-CIM7wHwA.js} +4 -4
  87. package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
  88. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
  89. package/dist/{delegation-j6-rc37o.js → delegation-C5rOdTp5.js} +5 -5
  90. package/dist/delivery/index.d.ts +5 -5
  91. package/dist/delivery/index.js +4 -3
  92. package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
  93. package/dist/{denied-text-CiFQNuMV.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
  94. package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
  95. package/dist/{describe-B5qgDvEW.d.ts → describe-O0SwYIK8.d.ts} +2 -2
  96. package/dist/{diff-CmuSD3vc.js → diff-Btr1c1Ow.js} +2 -2
  97. package/dist/{diff-3jbx6Rm4.js → diff-DzT-xD13.js} +10 -10
  98. package/dist/{doctor-BdZw53-k.js → doctor-BU1szn63.js} +241 -49
  99. package/dist/{doctor-3ZqNHX_G.js → doctor-BoK_y0KO.js} +4 -4
  100. package/dist/drizzle/index.d.ts +3 -3
  101. package/dist/drizzle/index.js +1 -1
  102. package/dist/elysia/index.d.ts +5 -5
  103. package/dist/elysia/index.js +3 -3
  104. package/dist/{errors-DH5QEGXh.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
  105. package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
  106. package/dist/{evaluate-CNClBvcj.js → evaluate-B_oqFbWC.js} +55 -12
  107. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
  108. package/dist/{evaluations-beAooV0n.js → evaluations-DReoiVBw.js} +4 -4
  109. package/dist/eve/index.d.ts +5 -5
  110. package/dist/eve/index.js +3 -3
  111. package/dist/express/index.d.ts +5 -5
  112. package/dist/express/index.js +3 -3
  113. package/dist/fastify/index.d.ts +5 -5
  114. package/dist/fastify/index.js +3 -3
  115. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
  116. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-De-u6vhJ.js} +3 -3
  117. package/dist/{fields-OYG_JR78.js → fields-ClcQLrVc.js} +48 -13
  118. package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
  119. package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
  120. package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
  121. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-Bz469dIh.js} +17 -10
  122. package/dist/generate-3FNO5P5Q.js +159 -0
  123. package/dist/{grantee-hxrUsbpM.js → grantee-BrRANrpT.js} +1 -1
  124. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
  125. package/dist/{grantee-match-DbENBHLB.js → grantee-match-0RtHWQDx.js} +3 -3
  126. package/dist/h3/index.d.ts +4 -4
  127. package/dist/h3/index.js +3 -3
  128. package/dist/{helpers-CBYVMjwh.js → helpers-DY3vXuGs.js} +3 -3
  129. package/dist/hono/index.d.ts +5 -5
  130. package/dist/hono/index.js +3 -3
  131. package/dist/{hosted-BPk51-kX.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
  132. package/dist/{hosted-B46-5LYE.js → hosted-XBgU6RGT.js} +34 -12
  133. package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
  134. package/dist/{import-wyqXUyjm.js → import-Bz0GefWg.js} +5 -5
  135. package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
  136. package/dist/{index-C-6Letxg.d.ts → index-BE8y3moU.d.ts} +50 -8
  137. package/dist/{index-B8YjkEZ4.d.ts → index-BSfRl0hZ.d.ts} +6 -6
  138. package/dist/{index-DuWxc5dt.d.ts → index-BTkwrK7v.d.ts} +143 -14
  139. package/dist/index-CMiPH2Tv.d.ts +206 -0
  140. package/dist/{index-Ch8LpNDp.d.ts → index-DH9DUDEM.d.ts} +18 -3
  141. package/dist/{index-CueFnxQc.d.ts → index-DLwcuCN_.d.ts} +86 -7
  142. package/dist/index.d.ts +18 -17
  143. package/dist/index.js +27 -25
  144. package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
  145. package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
  146. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
  147. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot-CjcwnEiV.js} +16 -11
  148. package/dist/jwt/index.d.ts +83 -5
  149. package/dist/jwt/index.js +143 -5
  150. package/dist/{kernel-D0NVb1cK.js → kernel-DVExUwkp.js} +138 -12
  151. package/dist/kysely/index.d.ts +3 -3
  152. package/dist/kysely/index.js +1 -1
  153. package/dist/load-DrMHXzgN.js +1 -0
  154. package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
  155. package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
  156. package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
  157. package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
  158. package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
  159. package/dist/{manifest-dvL2XEe1.js → manifest-Dv6q4i5s.js} +54 -35
  160. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
  161. package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
  162. package/dist/{map-error-Dr70oA_3.js → map-error-BQGyDm_M.js} +1 -1
  163. package/dist/mcp/index.d.ts +64 -10
  164. package/dist/mcp/index.js +151 -22
  165. package/dist/{migrate-CIq4-E9F.js → migrate-Dodel0IJ.js} +77 -24
  166. package/dist/nest/index.d.ts +5 -5
  167. package/dist/nest/index.js +3 -3
  168. package/dist/next/index.d.ts +9 -9
  169. package/dist/next/index.js +5 -5
  170. package/dist/next/plugin.d.ts +1 -1
  171. package/dist/next/plugin.js +2 -2
  172. package/dist/node/index.d.ts +5 -5
  173. package/dist/node/index.js +2 -2
  174. package/dist/openai/index.d.ts +5 -5
  175. package/dist/openai/index.js +3 -3
  176. package/dist/openapi/index.d.ts +14 -4
  177. package/dist/openapi/index.js +1 -1
  178. package/dist/{openapi-C4dDTVEd.js → openapi-DMocl1bh.js} +4 -4
  179. package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
  180. package/dist/{openapi-DD1SV-5-.js → openapi-ztVaux6j.js} +8 -8
  181. package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
  182. package/dist/{operations-X0VM7F3m.d.ts → operations-BNLes61x.d.ts} +1 -1
  183. package/dist/orpc/index.d.ts +6 -6
  184. package/dist/orpc/index.js +4 -4
  185. package/dist/otel/index.d.ts +3 -3
  186. package/dist/otel/index.js +1 -1
  187. package/dist/{output-1im__-08.js → output-DgSDLrta.js} +7 -3
  188. package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
  189. package/dist/output-files-DPAY7-GX.js +1 -0
  190. package/dist/{ownership-DqaJNJPn.js → ownership-Z2LpxsGa.js} +443 -40
  191. package/dist/parse-Ddhz2xf4.js +148 -0
  192. package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
  193. package/dist/{parse-local-manifest-5ODwqu8b.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
  194. package/dist/pdp/index.d.ts +3 -3
  195. package/dist/pdp/index.js +7 -3
  196. package/dist/peer-12Q5I_RH.js +976 -0
  197. package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
  198. package/dist/{permdock-BrAscV28.js → permdock-BfWEeMqk.js} +177 -49
  199. package/dist/{permdock-SV8ZINYT.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
  200. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
  201. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-DhNEmoRG.d.ts} +4 -64
  202. package/dist/{permissions-u_KHg-sN.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
  203. package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
  204. package/dist/{permissions-BPxlwVhN.js → permissions-DArULThq.js} +4 -4
  205. package/dist/pkce-5h8NgMQJ.js +21 -0
  206. package/dist/{policies-DP2nqRoF.js → policies-B2lZIurj.js} +3 -3
  207. package/dist/{policy-77FSAq_V.d.ts → policy-B7dg_yzu.d.ts} +2 -2
  208. package/dist/{policy-DbM5YYtV.js → policy-DaJy4nK4.js} +17 -8
  209. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-DFWYkNdu.js} +9 -9
  210. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-B-F-qAZk.d.ts} +83 -4
  211. package/dist/postgres-store-BL9M_CA1.js +1001 -0
  212. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
  213. package/dist/{postgrest-DAjUkF9w.js → postgrest-r5faDIzD.js} +37 -4
  214. package/dist/{powersync-DISt6SUe.js → powersync-13odBwiM.js} +3 -3
  215. package/dist/powersync-53ryOZip.js +1059 -0
  216. package/dist/powersync-CExtTLyA.js +1 -0
  217. package/dist/preset/index.js +1 -1
  218. package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
  219. package/dist/prisma/index.d.ts +2 -2
  220. package/dist/prisma/index.js +1 -1
  221. package/dist/{problem-details-B45V5d2b.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
  222. package/dist/prompt-DwtVemER.js +935 -0
  223. package/dist/{protected-RFGpakN9.d.ts → protected-BwZYL1X_.d.ts} +6 -5
  224. package/dist/{protected-BlF0F6wL.js → protected-DXE3cQYg.js} +2 -2
  225. package/dist/{provider-B1al-AZz.js → provider-BQsTYYy0.js} +2 -2
  226. package/dist/{provider-DILL9oPK.d.ts → provider-Csk-THAn.d.ts} +1 -1
  227. package/dist/{provider-store-DM6DNcta.js → provider-store-IgqQipCO.js} +2 -2
  228. package/dist/{pull-jEwbf80J.js → pull-CN5OLxrF.js} +7 -7
  229. package/dist/pull-Cty6Ovyu.js +1 -0
  230. package/dist/{push-BD4f15co.js → push-tVdG8dUL.js} +54 -14
  231. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
  232. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-CmYeSQqq.js} +1 -1
  233. package/dist/react/index.d.ts +6 -6
  234. package/dist/react/index.js +3 -3
  235. package/dist/react/provider-client.d.ts +1 -1
  236. package/dist/react/provider-client.js +1 -1
  237. package/dist/react-native/index.d.ts +25 -11
  238. package/dist/react-native/index.js +209 -21
  239. package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
  240. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
  241. package/dist/{request-context-C81Pip9n.js → request-context-BykKLmyE.js} +2 -2
  242. package/dist/resend/index.d.ts +4 -4
  243. package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
  244. package/dist/{rls-BAqP4q66.js → rls-Ck_PocSp.js} +32 -8
  245. package/dist/{rls-DTvYd-lI.js → rls-CxBZb4rZ.js} +478 -534
  246. package/dist/{role-builder-uWQZ4v84.js → role-builder-C1VJzvcr.js} +3 -3
  247. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  248. package/dist/{rpc-VSl5ylaQ.js → rpc-Bk1bE-ch.js} +1 -1
  249. package/dist/run-Bz7DXGEv.js +1 -0
  250. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
  251. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
  252. package/dist/{run-CUKuz0A8.js → run-uLD2aWuO.js} +7 -7
  253. package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
  254. package/dist/{saas-BCXRuXca.js → saas-Az_Kz-4D.js} +7 -7
  255. package/dist/{scan-qvOe0hS3.js → scan-DSljDE1Y.js} +1 -1
  256. package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
  257. package/dist/scim/index.d.ts +3 -2
  258. package/dist/scim/index.js +3 -1
  259. package/dist/scim-C7JYhySg.js +44 -0
  260. package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
  261. package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
  262. package/dist/server/index.d.ts +11 -11
  263. package/dist/server/index.js +7 -7
  264. package/dist/{server-C3WXAHZj.js → server-Bnga6I50.js} +3 -3
  265. package/dist/{server-types-CKQiCnON.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
  266. package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
  267. package/dist/{shared-BAK8t4Uo.js → shared-fMKOv8hP.js} +44 -38
  268. package/dist/{sink-4-eQIRWf.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
  269. package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
  270. package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
  271. package/dist/{snapshot-B7DkYg6g.js → snapshot-CbGmYiJx.js} +4 -4
  272. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
  273. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
  274. package/dist/solid/index.d.ts +6 -5
  275. package/dist/solid/index.js +4 -4
  276. package/dist/solid-start/index.d.ts +6 -6
  277. package/dist/solid-start/index.js +3 -3
  278. package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
  279. package/dist/{sources-Xc4zkszI.d.ts → sources-DEEuGb8S.d.ts} +63 -14
  280. package/dist/sources-qoIJQrJv.js +11 -0
  281. package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
  282. package/dist/sql-CDEPCA0g.d.ts +10 -0
  283. package/dist/{src-Cu2m75uo.js → src-DLFrtrrC.js} +140 -48
  284. package/dist/ssf/index.d.ts +4 -4
  285. package/dist/ssf/index.js +640 -211
  286. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
  287. package/dist/{store-BDutJkDL.js → store-DSP9oGvh.js} +15 -7
  288. package/dist/{store-options-u0ycEe8s.js → store-options-B_poyYvg.js} +6 -6
  289. package/dist/{stores-BUGNbJTt.d.ts → stores-BAZwSYZA.d.ts} +6 -5
  290. package/dist/{stores-CGhM8BN_.js → stores-BqEuHC05.js} +2 -2
  291. package/dist/{stream-CeCMJmBB.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
  292. package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
  293. package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
  294. package/dist/supabase/index.d.ts +8 -7
  295. package/dist/supabase/index.js +5 -5
  296. package/dist/supabase/middleware.d.ts +6 -6
  297. package/dist/supabase/middleware.js +6 -6
  298. package/dist/{supabase-x5JtR2tc.js → supabase--0aJdLEd.js} +8 -6
  299. package/dist/{supabase-By_frk3U.js → supabase-Bqp7iIY2.js} +3 -3
  300. package/dist/supabase-hook-DJxC4PoP.js +1 -0
  301. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-Dg0SrQWR.js} +1060 -119
  302. package/dist/supautils-MESd81bF.js +689 -0
  303. package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
  304. package/dist/svelte/index.d.ts +5 -5
  305. package/dist/svelte/index.js +5 -5
  306. package/dist/svelte/runtime.d.ts +3 -3
  307. package/dist/svelte/runtime.js +3 -3
  308. package/dist/svelte/source.d.ts +5 -5
  309. package/dist/svelte/source.js +2 -2
  310. package/dist/sveltekit/index.d.ts +6 -6
  311. package/dist/sveltekit/index.js +2 -2
  312. package/dist/tanstack-start/index.d.ts +6 -6
  313. package/dist/tanstack-start/index.js +2 -2
  314. package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
  315. package/dist/terminal/index.d.ts +6 -6
  316. package/dist/terminal/index.js +3 -3
  317. package/dist/testing/core.d.ts +2 -0
  318. package/dist/testing/core.js +1 -0
  319. package/dist/testing/fixtures/index.d.ts +12 -0
  320. package/dist/testing/fixtures/index.js +770 -0
  321. package/dist/testing/index.d.ts +41 -174
  322. package/dist/testing/index.js +241 -731
  323. package/dist/testing/saas/index.d.ts +5 -5
  324. package/dist/testing/saas/index.js +2 -2
  325. package/dist/testing/saas/permissions.d.ts +1 -1
  326. package/dist/testing/saas/permissions.js +1 -1
  327. package/dist/text-diff-DhITNCnD.js +444 -0
  328. package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
  329. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
  330. package/dist/trpc/index.d.ts +6 -6
  331. package/dist/trpc/index.js +3 -3
  332. package/dist/{types-Dfv0aTER.d.ts → types-BWZybqs9.d.ts} +110 -8
  333. package/dist/{types-Druu9wLM.d.ts → types-BXMYB7BY.d.ts} +2 -2
  334. package/dist/{types-BzzaHxt3.d.ts → types-BfVmNJO5.d.ts} +14 -3
  335. package/dist/{types-lUlG3TVd.d.ts → types-CIeZcG8v.d.ts} +2 -2
  336. package/dist/{types-B3_ooZgZ.d.ts → types-CKV71kKh.d.ts} +4 -4
  337. package/dist/{types-CX7AvRqP.d.ts → types-CQVEQawv.d.ts} +4 -4
  338. package/dist/{types-C863OQiR.d.ts → types-CeIscIKp.d.ts} +4 -4
  339. package/dist/{types-C_IiEs64.d.ts → types-CfiKC5aN.d.ts} +1 -1
  340. package/dist/{types-_WhUP7ud.d.ts → types-D3A19w4A.d.ts} +8 -4
  341. package/dist/{types-8RnwUAvE.d.ts → types-DBHftjgS.d.ts} +15 -8
  342. package/dist/{types-BdtSDbBO.d.ts → types-DC44-hqb.d.ts} +2 -2
  343. package/dist/{types-CVZSNocA.d.ts → types-DXmwu78Z.d.ts} +4 -4
  344. package/dist/{types-C791HFu9.d.ts → types-cTos-H7p.d.ts} +2 -2
  345. package/dist/{types-BtHtcKMr.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
  346. package/dist/unplugin/index.d.ts +1 -1
  347. package/dist/unplugin/index.js +2 -2
  348. package/dist/{usage-SveTRTyr.js → usage-Bybmck7f.js} +7 -7
  349. package/dist/{usage-CRVl9V3t.js → usage-CDaLXCfL.js} +2 -2
  350. package/dist/usage-y-kBNdqs.js +1 -0
  351. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
  352. package/dist/{verify-BaAKx7t6.js → verify-pe8rL_Qw.js} +350 -83
  353. package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
  354. package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
  355. package/dist/vue/index.d.ts +6 -5
  356. package/dist/vue/index.js +4 -4
  357. package/dist/{waiter-B986w1oK.d.ts → waiter-DwEyouan.d.ts} +2 -2
  358. package/dist/watch-Bd9mx3rd.js +1 -0
  359. package/dist/{watch-vea54PRw.js → watch-C-4VmFlL.js} +3 -3
  360. package/dist/webmcp/index.d.ts +2 -2
  361. package/dist/webmcp/index.js +2 -2
  362. package/dist/{where-scope-C9vfEphl.js → where-scope-wq2coopv.js} +41 -21
  363. package/dist/{who-can-DWBAcaCQ.js → who-can-BwNsI_Js.js} +6 -6
  364. package/dist/workflow/index.d.ts +3 -3
  365. package/dist/workflow/index.js +5 -5
  366. package/dist/workflow-sdk/index.d.ts +5 -5
  367. package/dist/{wrap-C5jC6sKI.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
  368. package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
  369. package/package.json +22 -11
  370. package/schemas/cli-result-v1.json +1 -0
  371. package/schemas/cloud-api-v1.json +152 -7
  372. package/schemas/connector-v1.json +8 -0
  373. package/schemas/supabase-claims-v1.json +5 -0
  374. package/schemas/supabase-manifest-v1.json +276 -75
  375. package/skills/permdock/SKILL.md +1 -0
  376. package/skills/permdock-agents/references/runtimes.md +3 -1
  377. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  378. package/skills/permdock-data/references/queries-and-rls.md +4 -1
  379. package/skills/permdock-tenancy/SKILL.md +1 -1
  380. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
  381. package/skills/permdock-wire/references/adapters.md +14 -0
  382. package/skills/permdock-wire/references/policy-options.md +1 -0
  383. package/dist/catalog-BoWglDPI.js +0 -1
  384. package/dist/collect-D7eQDffE.js +0 -1
  385. package/dist/index-Cp_ilKi1.d.ts +0 -91
  386. package/dist/load-BxEtwlBS.js +0 -1
  387. package/dist/output-files-B3IZJksC.js +0 -1
  388. package/dist/parse-Cxq0WxrA.js +0 -53
  389. package/dist/peer-C8swJ2GH.js +0 -50
  390. package/dist/powersync-BkWWCS1K.js +0 -538
  391. package/dist/powersync-MMJ2mI2q.js +0 -1
  392. package/dist/prompt-DfZLJLIn.js +0 -32
  393. package/dist/pull-CvpINcMK.js +0 -1
  394. package/dist/run-DDwUaJDU.js +0 -1
  395. package/dist/supabase-hook-CCw5m35C.js +0 -1
  396. package/dist/supautils-B6HYL9eL.js +0 -91
  397. package/dist/text-diff-BQcUapOb.js +0 -15
  398. package/dist/usage-CZpSQP6L.js +0 -1
  399. package/dist/watch--ovlPOc0.js +0 -1
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-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";
3
+ import { i as stepUpOf, o as statusProblem } from "../problem-details-cn5X30gZ.js";
4
+ import { t as describe } from "../describe-DZlnEtLy.js";
5
+ import { m as annotationsFor } from "../permission-registry-DpPtSKNZ.js";
6
+ import { t as actorMayCallTool } from "../delegation-C5rOdTp5.js";
7
7
  import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
8
- import { a as hasScope, c as withApp, i as challengeScope, o as scopesReaching } from "../permdock-BrAscV28.js";
8
+ import { i as challengeScope, l as withApp, o as hasScope, s as scopesReaching } from "../permdock-BfWEeMqk.js";
9
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";
10
+ import { t as composeWraps } from "../wrap-CiSc_KCq.js";
11
+ import { a as methodNotAllowed, c as problemResponse, 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-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";
13
+ import { r as mapClaimsToSubject } from "../map-claims-etGIS_Dv.js";
14
+ import { r as instanceOptions } from "../build-instance-DxE7czo9.js";
15
+ import { i as refusalText, n as createAgentKernel } from "../kernel-DVExUwkp.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-CMLN5xhn.js";
18
+ import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-reAhIzdl.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";
@@ -383,6 +383,13 @@ function requirePermission(kind, name, config) {
383
383
  if (!isRecord(permission) || typeof permission["key"] !== "string") throw new TypeError(`permdock/mcp: ${kind} ${name} has no permission; every guarded registration needs one.`);
384
384
  return permission;
385
385
  }
386
+ const UI_SCHEME = "ui://";
387
+ /** The MCP Apps view a tool links through `_meta.ui.resourceUri`. */
388
+ function uiResourceUri(meta) {
389
+ const ui = isRecord(meta) ? meta["ui"] : void 0;
390
+ const uri = isRecord(ui) ? ui["resourceUri"] : void 0;
391
+ return typeof uri === "string" && uri.startsWith(UI_SCHEME) ? uri : void 0;
392
+ }
386
393
  function guardUpdates(registered, wrap, rename, currentName) {
387
394
  const update = registered.update.bind(registered);
388
395
  registered.update = (updates) => {
@@ -400,21 +407,23 @@ function protectServer(checks, server, enforcement) {
400
407
  const toolScopes = /* @__PURE__ */ new Map();
401
408
  const prompts = /* @__PURE__ */ new Map();
402
409
  const resources = /* @__PURE__ */ new Map();
410
+ const views = /* @__PURE__ */ new Set();
411
+ const uiLinks = /* @__PURE__ */ new Map();
403
412
  const templates = [];
404
413
  const lastListed = boundedMap(SESSIONS_PER_SERVER);
405
414
  const toolPermission = (name) => tools.get(name);
406
415
  const toolDeclared = (name) => toolScopes.get(name);
407
416
  const promptPermission = (name) => prompts.get(name);
408
417
  const resourcePermission = (uri) => {
409
- const direct = resources.get(uri);
418
+ const direct = resources.get(uri) ?? uiLinks.get(uri)?.permission;
410
419
  if (direct !== void 0) return direct;
411
420
  return templates.find((entry) => entry.template.uriTemplate.match(uri) !== null)?.permission;
412
421
  };
413
422
  const templatePermission = (uriTemplate) => templates.find((entry) => entry.template.uriTemplate.toString() === uriTemplate)?.permission;
414
- const listFilter = (field, keyOf, permissionOf, remember) => async (result, rawContext) => {
423
+ const listFilter = (field, keyOf, permissionOf, remember, hidden = () => false) => async (result, rawContext) => {
415
424
  if (!isRecord(result) || !Array.isArray(result[field])) return result;
416
425
  const context = contextOf(rawContext);
417
- const entries = result[field];
426
+ const entries = result[field].filter((entry) => !hidden(keyOf(entry)));
418
427
  const shown = await visible(checks, context, permissionOf, entries.map(keyOf), remember ? toolDeclared : void 0, remember);
419
428
  const kept = entries.filter((entry) => shown.has(keyOf(entry)));
420
429
  if (remember) lastListed.set(sessionKey(context), [...shown].toSorted().join(","));
@@ -430,7 +439,7 @@ function protectServer(checks, server, enforcement) {
430
439
  const filters = {
431
440
  "tools/list": listFilter("tools", (entry) => entry.name, toolPermission, true),
432
441
  "prompts/list": listFilter("prompts", (entry) => entry.name, promptPermission, false),
433
- "resources/list": listFilter("resources", (entry) => entry.uri, resourcePermission, false),
442
+ "resources/list": listFilter("resources", (entry) => entry.uri, resourcePermission, false, (uri) => views.has(uri) && resourcePermission(uri) === void 0),
434
443
  "resources/templates/list": listFilter("resourceTemplates", (entry) => entry.uriTemplate, templatePermission, false)
435
444
  };
436
445
  const inner = server.server;
@@ -484,6 +493,9 @@ function protectServer(checks, server, enforcement) {
484
493
  };
485
494
  const registerTool = (name, config, handler) => {
486
495
  const permission = toolPermissionOf(name, config);
496
+ const view = uiResourceUri(config["_meta"]);
497
+ const linked = view === void 0 ? void 0 : uiLinks.get(view);
498
+ if (view !== void 0 && linked !== void 0 && linked.permission.key !== permission.key) throw new TypeError(`permdock/mcp: tools ${linked.tool} and ${name} link ${view} under different permissions; give the resource its own permission.`);
487
499
  const { permission: _permission, data, scopeChallenge, longRunning: rawLongRunning, oauthScopes: rawScopes, ...passthrough } = config;
488
500
  const load = data;
489
501
  const longRunning = rawLongRunning === true;
@@ -501,6 +513,10 @@ function protectServer(checks, server, enforcement) {
501
513
  }, wrapTool(tool, permission, reach, load, handler, longRunning));
502
514
  tools.set(name, permission);
503
515
  if (declared !== void 0) toolScopes.set(name, declared);
516
+ if (view !== void 0 && linked === void 0) uiLinks.set(view, {
517
+ tool: name,
518
+ permission
519
+ });
504
520
  guardUpdates(registered, (callback) => wrapTool(tool, permission, reach, load, callback, longRunning), (from, to) => {
505
521
  tools.delete(from);
506
522
  toolScopes.delete(from);
@@ -528,18 +544,30 @@ function protectServer(checks, server, enforcement) {
528
544
  };
529
545
  const originalResource = server.registerResource.bind(server);
530
546
  const registerResource = (name, uriOrTemplate, config, read) => {
531
- const permission = requirePermission("resource", name, config);
547
+ const own = config["permission"] === void 0 && typeof uriOrTemplate === "string" && uriOrTemplate.startsWith(UI_SCHEME) ? void 0 : requirePermission("resource", name, config);
548
+ /** A `ui://` view without its own permission takes the one of the tool linking it; unlinked, it denies. */
549
+ const permissionNow = () => own ?? (typeof uriOrTemplate === "string" ? uiLinks.get(uriOrTemplate)?.permission : void 0);
532
550
  const { permission: _permission, data, scopeChallenge, ...passthrough } = config;
533
551
  const load = data;
534
- const wrap = (callback) => guard(checks, permission, load, callback, (params) => params.slice(0, -1), throwRefusal, { capabilities });
552
+ const ownChallenge = scopeChallenge;
553
+ const wrap = (callback) => (...params) => {
554
+ const permission = permissionNow();
555
+ if (permission === void 0) return Promise.reject(/* @__PURE__ */ new Error(`Denied: resource ${name} is linked to no guarded tool.`));
556
+ return guard(checks, permission, load, callback, (args) => args.slice(0, -1), throwRefusal, { capabilities })(...params);
557
+ };
535
558
  const registered = originalResource(name, uriOrTemplate, {
536
559
  ...passthrough,
537
- scopeChallenge: challengeFor(scopeChallenge, scopesReaching(checks.policy, permission), challengeScope(checks.policy, permission))
560
+ scopeChallenge: (context) => {
561
+ const permission = permissionNow();
562
+ return permission === void 0 ? ownChallenge?.(context) : challengeFor(ownChallenge, scopesReaching(checks.policy, permission), challengeScope(checks.policy, permission))(context);
563
+ }
538
564
  }, wrap(read));
539
- if (typeof uriOrTemplate === "string") resources.set(uriOrTemplate, permission);
540
- else templates.push({
565
+ if (typeof uriOrTemplate === "string") {
566
+ if (own === void 0) views.add(uriOrTemplate);
567
+ else resources.set(uriOrTemplate, own);
568
+ } else if (own !== void 0) templates.push({
541
569
  template: uriOrTemplate,
542
- permission
570
+ permission: own
543
571
  });
544
572
  guardUpdates(registered, wrap);
545
573
  return registered;
@@ -628,4 +656,105 @@ function createPermDock(policy, given) {
628
656
  return { protectServer: ((server, enforcement) => protectServer(checks, server, enforcement)) };
629
657
  }
630
658
  //#endregion
631
- export { APPROVAL_META_KEY, createPermDock, subjectFromMcp };
659
+ //#region src/mcp/resource-guard.ts
660
+ /** The `error_description` of every `invalid_token` challenge (RFC 6750 section 3.1). */
661
+ const INVALID_TOKEN = "The access token is invalid";
662
+ const BEARER = /^Bearer +([\w~+/.-]+=*)$/iu;
663
+ function tokenScopes(claims) {
664
+ const { scope, scp } = claims;
665
+ if (typeof scope === "string") return scope.split(" ").filter((name) => name !== "");
666
+ return Array.isArray(scp) ? scp.filter((name) => typeof name === "string") : [];
667
+ }
668
+ function refuse(status, challenge, detail) {
669
+ return {
670
+ ok: false,
671
+ response: problemResponse(statusProblem(status, detail), void 0, void 0, { "WWW-Authenticate": challenge })
672
+ };
673
+ }
674
+ /**
675
+ * The resource-server check in front of an MCP endpoint (MCP authorization,
676
+ * RFC 6750, RFC 9728): reads the bearer token from `Authorization`, verifies
677
+ * it for `resource`, refuses a revoked one and checks `scopes`. It answers
678
+ * the `McpAuthInfo` the SDK's handlers read, or the `401` or `403` response
679
+ * with a `WWW-Authenticate` challenge naming the metadata URL. A token in the
680
+ * query string is never read. Never throws.
681
+ */
682
+ function mcpResourceGuard(options) {
683
+ const resource = new URL(String(options.resource));
684
+ const resourceMetadata = options.resourceMetadataUrl ?? protectedResourceMetadataUrl(resource);
685
+ const required = options.scopes ?? [];
686
+ const invalid = () => refuse(401, bearerChallenge({
687
+ error: "invalid_token",
688
+ description: INVALID_TOKEN,
689
+ resourceMetadata
690
+ }), "invalid access token");
691
+ return async (request) => {
692
+ const header = request.headers.get("authorization");
693
+ if (header === null || header.trim() === "") return refuse(401, `Bearer resource_metadata="${resourceMetadata}"`, "access token required");
694
+ const token = BEARER.exec(header.trim())?.[1];
695
+ if (token === void 0) return invalid();
696
+ let claims;
697
+ try {
698
+ const verified = await options.verifier.verify(token, compact({
699
+ audience: resource.href,
700
+ issuer: options.issuer
701
+ }));
702
+ if (!verified.ok) return invalid();
703
+ claims = verified.claims;
704
+ if (options.revoked !== void 0 && await options.revoked(claims)) return invalid();
705
+ } catch {
706
+ return invalid();
707
+ }
708
+ const scopes = tokenScopes(claims);
709
+ if (required.some((scope) => !scopes.includes(scope))) return refuse(403, bearerChallenge({
710
+ error: "insufficient_scope",
711
+ scopes: required,
712
+ resourceMetadata
713
+ }), "insufficient scope");
714
+ const clientId = claims["client_id"] ?? claims["azp"];
715
+ return {
716
+ ok: true,
717
+ authInfo: compact({
718
+ token,
719
+ clientId: typeof clientId === "string" ? clientId : void 0,
720
+ scopes,
721
+ expiresAt: claims.exp,
722
+ resource,
723
+ resourceMetadataUrl: resourceMetadata,
724
+ extra: { claims }
725
+ })
726
+ };
727
+ };
728
+ }
729
+ /**
730
+ * The RFC 9728 Protected Resource Metadata document as a Fetch handler, for
731
+ * `/.well-known/oauth-protected-resource<path>`. `bearer_methods_supported`
732
+ * is `header`, the only method `mcpResourceGuard` reads. Any origin may read it.
733
+ */
734
+ function protectedResourceMetadata(options) {
735
+ const body = JSON.stringify(compact({
736
+ resource: new URL(String(options.resource)).href,
737
+ authorization_servers: options.authorizationServers,
738
+ scopes_supported: options.scopesSupported,
739
+ bearer_methods_supported: ["header"],
740
+ resource_name: options.resourceName,
741
+ resource_documentation: options.resourceDocumentation
742
+ }));
743
+ return (request) => {
744
+ if (request.method === "OPTIONS") return new Response(null, {
745
+ status: 204,
746
+ headers: {
747
+ "access-control-allow-origin": "*",
748
+ "access-control-allow-methods": "GET, OPTIONS"
749
+ }
750
+ });
751
+ if (request.method !== "GET" && request.method !== "HEAD") return methodNotAllowed("GET, HEAD, OPTIONS");
752
+ return new Response(request.method === "HEAD" ? null : body, { headers: {
753
+ "content-type": "application/json",
754
+ "access-control-allow-origin": "*",
755
+ "cache-control": "public, max-age=3600"
756
+ } });
757
+ };
758
+ }
759
+ //#endregion
760
+ export { APPROVAL_META_KEY, createPermDock, mcpResourceGuard, protectedResourceMetadata, subjectFromMcp };
@@ -1,15 +1,15 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
2
  import { i as dateAt } from "./time-DkWjdL98.js";
3
- import { a as describeError } from "./errors-CWTY6uih.js";
3
+ import { a as describeError } from "./errors-DpP_U6Bf.js";
4
4
  import { o as sqlFiles } from "./files-D_JIzUrP.js";
5
- import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
6
- import "./sources-vs5dGOsS.js";
5
+ import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B96movIM.js";
6
+ import "./sources-B-zYB4GS.js";
7
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";
11
- import { o as sqlStatements } from "./deciding-columns-Sq12mEA6.js";
12
- import { i as retireSql, r as retirePlan } from "./retire-CALjIQ7e.js";
8
+ import { r as refuseDirty, t as applyFiles } from "./files-acUbNwWt.js";
9
+ import { f as writeOutputFiles, n as dataMigrationFile } from "./output-files-CCMdcFWb.js";
10
+ import { r as HELPERS } from "./shared-fMKOv8hP.js";
11
+ import { o as sqlStatements } from "./deciding-columns-DRo2QM6E.js";
12
+ import { i as retireSql, r as retirePlan } from "./retire-Wj6dkyDE.js";
13
13
  import { existsSync, readFileSync } from "node:fs";
14
14
  import { relative, resolve } from "node:path";
15
15
  import { parse } from "pgsql-parser";
@@ -84,6 +84,29 @@ function callEnd(text, start) {
84
84
  }
85
85
  return -1;
86
86
  }
87
+ /** The top-level arguments of the call at `start`, as written; `end` is past its closing paren. */
88
+ function argTexts(text, start, end) {
89
+ const open = text.indexOf("(", start);
90
+ const args = [];
91
+ let from = open + 1;
92
+ let depth = 0;
93
+ for (let index = open; index < end; index += 1) {
94
+ const char = text[index];
95
+ if (char === "'" || char === "\"") {
96
+ index = Math.max(text.indexOf(char, index + 1), index);
97
+ continue;
98
+ }
99
+ if (char === "(" || char === "[") depth += 1;
100
+ else if (char === ")" || char === "]") {
101
+ depth -= 1;
102
+ if (depth === 0) args.push(text.slice(from, index));
103
+ } else if (char === "," && depth === 1) {
104
+ args.push(text.slice(from, index));
105
+ from = index + 1;
106
+ }
107
+ }
108
+ return args.map((arg) => arg.trim());
109
+ }
87
110
  const IDENTIFIER = String.raw`(?:"(?:[^"]|"")+"|[A-Za-z_][\w$]*)`;
88
111
  const COLUMN = new RegExp(String.raw`${IDENTIFIER}(?:\s*\.\s*${IDENTIFIER})*`, "uy");
89
112
  function columnText(text, start) {
@@ -125,6 +148,8 @@ var Rewriter = class {
125
148
  #target;
126
149
  #text;
127
150
  #at;
151
+ /** The written arguments of the call being rewritten. */
152
+ #args = [];
128
153
  constructor(config, target, text) {
129
154
  this.#config = config;
130
155
  this.#target = target;
@@ -146,9 +171,12 @@ var Rewriter = class {
146
171
  if (this.#target.granted.get(scope)?.has(key) !== true) return skip("not-granted-on-scope", [...this.#target.granted.values()].some((keys) => keys.has(key)) ? `no role grants ${key} on ${scope}, so the helper would always deny` : `${key} has no unconditional allow row in role_permissions: a conditional, time-bounded or deny-mixed grant splits its grant key, so the helper would always deny`);
147
172
  return { to: literal(key) };
148
173
  }
149
- #column(arg) {
174
+ #column(arg, index) {
150
175
  const location = child(child(arg, "ColumnRef"), "location");
151
- if (typeof location !== "number") return skip("not-a-column", "the id is an expression, not a plain column; rewrite it by hand");
176
+ if (typeof location !== "number") {
177
+ const written = this.#args[index];
178
+ return written === void 0 || written === "" ? skip("not-a-column", "the id is an expression whose text could not be read; rewrite it by hand") : { to: `(${written})` };
179
+ }
152
180
  const text = columnText(this.#text, this.#at(location));
153
181
  return text === void 0 ? skip("not-a-column", "the id could not be read as a column") : { to: text };
154
182
  }
@@ -158,8 +186,8 @@ var Rewriter = class {
158
186
  const key = this.#key(keyArg, scope);
159
187
  return "to" in key ? { to: `${helper}(${key.to})` } : key;
160
188
  }
161
- #row(scope, idArg, keyArg) {
162
- const column = this.#column(idArg);
189
+ #row(scope, idArg, keyArg, idIndex) {
190
+ const column = this.#column(idArg, idIndex);
163
191
  if (!("to" in column)) return column;
164
192
  const ids = this.#ids(scope, keyArg);
165
193
  return "to" in ids ? { to: `(${column.to} in (select ${ids.to}))` } : ids;
@@ -175,7 +203,7 @@ var Rewriter = class {
175
203
  #membership(scope, idArg) {
176
204
  const helper = this.#helper(`member_${scope}_ids`);
177
205
  if (helper === void 0) return skip("missing-helper", `rls generate writes no member_${scope}_ids: ${scope} has no membership source`);
178
- const column = this.#column(idArg);
206
+ const column = this.#column(idArg, 0);
179
207
  return "to" in column ? { to: `(${column.to} in (select ${helper}()))` } : column;
180
208
  }
181
209
  #role(scope, idArg, roleArgs) {
@@ -190,7 +218,7 @@ var Rewriter = class {
190
218
  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
219
  mapped.push(declared);
192
220
  }
193
- const column = this.#column(idArg);
221
+ const column = this.#column(idArg, 0);
194
222
  return "to" in column ? { to: `(${column.to} in (select ${helper}(array[${mapped.map(literal).join(", ")}])))` } : column;
195
223
  }
196
224
  #scoped(args, selected) {
@@ -198,14 +226,15 @@ var Rewriter = class {
198
226
  const named = stringConst(scopeArg);
199
227
  if (named === void 0) return skip("unknown-scope", "the scope is not a string literal; rewrite it by hand");
200
228
  if (this.#config.globalScopes?.includes(named) === true || isNullConst(idArg)) return this.#global(keyArg, selected);
201
- return this.#row(this.#config.scopes?.[named] ?? named, idArg, keyArg);
229
+ return this.#row(this.#config.scopes?.[named] ?? named, idArg, keyArg, 1);
202
230
  }
203
231
  /** `selected`: the call is already a `select` target, so `permdock_has` needs no wrapping subquery. */
204
232
  rewrite(call, selected) {
205
233
  const { helper, args } = call;
234
+ this.#args = argTexts(this.#text, call.start, call.end);
206
235
  switch (helper.form) {
207
236
  case "ids": return this.#ids(helper.scope, args[0]);
208
- case "row": return this.#row(helper.scope, args[0], args[1]);
237
+ case "row": return this.#row(helper.scope, args[0], args[1], 0);
209
238
  case "membership": return this.#membership(helper.scope, args[0]);
210
239
  case "role": return this.#role(helper.scope, args[0], args.slice(1));
211
240
  case "scoped": return this.#scoped(args, selected);
@@ -246,6 +275,24 @@ function bodyStrings(statement) {
246
275
  }
247
276
  return found;
248
277
  }
278
+ /** What `call`, written inside a function body, becomes: the rewrite that its place keeps from being applied. */
279
+ async function suggest(call, config, target) {
280
+ const sql = `select ${call}`;
281
+ let tree;
282
+ try {
283
+ tree = await parse(sql);
284
+ } catch {
285
+ return;
286
+ }
287
+ const target0 = list(child(child(child(list(child(tree, "stmts"))[0], "stmt"), "SelectStmt"), "targetList"))[0];
288
+ const node = child(child(child(target0, "ResTarget"), "val"), "FuncCall");
289
+ if (!isRecord(node)) return;
290
+ const rewriter = new Rewriter(config, target, sql);
291
+ const found = rewriter.call(node);
292
+ if (found === void 0 || found.end === -1) return;
293
+ const outcome = rewriter.rewrite(found, true);
294
+ return "to" in outcome ? outcome.to : void 0;
295
+ }
249
296
  /** Rewrites the configured helper calls in one file's policies; everything else is reported. */
250
297
  async function migrateSql(file, text, config, target) {
251
298
  const rewrites = [];
@@ -332,13 +379,19 @@ async function migrateSql(file, text, config, target) {
332
379
  if (kind !== void 0 && BODY_STATEMENTS.has(kind)) {
333
380
  for (const body of bodyStrings(child(statement, kind))) {
334
381
  const bodyStart = text.indexOf(body, statementStart);
335
- for (const match of body.matchAll(called)) skipped.push({
336
- file,
337
- line: lineOf(text, (bodyStart === -1 ? statementStart : bodyStart) + (match.index ?? 0)),
338
- call: match[1] ?? "",
339
- reason: "function-body",
340
- detail: "the call is inside a function body, which runs with its own privileges; rewrite it by hand"
341
- });
382
+ for (const match of body.matchAll(called)) {
383
+ const matchAt = match.index ?? 0;
384
+ const end = callEnd(body, matchAt);
385
+ const suggestion = end === -1 ? void 0 : await suggest(body.slice(matchAt, end), config, target);
386
+ skipped.push({
387
+ file,
388
+ line: lineOf(text, (bodyStart === -1 ? statementStart : bodyStart) + matchAt),
389
+ call: match[1] ?? "",
390
+ reason: "function-body",
391
+ detail: "the call is inside a function body, which runs with its own privileges; rewrite it by hand",
392
+ ...suggestion === void 0 ? {} : { suggestion }
393
+ });
394
+ }
342
395
  }
343
396
  continue;
344
397
  }
@@ -359,7 +412,7 @@ function describeRetire(plan) {
359
412
  });
360
413
  }
361
414
  function describe(report, write) {
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}`)];
415
+ 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}${item.suggestion === void 0 ? "" : `; use ${item.suggestion}`}`)];
363
416
  const files = new Set(report.rewrites.map((item) => item.file)).size;
364
417
  const unknown = report.skipped.filter((item) => item.reason === "unknown-key").length;
365
418
  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"}`);
@@ -1,9 +1,9 @@
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";
1
+ import { T as Policy, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
4
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";
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-C4gZUEZy.js";
6
+ import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
7
7
  import { r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
8
8
  import { CanActivate, DynamicModule, ExceptionFilter, ExecutionContext, Type } from "@nestjs/common";
9
9
  //#region src/nest/http.d.ts
@@ -2,9 +2,9 @@ import { t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as PermDockValidationError } from "../validation-error-ZfUHbKvf.js";
3
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 { 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";
5
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
6
+ import { t as problemFromError } from "../map-error-BQGyDm_M.js";
7
+ import { a as socketConnection, r as bindKernel } from "../bind-D1nO6fiC.js";
8
8
  import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
9
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";
@@ -1,12 +1,12 @@
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";
1
+ import { Bn as DenialReason, Gt as Snapshot, Ln as Decision, T as Policy, j as PolicyVocabulary, lr as Subject, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
4
+ import { m as ApprovalStore } from "../types-DC44-hqb.js";
5
+ import { t as InstanceOptions } from "../instance-options-CU0YQCLH.js";
6
+ import { n as PermDockWrap } from "../wrap-B6R0cMRL.js";
7
+ import { o as OtelWrap } from "../types-CIeZcG8v.js";
8
+ import { n as DescribeMessages } from "../describe-O0SwYIK8.js";
9
+ import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-Pahd3IYJ.js";
10
10
  import { ReactElement, ReactNode } from "react";
11
11
  //#region src/next/types.d.ts
12
12
  type NextSubjectInput = unknown;
@@ -1,9 +1,9 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { c as withApp } from "../permdock-BrAscV28.js";
3
- import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
4
- import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-DZHQ0KF6.js";
5
- import { n as resolveOrNull, t as buildInstance } from "../build-instance-Bu_eDqYw.js";
6
- import { o as evaluationsHandler, v as NO_GRANT } from "../evaluations-beAooV0n.js";
2
+ import { l as withApp } from "../permdock-BfWEeMqk.js";
3
+ import { n as wrapPermDock } from "../wrap-CiSc_KCq.js";
4
+ import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-DT2Kx1F8.js";
5
+ import { n as resolveOrNull, t as buildInstance } from "../build-instance-DxE7czo9.js";
6
+ import { _ as NO_GRANT, o as evaluationsHandler } from "../evaluations-DReoiVBw.js";
7
7
  import { cache } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
  import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
@@ -1,4 +1,4 @@
1
- import { a as PermDockPluginOptions } from "../types-Dfv0aTER.js";
1
+ import { a as PermDockPluginOptions } from "../types-BWZybqs9.js";
2
2
  //#region src/cli/plugin.d.ts
3
3
  /** Any object: Next's `NextConfig` is an interface, so no index signature. */
4
4
  type NextConfigLike = object;
@@ -1,5 +1,5 @@
1
- import { a as describeError } from "../errors-CWTY6uih.js";
2
- import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-vea54PRw.js";
1
+ import { a as describeError } from "../errors-DpP_U6Bf.js";
2
+ import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-C-4VmFlL.js";
3
3
  //#region src/cli/plugin.ts
4
4
  const PHASE_BUILD = "phase-production-build";
5
5
  const PHASE_DEV = "phase-development-server";
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
5
- import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
5
+ import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
6
6
  import { i as toRequest, n as isServerResponse, r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
7
7
  import { IncomingMessage, ServerResponse } from "node:http";
8
8
  //#region src/node/create.d.ts
@@ -1,5 +1,5 @@
1
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
2
- import { r as bindKernel } from "../bind-CAvgUuKs.js";
1
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
2
+ import { r as bindKernel } from "../bind-D1nO6fiC.js";
3
3
  import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-ujKm0JXE.js";
4
4
  //#region src/node/create.ts
5
5
  const nodeRequest = (req) => req;
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { u as ApprovalRequest } from "../types-BdtSDbBO.js";
5
- import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-CBMmFie-.js";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
4
+ import { u as ApprovalRequest } from "../types-DC44-hqb.js";
5
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-UTnUVETj.js";
6
6
  //#region src/openai/create.d.ts
7
7
  /** The app context passed to `run(agent, input, { context })`. */
8
8
  type OpenAiContext = {
@@ -1,7 +1,7 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { c as withApp } from "../permdock-BrAscV28.js";
3
- import { t as approvalTokenOf } from "../kernel-D0NVb1cK.js";
4
- import { t as agentRuntime } from "../create-CGm28gyI.js";
2
+ import { l as withApp } from "../permdock-BfWEeMqk.js";
3
+ import { t as approvalTokenOf } from "../kernel-DVExUwkp.js";
4
+ import { t as agentRuntime } from "../create-Cb86Z8Im.js";
5
5
  //#region src/openai/create.ts
6
6
  function appContext(runContext) {
7
7
  const context = runContext?.context;
@@ -1,6 +1,6 @@
1
- import { T as Policy, rr as Principal, ur as Condition } from "../policy-types-n0uRTsW8.js";
2
- import { E as PermissionTree, w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { a as ProblemDetails } from "../errors-DH5QEGXh.js";
1
+ import { T as Policy, mr as Condition, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { f as PermissionTree, u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { a as ProblemDetails } from "../errors-B_Qg9D3e.js";
4
4
  import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
5
5
  //#region src/openapi/types.d.ts
6
6
  type OpenApiTarget = "3.1" | "3.2" | "3.3";
@@ -158,6 +158,14 @@ type SecurityForOptions = {
158
158
  readonly scheme?: string;
159
159
  /** Any one of the permissions suffices: one requirement per scope instead of one with every scope. */
160
160
  readonly anyOf?: boolean;
161
+ readonly security?: true;
162
+ };
163
+ /** `security: false` emits only `x-permdock-permissions`, for an API whose `security` is set elsewhere, such as OIDC-only bearer auth. */
164
+ type SecurityExtensionOptions = Omit<SecurityForOptions, "security"> & {
165
+ readonly security: false;
166
+ };
167
+ type SecurityExtensionFor = {
168
+ readonly "x-permdock-permissions": readonly string[];
161
169
  };
162
170
  type SecurityFor = {
163
171
  readonly security: readonly OpenApiSecurityRequirement[];
@@ -171,6 +179,8 @@ export declare function permissionsExtension(permissions: Permission | readonly
171
179
  * Unlike `permdock openapi emit`, it never drops `security` for a public
172
180
  * permission: that needs the policy.
173
181
  */
182
+ export declare function securityFor(permission: Permission | readonly Permission[], options: SecurityExtensionOptions): SecurityExtensionFor;
174
183
  export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions): SecurityFor;
184
+ export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions | SecurityExtensionOptions): SecurityFor | SecurityExtensionFor;
175
185
  //#endregion
176
- export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityFor, SecurityForOptions, SecurityProfileName };
186
+ export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityExtensionFor, SecurityExtensionOptions, SecurityFor, SecurityForOptions, SecurityProfileName };
@@ -1,3 +1,3 @@
1
1
  import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-8ILTftC9.js";
2
- import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-B7HZ0f-r.js";
2
+ import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-Ddb4628T.js";
3
3
  export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };