permdock 0.6.0 → 0.8.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 (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -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-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
4
+ import { u as ApprovalRequest } from "../types-B_tiYvk8.js";
5
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BSNrVuxh.js";
6
6
  //#region src/openai/create.d.ts
7
7
  /** The app context passed to `run(agent, input, { context })`. */
8
8
  type OpenAiContext = {
@@ -11,7 +11,10 @@ type OpenAiContext = {
11
11
  readonly permdockApproval?: string;
12
12
  readonly [key: string]: unknown;
13
13
  };
14
- /** Structural `RunContext` from `@openai/agents`: the app context sits under `context`. */
14
+ /**
15
+ * Structural `RunContext` from `@openai/agents`: the app context sits under
16
+ * `context`.
17
+ */
15
18
  type OpenAiRunContext = {
16
19
  readonly context?: unknown;
17
20
  };
@@ -31,7 +34,10 @@ type OpenAiInterruption = {
31
34
  readonly arguments?: unknown;
32
35
  };
33
36
  };
34
- /** Structural `RunState` from `@openai/agents`. */
37
+ /**
38
+ * Structural `RunState` from `@openai/agents`. Its methods take the SDK's own
39
+ * interruption item, so they stay bivariant in `TItem`.
40
+ */
35
41
  type OpenAiRunState<TItem> = {
36
42
  approve(item: TItem, options?: {
37
43
  alwaysApprove?: boolean;
@@ -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-L-_I_3zP.js";
3
+ import { t as approvalTokenOf } from "../kernel-C-fYydV2.js";
4
+ import { t as agentRuntime } from "../create-Cq4Uox0f.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-CCiDRZBH.js";
2
+ import { f as PermissionTree, u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as ProblemDetails } from "../errors-zi_4T-rx.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";
@@ -54,7 +54,10 @@ type OverlayOperation = {
54
54
  type OpenApiOverlayOptions = {
55
55
  readonly extends?: string;
56
56
  readonly version?: OverlayVersion;
57
- /** The operations to cover; without them, one per permission whose `operationId` is the permission key. */
57
+ /**
58
+ * The operations to cover; without them, one per permission whose
59
+ * `operationId` is the permission key.
60
+ */
58
61
  readonly operations?: readonly OverlayOperation[];
59
62
  };
60
63
  type OpenApiPermDock = {
@@ -67,7 +70,10 @@ type OpenApiPermDock = {
67
70
  }) => OpenApiDescribe;
68
71
  readonly spec: (permission: Permission | readonly Permission[]) => (operation: Readonly<Record<string, unknown>>) => Record<string, unknown>;
69
72
  readonly overlay: (options?: OpenApiOverlayOptions) => Record<string, unknown>;
70
- /** One requirement per distinct scope set; without `scopeSets`, one per permission. */
73
+ /**
74
+ * One requirement per distinct scope set; without `scopeSets`, one per
75
+ * permission.
76
+ */
71
77
  readonly securityProfileRequirements: (scopeSets?: readonly (readonly string[])[]) => Readonly<Record<string, unknown>> | undefined;
72
78
  readonly catalog: () => Record<string, unknown>;
73
79
  };
@@ -94,9 +100,9 @@ export declare function openapiVersion(target: OpenApiTarget): string;
94
100
  //#endregion
95
101
  //#region src/openapi/operations.d.ts
96
102
  /**
97
- * One declared operation: a permission, or a permission with the operation id
98
- * a tool name uses and the OAuth scopes that reach it, or only OAuth scopes
99
- * for a route that checks no permission (`protect(null)`).
103
+ * One declared operation: a permission, or a permission with the operation id a
104
+ * tool name uses and the OAuth scopes that reach it, or only OAuth scopes for a
105
+ * route that checks no permission (`protect(null)`).
100
106
  */
101
107
  type OperationEntry = Permission | {
102
108
  readonly permission: Permission;
@@ -114,31 +120,34 @@ type OperationEntry = Permission | {
114
120
  */
115
121
  type OperationPermissions = {
116
122
  /**
117
- * The permission of a request: the declared operation whose method and
118
- * path template match, a literal segment winning over a `{param}`.
119
- * `undefined` for an undeclared operation, which a gate denies, and for an
120
- * operation that declares only OAuth scopes. A `HEAD` request matches the
121
- * `GET` entry of its path when no `HEAD` entry matches.
123
+ * The permission of a request: the declared operation whose method and path
124
+ * template match, a literal segment winning over a `{param}`. `undefined` for
125
+ * an undeclared operation, which a gate denies, and for an operation that
126
+ * declares only OAuth scopes. A `HEAD` request matches the `GET` entry of its
127
+ * path when no `HEAD` entry matches.
122
128
  */
123
- forRequest(method: string, path: string): Permission | undefined;
124
- /** The permission of an operation id; pass it as `permissionFor` when tool names are operation ids. */
125
- forOperation(id: string): Permission | undefined;
126
- oauthScopesForRequest(method: string, path: string): readonly string[] | undefined;
127
- oauthScopesForOperation(id: string): readonly string[] | undefined;
129
+ forRequest: (method: string, path: string) => Permission | undefined;
130
+ /**
131
+ * The permission of an operation id; pass it as `permissionFor` when tool
132
+ * names are operation ids.
133
+ */
134
+ forOperation: (id: string) => Permission | undefined;
135
+ oauthScopesForRequest: (method: string, path: string) => readonly string[] | undefined;
136
+ oauthScopesForOperation: (id: string) => readonly string[] | undefined;
128
137
  };
129
138
  /**
130
- * Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to
131
- * a permission. `base` is a prefix requests carry and the keys do not
139
+ * Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to a
140
+ * permission. `base` is a prefix requests carry and the keys do not
132
141
  * (`/api/v1`). A key that is not a method and a path throws.
133
142
  */
134
143
  export declare function operationPermissions(operations: Readonly<Record<string, OperationEntry>>, options?: {
135
144
  readonly base?: string;
136
145
  }): OperationPermissions;
137
146
  /**
138
- * The operation permissions an OpenAPI document declares: every operation
139
- * whose `x-permdock-permissions` names exactly one permission of `tree`, keyed
140
- * by its method, path and `operationId`. An operation naming none, several or
141
- * an unknown key is left out, so a gate denies it.
147
+ * The operation permissions an OpenAPI document declares: every operation whose
148
+ * `x-permdock-permissions` names exactly one permission of `tree`, keyed by its
149
+ * method, path and `operationId`. An operation naming none, several or an
150
+ * unknown key is left out, so a gate denies it.
142
151
  */
143
152
  export declare function operationPermissionsFromOpenApi(document: unknown, tree: PermissionTree, options?: {
144
153
  readonly base?: string;
@@ -146,24 +155,44 @@ export declare function operationPermissionsFromOpenApi(document: unknown, tree:
146
155
  //#endregion
147
156
  //#region src/openapi/problem-details.d.ts
148
157
  /**
149
- * The Problem Details body the adapters send on a denial, as a Standard
150
- * Schema with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
158
+ * The Problem Details body the adapters send on a denial, as a Standard Schema
159
+ * with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
151
160
  * Extension members pass through: RFC 9457 lets a problem type add them.
152
161
  */
153
162
  export declare const problemDetails: StandardSchemaV1<ProblemDetails> & StandardJSONSchemaV1<ProblemDetails>;
154
163
  //#endregion
155
164
  //#region src/openapi/security.d.ts
156
165
  type SecurityForOptions = {
157
- /** The security scheme name; defaults to `oauth2`, the name the adapters' `openapi.securitySchemes()` declares. */
166
+ /**
167
+ * The security scheme name; defaults to `oauth2`, the name the adapters'
168
+ * `openapi.securitySchemes()` declares.
169
+ */
158
170
  readonly scheme?: string;
159
- /** Any one of the permissions suffices: one requirement per scope instead of one with every scope. */
171
+ /**
172
+ * Any one of the permissions suffices: one requirement per scope instead of
173
+ * one with every scope.
174
+ */
160
175
  readonly anyOf?: boolean;
176
+ readonly security?: true;
177
+ };
178
+ /**
179
+ * `security: false` emits only `x-permdock-permissions`, for an API whose
180
+ * `security` is set elsewhere, such as OIDC-only bearer auth.
181
+ */
182
+ type SecurityExtensionOptions = Omit<SecurityForOptions, "security"> & {
183
+ readonly security: false;
184
+ };
185
+ type SecurityExtensionFor = {
186
+ readonly "x-permdock-permissions": readonly string[];
161
187
  };
162
188
  type SecurityFor = {
163
189
  readonly security: readonly OpenApiSecurityRequirement[];
164
190
  readonly "x-permdock-permissions": readonly string[];
165
191
  };
166
- /** The `x-permdock-permissions` value: the permission keys an operation enforces. */
192
+ /**
193
+ * The `x-permdock-permissions` value: the permission keys an operation
194
+ * enforces.
195
+ */
167
196
  export declare function permissionsExtension(permissions: Permission | readonly Permission[]): readonly string[];
168
197
  /**
169
198
  * An operation's `security` and `x-permdock-permissions`, from permission
@@ -171,6 +200,8 @@ export declare function permissionsExtension(permissions: Permission | readonly
171
200
  * Unlike `permdock openapi emit`, it never drops `security` for a public
172
201
  * permission: that needs the policy.
173
202
  */
203
+ export declare function securityFor(permission: Permission | readonly Permission[], options: SecurityExtensionOptions): SecurityExtensionFor;
174
204
  export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions): SecurityFor;
205
+ export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions | SecurityExtensionOptions): SecurityFor | SecurityExtensionFor;
175
206
  //#endregion
176
- export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityFor, SecurityForOptions, SecurityProfileName };
207
+ 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
- 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";
1
+ import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-nqarl3oE.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-BOsx0xn9.js";
3
3
  export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };
@@ -1,8 +1,8 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-Br4jSNVi.js";
3
- import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
2
+ import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-B8tYxPIt.js";
3
+ import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
4
4
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
5
- import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-8ILTftC9.js";
5
+ import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-nqarl3oE.js";
6
6
  //#region src/openapi/emit.ts
7
7
  function assertScheme(options) {
8
8
  if (options.scheme.type === "gnap") throw new TypeError(GNAP_RESERVED);
@@ -17,7 +17,10 @@ function grantsOf(policy, permissions) {
17
17
  function grantsAnyone(grant) {
18
18
  return (Array.isArray(grant.to) ? grant.to : [grant.to]).some((grantee) => grantee.kind === "anyone");
19
19
  }
20
- /** Every subject is granted it: an unconditional allow to `anyone()` and no deny. */
20
+ /**
21
+ * Every subject is granted it: an unconditional allow to `anyone()` and no
22
+ * deny.
23
+ */
21
24
  function isPublic(policy, permission) {
22
25
  const grants = grantsOf(policy, [permission]);
23
26
  return grants.every((grant) => grant.effect === "allow") && grants.some((grant) => grantsAnyone(grant) && grant.where === void 0 && grant.check === void 0 && grant.approval === void 0 && grant.closure === void 0 && grant.limit === void 0 && grant.purpose === void 0 && grant.viaOnly === void 0);
@@ -137,14 +140,17 @@ const FLOWS = [
137
140
  "clientCredentials",
138
141
  "deviceAuthorization"
139
142
  ];
140
- /** The client authentication methods FAPI 2.0 section 5.3.2.1 allows: sender-constrained, no shared secret. */
143
+ /**
144
+ * The client authentication methods FAPI 2.0 section 5.3.2.1 allows:
145
+ * sender-constrained, no shared secret.
146
+ */
141
147
  const FAPI2_AUTH_METHODS = ["private_key_jwt", "tls_client_auth"];
142
148
  function pascal(value) {
143
149
  return value.split(/[^A-Za-z0-9]+/u).filter((part) => part.length > 0).map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`).join("");
144
150
  }
145
151
  /**
146
- * One Security Profile Requirement per distinct scope set: `scopeSets` from
147
- * the operations, else one per permission.
152
+ * One Security Profile Requirement per distinct scope set: `scopeSets` from the
153
+ * operations, else one per permission.
148
154
  */
149
155
  function securityProfileRequirementsOf(policy, options, scopeSets) {
150
156
  if ((options.target ?? "3.2") !== "3.3" || options.securityProfile === void 0) return;
@@ -188,7 +194,10 @@ function jsonPathString(value) {
188
194
  function operationTarget(operationId) {
189
195
  return `$.paths.*[?@.operationId == ${jsonPathString(operationId)}]`;
190
196
  }
191
- /** The `sha-256:` digest of the sorted permission keys and scopes, so the same catalog gives the same Overlay. */
197
+ /**
198
+ * The `sha-256:` digest of the sorted permission keys and scopes, so the same
199
+ * catalog gives the same Overlay.
200
+ */
192
201
  function fingerprint(policy) {
193
202
  const lines = listPermissions(policy.permissions).map((leaf) => `${leaf.key} ${leaf.scope}`).toSorted();
194
203
  return sha256Digest(lines.join("\n"));
@@ -318,7 +327,10 @@ function segmentsOf(path) {
318
327
  function isParam(segment) {
319
328
  return segment.startsWith("{") && segment.endsWith("}");
320
329
  }
321
- /** The number of literal segments that match, or -1 when the template does not match. */
330
+ /**
331
+ * The number of literal segments that match, or -1 when the template does not
332
+ * match.
333
+ */
322
334
  function score(route, segments) {
323
335
  if (route.segments.length !== segments.length) return -1;
324
336
  let literal = 0;
@@ -339,8 +351,8 @@ function scopesOf(key, entry) {
339
351
  return Object.freeze([...entry.oauthScopes]);
340
352
  }
341
353
  /**
342
- * Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to
343
- * a permission. `base` is a prefix requests carry and the keys do not
354
+ * Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to a
355
+ * permission. `base` is a prefix requests carry and the keys do not
344
356
  * (`/api/v1`). A key that is not a method and a path throws.
345
357
  */
346
358
  function operationPermissions(operations, options = {}) {
@@ -400,10 +412,10 @@ function operationPermissions(operations, options = {}) {
400
412
  };
401
413
  }
402
414
  /**
403
- * The operation permissions an OpenAPI document declares: every operation
404
- * whose `x-permdock-permissions` names exactly one permission of `tree`, keyed
405
- * by its method, path and `operationId`. An operation naming none, several or
406
- * an unknown key is left out, so a gate denies it.
415
+ * The operation permissions an OpenAPI document declares: every operation whose
416
+ * `x-permdock-permissions` names exactly one permission of `tree`, keyed by its
417
+ * method, path and `operationId`. An operation naming none, several or an
418
+ * unknown key is left out, so a gate denies it.
407
419
  */
408
420
  function operationPermissionsFromOpenApi(document, tree, options = {}) {
409
421
  const operations = {};
@@ -491,8 +503,8 @@ function jsonSchema(options) {
491
503
  return structuredClone(JSON_SCHEMA);
492
504
  }
493
505
  /**
494
- * The Problem Details body the adapters send on a denial, as a Standard
495
- * Schema with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
506
+ * The Problem Details body the adapters send on a denial, as a Standard Schema
507
+ * with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
496
508
  * Extension members pass through: RFC 9457 lets a problem type add them.
497
509
  */
498
510
  const problemDetails = Object.freeze({ "~standard": Object.freeze({
@@ -512,18 +524,16 @@ function isList(permission) {
512
524
  function listOf(permission) {
513
525
  return isList(permission) ? permission : [permission];
514
526
  }
515
- /** The `x-permdock-permissions` value: the permission keys an operation enforces. */
527
+ /**
528
+ * The `x-permdock-permissions` value: the permission keys an operation
529
+ * enforces.
530
+ */
516
531
  function permissionsExtension(permissions) {
517
532
  return Object.freeze(listOf(permissions).map((leaf) => leaf.key));
518
533
  }
519
- /**
520
- * An operation's `security` and `x-permdock-permissions`, from permission
521
- * references alone. Needs no policy, so a contract package can import it.
522
- * Unlike `permdock openapi emit`, it never drops `security` for a public
523
- * permission: that needs the policy.
524
- */
525
534
  function securityFor(permission, options = {}) {
526
535
  const leaves = listOf(permission);
536
+ if (options.security === false) return Object.freeze({ "x-permdock-permissions": permissionsExtension(leaves) });
527
537
  const scheme = options.scheme ?? "oauth2";
528
538
  const security = options.anyOf === true && leaves.length > 0 ? leaves.map((leaf) => ({ [scheme]: [leaf.scope] })) : [{ [scheme]: leaves.map((leaf) => leaf.scope) }];
529
539
  return Object.freeze({
@@ -1,6 +1,6 @@
1
- import { c as missingInput } from "./errors-CWTY6uih.js";
1
+ import { c as missingInput } from "./errors-Vpu6rKHl.js";
2
2
  import { t as defineLeaf } from "./command-L8EstFNm.js";
3
- import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-C3DktBDY.js";
3
+ import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-DXjoTVbS.js";
4
4
  //#region src/cli/commands/openapi.ts
5
5
  const docFlag = { doc: {
6
6
  type: "string",
@@ -80,7 +80,7 @@ const emit = defineLeaf({
80
80
  }
81
81
  },
82
82
  async run(ctx, { flags }) {
83
- return (await import("./openapi-DD1SV-5-.js")).runOpenapi({
83
+ return (await import("./openapi-VeHHU2l9.js")).runOpenapi({
84
84
  cwd: ctx.cwd,
85
85
  config: ctx.config,
86
86
  rest: ["emit"],
@@ -122,8 +122,7 @@ const importDocument = defineLeaf({
122
122
  async run(ctx, { flags }) {
123
123
  const doc = given(flags.doc);
124
124
  if (doc === void 0) throw missingInput("openapi import", ["--doc"], "the OpenAPI document to import");
125
- const { runOpenapiImport } = await import("./import-CNV7I2Dw.js");
126
- return runOpenapiImport({
125
+ return (await import("./import-_YqhhwvX.js")).runOpenapiImport({
127
126
  cwd: ctx.cwd,
128
127
  doc,
129
128
  out: fileOut("openapi import", flags.out),
@@ -1,13 +1,13 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
3
- import { n as definePolicy } from "./policy-DbM5YYtV.js";
4
- import { i as configError } from "./errors-CWTY6uih.js";
5
- import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
6
- import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
7
- import { t as shortDiff } from "./text-diff-BQcUapOb.js";
8
- import { c as openapiVersion, o as createPermDock } from "./openapi-B7HZ0f-r.js";
9
- import { i as fileDrift } from "./output-files-DhRBBE4n.js";
10
- import { n as validateOverlay, t as validateOpenapi } from "./schema-yLuBWWsh.js";
2
+ import { a as getResource, n as findPermission } from "./permission-registry-B8tYxPIt.js";
3
+ import { r as definePolicy } from "./policy-CLQ8__GF.js";
4
+ import { i as configError } from "./errors-Vpu6rKHl.js";
5
+ import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-BSjrtIHw.js";
6
+ import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
7
+ import { t as shortDiff } from "./text-diff-BtfSmdUo.js";
8
+ import { c as openapiVersion, o as createPermDock } from "./openapi-BOsx0xn9.js";
9
+ import { i as fileDrift } from "./output-files-BIQ_9pIs.js";
10
+ import { n as validateOverlay, t as validateOpenapi } from "./schema-Dst9I9Gs.js";
11
11
  import { existsSync } from "node:fs";
12
12
  import { resolve } from "node:path";
13
13
  //#region src/cli/openapi/openapi.ts
@@ -17,7 +17,10 @@ function mergeRecord(base, extra) {
17
17
  for (const [key, value] of Object.entries(extra)) result[key] = value;
18
18
  return result;
19
19
  }
20
- /** Keeps what the document already says about a scheme (flow URLs, other flows, description); PermDock owns the scopes. */
20
+ /**
21
+ * Keeps what the document already says about a scheme (flow URLs, other flows,
22
+ * description); PermDock owns the scopes.
23
+ */
21
24
  function mergeSchemes(existing, emitted) {
22
25
  const result = {};
23
26
  for (const [name, scheme] of Object.entries(emitted)) {
@@ -68,7 +71,10 @@ function leavesOf(policy, keys) {
68
71
  return leaf;
69
72
  });
70
73
  }
71
- /** Operations carrying `x-permdock-permissions`, joined by `operationId`; those without one are findings. */
74
+ /**
75
+ * Operations carrying `x-permdock-permissions`, joined by `operationId`; those
76
+ * without one are findings.
77
+ */
72
78
  function overlayOperations(document, policy) {
73
79
  const operations = [];
74
80
  const unnamed = [];
@@ -94,7 +100,10 @@ function overlayOperations(document, policy) {
94
100
  secured
95
101
  };
96
102
  }
97
- /** `instance` when any listed permission acts on one row; the id is the last path template parameter. */
103
+ /**
104
+ * `instance` when any listed permission acts on one row; the id is the last
105
+ * path template parameter.
106
+ */
98
107
  function arityOf(policy, leaves, path) {
99
108
  if (!leaves.some((leaf) => getResource(policy.permissions, leaf.resource)?.instanceActions.has(leaf.action) === true)) return { kind: "collection" };
100
109
  const parameter = [...path.matchAll(/\{([^}]+)\}/gu)].at(-1)?.[1];
@@ -213,11 +222,11 @@ async function runOpenapi(input) {
213
222
  code: 1,
214
223
  output: `openapi drift: the source already sets security the Overlay replaces on ${covered.secured.join(", ")}`
215
224
  };
216
- const result = covered !== void 0 ? openapi.overlay({
225
+ const result = covered === void 0 ? applyDocument(parsed, policy, openapi, input.arity === true, input.target) : openapi.overlay({
217
226
  extends: input.doc,
218
227
  version: input.overlay,
219
228
  operations: covered.operations
220
- }) : applyDocument(parsed, policy, openapi, input.arity === true, input.target);
229
+ });
221
230
  const conformance = outputConformance(parsed, result, input.format, input.overlay);
222
231
  if (conformance !== void 0) return {
223
232
  code: 1,
@@ -1,4 +1,4 @@
1
- import { n as OPERATION_RISKS } from "./permissions-B-wCP5ZC.js";
1
+ import { n as OPERATION_RISKS } from "./permissions-CVXmRILq.js";
2
2
  //#region src/catalog/operation-findings.ts
3
3
  function rank(risk) {
4
4
  return OPERATION_RISKS.indexOf(risk ?? "low");
@@ -8,8 +8,8 @@ function requiresApproval(catalog, permission) {
8
8
  }
9
9
  /**
10
10
  * Operations, matched by name, whose `meta.risk` rose or whose permission
11
- * stopped requiring approval between two catalogs. A new or removed
12
- * operation is not a finding.
11
+ * stopped requiring approval between two catalogs. A new or removed operation
12
+ * is not a finding.
13
13
  */
14
14
  function operationFindings(previous, next) {
15
15
  const before = new Map((previous.operations ?? []).map((operation) => [operation.name, operation]));
@@ -1,4 +1,4 @@
1
- import { E as PermissionTree, w as Permission } from "./vocabulary-CN8H_9UF.js";
1
+ import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
2
2
  //#region src/core/operation-risks.d.ts
3
3
  type OperationRisk = "low" | "medium" | "high" | "critical";
4
4
  /** Every `meta.risk` level, lowest first. */
@@ -7,7 +7,10 @@ declare function isOperationRisk(value: unknown): value is OperationRisk;
7
7
  //#endregion
8
8
  //#region src/core/operations.d.ts
9
9
  type OperationEffect = "read" | "write" | "delete" | "send" | "spend" | "external";
10
- /** Plain JSON a host reads to label, confirm or gate an operation; PermDock never decides on it. */
10
+ /**
11
+ * Plain JSON a host reads to label, confirm or gate an operation; PermDock
12
+ * never decides on it.
13
+ */
11
14
  type OperationMeta = {
12
15
  readonly risk?: OperationRisk;
13
16
  /** What running the operation does, each effect at most once. */
@@ -15,9 +18,9 @@ type OperationMeta = {
15
18
  readonly title?: string;
16
19
  };
17
20
  /**
18
- * Loads the row the check runs on from the operation's input, the binding
19
- * every surface shares. The row is validated against the permission's
20
- * resource schema like any request-derived data (invariant 9).
21
+ * Loads the row the check runs on from the operation's input, the binding every
22
+ * surface shares. The row is validated against the permission's resource schema
23
+ * like any request-derived data (invariant 9).
21
24
  */
22
25
  type OperationData<TInput = never> = {
23
26
  load(input: TInput): unknown;
@@ -32,8 +35,8 @@ type OperationDefinition = {
32
35
  };
33
36
  /**
34
37
  * A permission-bound action that agent tools, workflow nodes, MCP operations,
35
- * HTTP routes and chat commands read by name. `TInput` is the parameter type
36
- * of `data`; an operation without `data` takes `undefined`.
38
+ * HTTP routes and chat commands read by name. `TInput` is the parameter type of
39
+ * `data`; an operation without `data` takes `undefined`.
37
40
  */
38
41
  type Operation<TInput = unknown, TName extends string = string, TPermission extends Permission = Permission> = {
39
42
  readonly name: TName;
@@ -1,11 +1,44 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CKQiCnON.js";
6
- import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
7
- import { t as StreamProtectOptions } from "../stream-CeCMJmBB.js";
8
- import { Middleware } from "@orpc/server";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as OperationInput, t as Operation } from "../operations-Ci_rT6Uo.js";
4
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
5
+ import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
6
+ import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CIlpSA2G.js";
7
+ import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
8
+ import { t as StreamProtectOptions } from "../stream-ltuLdtTG.js";
9
+ import { AnySchema, MetaPlugin, Middleware, Procedure, Schema } from "@orpc/server";
10
+ import { StandardSchemaV1 } from "@standard-schema/spec";
11
+ //#region src/orpc/operations.d.ts
12
+ type OperationProcedureContext<TCtx extends object, V extends PolicyVocabulary = PolicyVocabulary> = TCtx & {
13
+ readonly permdock: PermDock<V>;
14
+ /** The row the operation's `data` loader read; `undefined` without one. */
15
+ readonly permdockData?: unknown;
16
+ };
17
+ type OperationRoute<TCtx extends object, TInput, V extends PolicyVocabulary = PolicyVocabulary> = {
18
+ readonly handler: (opts: {
19
+ readonly input: TInput;
20
+ readonly context: OperationProcedureContext<TCtx, V>;
21
+ }) => unknown;
22
+ } & ([TInput] extends [undefined] ? {
23
+ readonly input?: StandardSchemaV1<unknown, TInput>;
24
+ } : {
25
+ /** Required: the operation's `data` loader never sees raw input. */
26
+ readonly input: StandardSchemaV1<unknown, TInput>;
27
+ });
28
+ type OperationRoutes<TOperations extends Readonly<Record<string, Operation>>, TCtx extends object, V extends PolicyVocabulary = PolicyVocabulary> = { readonly [TName in keyof TOperations]: OperationRoute<TCtx, OperationInput<TOperations[TName]>, V>; };
29
+ type OperationsRouterOptions = {
30
+ /** oRPC meta plugins per operation, such as `openapi()` from `@orpc/openapi`. */
31
+ readonly meta?: (operation: Operation) => readonly MetaPlugin<AnySchema, AnySchema, Record<never, never>>[];
32
+ };
33
+ type InputSchemaOf<TRoute> = TRoute extends {
34
+ readonly input: infer TSchema extends AnySchema;
35
+ } ? TSchema : Schema<undefined>;
36
+ type OutputOf<TRoute> = TRoute extends {
37
+ readonly handler: (...args: never[]) => infer TResult;
38
+ } ? Awaited<TResult> : never;
39
+ type OperationsRouter<TCtx extends object, TRoutes> = { readonly [TName in keyof TRoutes]: Procedure<TCtx, any, InputSchemaOf<TRoutes[TName]>, Schema<OutputOf<TRoutes[TName]>>, Record<never, never>>; };
40
+ type OperationsRouterOf<TCtx extends object, V extends PolicyVocabulary> = <TOperations extends Readonly<Record<string, Operation>>, const TRoutes extends OperationRoutes<TOperations, TCtx, V>>(operations: TOperations, routes: TRoutes, options?: OperationsRouterOptions) => OperationsRouter<TCtx, TRoutes>;
41
+ //#endregion
9
42
  //#region src/orpc/create.d.ts
10
43
  type OrpcMiddlewareOpts<TCtx extends object = object, TInput = unknown> = {
11
44
  readonly context: TCtx;
@@ -20,7 +53,10 @@ type OrpcMiddleware<TCtx extends object = object, TInput = unknown, V extends Po
20
53
  readonly permdockData?: unknown;
21
54
  }, TInput, any, Record<never, never>>;
22
55
  type OrpcPermDockOptions<TCtx extends object = object, TUser = unknown> = ServerAdapterOptions<OrpcMiddlewareOpts<TCtx>, TUser> & {
23
- /** The Web `Request` behind a context; defaults to `context.request` or `context.req`. */
56
+ /**
57
+ * The Web `Request` behind a context; defaults to `context.request` or
58
+ * `context.req`.
59
+ */
24
60
  readonly request?: (context: TCtx) => Request | null | undefined;
25
61
  /** Ends or revalidates open event iterators. */
26
62
  readonly revocations?: RevocationFeed;
@@ -31,10 +67,22 @@ type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary =
31
67
  readonly security: readonly Record<string, readonly string[]>[];
32
68
  readonly "x-permdock-permissions": readonly string[];
33
69
  };
70
+ /**
71
+ * `security` as the merge function oRPC 2's `openapi({ spec })` takes, with
72
+ * mutable arrays so it type-checks against oRPC's `OperationObject`.
73
+ */
74
+ readonly spec: (permission: Permission) => <TSpec extends object>(current: TSpec) => TSpec & OrpcSecuritySpec;
34
75
  readonly securitySchemes: OpenApiHooks["securitySchemes"];
35
76
  };
77
+ type OrpcSecuritySpec = {
78
+ security: Record<string, string[]>[];
79
+ "x-permdock-permissions": string[];
80
+ };
36
81
  type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
37
- /** The `PermDock` for one procedure call, for code the middleware does not run before. */
82
+ /**
83
+ * The `PermDock` for one procedure call, for code the middleware does not run
84
+ * before.
85
+ */
38
86
  readonly getPermDock: (opts: OrpcMiddlewareOpts<TCtx>) => Promise<PermDock<V>>;
39
87
  readonly middleware: () => OrpcMiddleware<TCtx, unknown, V>;
40
88
  readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
@@ -42,13 +90,19 @@ type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = Pol
42
90
  readonly connection: (opts: OrpcMiddlewareOpts<TCtx>, connectionOptions?: ConnectionOptions) => Promise<Connection>;
43
91
  readonly permdockHandler: () => (request: Request) => Promise<Response>;
44
92
  readonly openapi: OrpcOpenApiHooks<TCtx, V>;
93
+ /**
94
+ * One procedure per `defineOperations` entry, guarded by the operation's
95
+ * permission and `data` loader; `meta` attaches oRPC meta such as
96
+ * `openapi()`.
97
+ */
98
+ readonly operationsRouter: OperationsRouterOf<TCtx, V>;
45
99
  };
46
100
  /**
47
- * The permission the procedure's first `protect` decides, or `undefined`
48
- * when no `protect` is attached. Reads the procedure definition only and
49
- * never decides.
101
+ * The permission the procedure's first `protect` decides, or `undefined` when
102
+ * no `protect` is attached. Reads the procedure definition only and never
103
+ * decides.
50
104
  */
51
105
  export declare function permissionOf(procedure: unknown): Permission | undefined;
52
106
  export declare function createPermDock<TCtx extends object = object, TUser = unknown, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: OrpcPermDockOptions<TCtx, TUser>): OrpcPermDock<TCtx, V>;
53
107
  //#endregion
54
- export type { OrpcMiddleware, OrpcMiddlewareOpts, OrpcOpenApiHooks, OrpcPermDock, OrpcPermDockOptions };
108
+ export type { OperationProcedureContext, OperationRoute, OperationRoutes, OperationsRouter, OperationsRouterOf, OperationsRouterOptions, OrpcMiddleware, OrpcMiddlewareOpts, OrpcOpenApiHooks, OrpcPermDock, OrpcPermDockOptions, OrpcSecuritySpec };