permdock 0.7.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 (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-CL-QCITA.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-BLs67P1l.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  14. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-3RhGfkAK.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-BAkBDMqn.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  35. package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
  45. package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
  46. package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-BFpz2EmT.js} +20 -19
  52. package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
  53. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  54. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  55. package/dist/catalog-mRQQQhNK.js +1 -0
  56. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-BFlGMaak.js} +4 -5
  77. package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
  78. package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
  79. package/dist/collect-B5BL3klN.js +1 -0
  80. package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
  81. package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BFzysW3o.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
  98. package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
  99. package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
  100. package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
  101. package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
  102. package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
  103. package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  127. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  128. package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
  130. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  131. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-B5kvbAoZ.js +58 -0
  150. package/dist/gen-DWCYcMQM.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
  164. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  169. package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
  170. package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
  171. package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
  172. package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
  173. package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
  174. package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
  175. package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +33 -33
  178. package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
  179. package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-C-fYydV2.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-D-8tMqzo.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-BNWCJtmP.js} +14 -8
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +72 -26
  212. package/dist/next/index.js +110 -6
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  223. package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
  224. package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/output-files-BHOIlrfD.js +1 -0
  232. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  233. package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
  234. package/dist/ownership-B4L59T9u.js +1054 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
  245. package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-mDcTWoBs.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-CCiDRZBH.d.ts} +738 -349
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
  262. package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
  263. package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
  264. package/dist/powersync-Djf-zCpB.js +1 -0
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/pull-B65ndFNZ.js +1 -0
  282. package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
  283. package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
  284. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  285. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-DNftIb_R.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-CF7xXLSG.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
  306. package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-fNqAIqQk.js} +8 -5
  310. package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
  311. package/dist/run-D-JE8QWb.js +1 -0
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-iWnUdwCt.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  333. package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  334. package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
  335. package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
  344. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-DZ0l9UAg.js} +190 -100
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  351. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  357. package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-BL1qJzzY.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
  368. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
  369. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  370. package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-DeMNEy6V.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +224 -141
  394. package/dist/testing/index.js +299 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  407. package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
  408. package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
  409. package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
  410. package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
  411. package/dist/types-B_d_g7T3.d.ts +262 -0
  412. package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
  413. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  414. package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
  415. package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
  416. package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
  417. package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  418. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  419. package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
  420. package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
  421. package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-CYeXek0p.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DZeqoWu5.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
  441. package/dist/watch-DB42U1ib.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-rI7dCR9Q.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  452. package/package.json +7 -7
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +14 -22
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -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-DpPtSKNZ.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,7 +524,10 @@ 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
  }
@@ -1,6 +1,6 @@
1
- import { c as missingInput } from "./errors-DpP_U6Bf.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-aaeRAdiD.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-ztVaux6j.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-DB2EG_iy.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-DpPtSKNZ.js";
3
- import { n as definePolicy } from "./policy-DaJy4nK4.js";
4
- import { i as configError } from "./errors-DpP_U6Bf.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-DxroEzH1.js";
7
- import { t as shortDiff } from "./text-diff-DhITNCnD.js";
8
- import { c as openapiVersion, o as createPermDock } from "./openapi-Ddb4628T.js";
9
- import { i as fileDrift } from "./output-files-CCMdcFWb.js";
10
- import { n as validateOverlay, t as validateOpenapi } from "./schema-gIcCx7zM.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-CyH2MV_B.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 { f as PermissionTree, u as Permission } from "./permission-types-DhNEmoRG.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, 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 { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-C4gZUEZy.js";
6
- import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
7
- import { t as StreamProtectOptions } from "../stream-2Vwhl7Er.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 };
@@ -1,11 +1,42 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { o as isPermission } from "../permission-registry-DpPtSKNZ.js";
3
- import { o as problemMessage } from "../http-BBoKefeS.js";
4
- import { t as problemFromError } from "../map-error-BQGyDm_M.js";
5
- import { n as attached } from "../bind-D1nO6fiC.js";
6
- import { i as isAsyncIterable, o as reloadAfter } from "../stream-CvdUS9V1.js";
7
- import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-Bk1bE-ch.js";
8
- import { ORPCError } from "@orpc/server";
2
+ import { o as isPermission } from "../permission-registry-B8tYxPIt.js";
3
+ import { o as problemMessage } from "../http-DKLXrFGk.js";
4
+ import { t as problemFromError } from "../map-error-pasIGqMT.js";
5
+ import { n as attached } from "../bind-D_sZSVA3.js";
6
+ import { i as isAsyncIterable, o as reloadAfter } from "../stream-CDvF0sJm.js";
7
+ import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-fNqAIqQk.js";
8
+ import { ORPCError, os } from "@orpc/server";
9
+ //#region src/orpc/operations.ts
10
+ const root = os;
11
+ function routeOf(name, value) {
12
+ if (typeof (value !== null && typeof value === "object" ? Reflect.get(value, "handler") : void 0) !== "function") throw new TypeError(`operationsRouter: the route for operation "${name}" needs a handler function.`);
13
+ return value;
14
+ }
15
+ /**
16
+ * Builds one oRPC procedure per operation: `middleware()`, the route's `input`
17
+ * schema, then `protect(operation.permission, operation.data)`. Throws at
18
+ * definition time when a route names no operation, an operation has no route,
19
+ * or an operation with `data` has no `input` schema.
20
+ */
21
+ function operationsRouterOf(deps) {
22
+ return (operations, routes, options = {}) => {
23
+ for (const name of Object.keys(routes)) if (!Object.hasOwn(operations, name)) throw new TypeError(`operationsRouter: "${name}" is not an operation passed to operationsRouter.`);
24
+ const router = {};
25
+ for (const [name, operation] of Object.entries(operations)) {
26
+ if (!Object.hasOwn(routes, name)) throw new TypeError(`operationsRouter: operation "${name}" has no route.`);
27
+ const route = routeOf(name, Reflect.get(routes, name));
28
+ const load = operation.data;
29
+ if (load !== void 0 && route.input === void 0) throw new TypeError(`operationsRouter: operation "${name}" loads a row from its input, so its route needs an input schema.`);
30
+ const base = root.meta(...options.meta?.(operation) ?? []).use(deps.middleware());
31
+ router[name] = (route.input === void 0 ? base : base.input(route.input)).use(deps.protect(operation.permission, load === void 0 ? void 0 : (opts) => load(opts.input))).handler(({ input, context }) => route.handler({
32
+ input,
33
+ context
34
+ }));
35
+ }
36
+ return router;
37
+ };
38
+ }
39
+ //#endregion
9
40
  //#region src/orpc/create.ts
10
41
  function toOpts(mw, input, next) {
11
42
  return compact({
@@ -18,7 +49,10 @@ function toOpts(mw, input, next) {
18
49
  function isErrorConstructor(value) {
19
50
  return typeof value === "function";
20
51
  }
21
- /** Uses the procedure's own constructor when it declares the code, so the declared status and `defined` apply. */
52
+ /**
53
+ * Uses the procedure's own constructor when it declares the code, so the
54
+ * declared status and `defined` apply.
55
+ */
22
56
  function orpcError(code, message, data, errors) {
23
57
  const declared = errors !== void 0 && Object.hasOwn(errors, code) ? errors[code] : void 0;
24
58
  return isErrorConstructor(declared) ? declared({
@@ -38,7 +72,10 @@ async function throwOrpcError(response, errors) {
38
72
  const code = rpcCode(response.status);
39
73
  throw orpcError(code, problemMessage(data, code), data, errors);
40
74
  }
41
- /** A PermDock error thrown further down (an `assert` in a handler) becomes the ORPCError `protect` throws. */
75
+ /**
76
+ * A PermDock error thrown further down (an `assert` in a handler) becomes the
77
+ * ORPCError `protect` throws.
78
+ */
42
79
  function mapDownstream(run, errors) {
43
80
  return new Promise((resolve) => {
44
81
  resolve(run());
@@ -58,9 +95,9 @@ function readOwn(value, key) {
58
95
  return (typeof value === "object" || typeof value === "function") && value !== null && Object.hasOwn(value, key) ? Reflect.get(value, key) : void 0;
59
96
  }
60
97
  /**
61
- * The permission the procedure's first `protect` decides, or `undefined`
62
- * when no `protect` is attached. Reads the procedure definition only and
63
- * never decides.
98
+ * The permission the procedure's first `protect` decides, or `undefined` when
99
+ * no `protect` is attached. Reads the procedure definition only and never
100
+ * decides.
64
101
  */
65
102
  function permissionOf(procedure) {
66
103
  const ordered = readOwn(readOwn(procedure, "~orpc"), "orderedMiddlewares");
@@ -140,8 +177,20 @@ function createPermDock(policy, options) {
140
177
  openapi: {
141
178
  protect,
142
179
  security: kernelOpenApi.security,
180
+ spec: (permission) => {
181
+ const fragment = kernelOpenApi.security(permission);
182
+ return (current) => ({
183
+ ...current,
184
+ security: fragment.security.map((requirement) => Object.fromEntries(Object.entries(requirement).map(([scheme, scopes]) => [scheme, [...scopes]]))),
185
+ "x-permdock-permissions": [...fragment["x-permdock-permissions"]]
186
+ });
187
+ },
143
188
  securitySchemes: kernelOpenApi.securitySchemes
144
- }
189
+ },
190
+ operationsRouter: operationsRouterOf({
191
+ middleware,
192
+ protect
193
+ })
145
194
  };
146
195
  }
147
196
  //#endregion
@@ -1,6 +1,6 @@
1
- import { j as PolicyVocabulary } from "../policy-types-B-F-qAZk.js";
2
- import { a as PermDock } from "../permdock-Dco6dyCK.js";
3
- import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-CIeZcG8v.js";
1
+ import { j as PolicyVocabulary } from "../policy-types-CCiDRZBH.js";
2
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
3
+ import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-DHKPcqzr.js";
4
4
  //#region src/otel/instrument.d.ts
5
5
  /**
6
6
  * Listens on one instance. Spans carry no duration and no histogram is
@@ -8,7 +8,10 @@ import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap
8
8
  * `withOtel` for timings and for `tenant()` / `team()` derived instances.
9
9
  */
10
10
  export declare function instrument(permdock: PermDock, options?: OtelOptions): () => void;
11
- /** Returns an instrumented instance: timed spans and histogram, derived instances included. */
11
+ /**
12
+ * Returns an instrumented instance: timed spans and histogram, derived
13
+ * instances included.
14
+ */
12
15
  export declare function withOtel<V extends PolicyVocabulary = PolicyVocabulary>(permdock: PermDock<V>, options?: OtelOptions): PermDock<V>;
13
16
  //#endregion
14
17
  export { GENAI_SEMCONV_PIN, GEN_AI_TOOL_CALL_ID, GEN_AI_TOOL_NAME, type OtelApi, type OtelOptions, type OtelWrap, type StructuralLogger };
@@ -1,6 +1,6 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as wrapPermDock } from "../wrap-CiSc_KCq.js";
3
- import { r as appObligationNames } from "../ocsf-BFp-PZZA.js";
2
+ import { n as wrapPermDock } from "../wrap-B2wziJI_.js";
3
+ import { r as appObligationNames } from "../ocsf-TcjRBgIs.js";
4
4
  //#region src/otel/types.ts
5
5
  const GENAI_SEMCONV_PIN = "1.37.0";
6
6
  const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
@@ -87,8 +87,8 @@ function omitPath(attributes, path) {
87
87
  }
88
88
  /**
89
89
  * `error.type` for a decision that failed: a boundary validation failure
90
- * always, and the first denial reason when `errorOnDeny` marks every denial
91
- * an error.
90
+ * always, and the first denial reason when `errorOnDeny` marks every denial an
91
+ * error.
92
92
  */
93
93
  function errorType(event, options) {
94
94
  if (event.outcome !== "denied") return;
@@ -220,7 +220,10 @@ function instrumented(permdock, options, api) {
220
220
  };
221
221
  });
222
222
  }
223
- /** Returns an instrumented instance: timed spans and histogram, derived instances included. */
223
+ /**
224
+ * Returns an instrumented instance: timed spans and histogram, derived
225
+ * instances included.
226
+ */
224
227
  function withOtel(permdock, options = {}) {
225
228
  return instrumented(permdock, options, resolveApi(options.api));
226
229
  }
@@ -0,0 +1 @@
1
+ export { t as SPLIT_PARTS } from "./output-files-BIQ_9pIs.js";
@@ -1,6 +1,6 @@
1
- import { i as dateAt } from "./time-DkWjdL98.js";
2
- import { t as shortDiff } from "./text-diff-DhITNCnD.js";
3
- import { t as applyFiles } from "./files-acUbNwWt.js";
1
+ import { i as dateAt } from "./time-nR1JesoH.js";
2
+ import { t as shortDiff } from "./text-diff-BtfSmdUo.js";
3
+ import { t as applyFiles } from "./files-B3AA05f1.js";
4
4
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
5
5
  import { basename, dirname, resolve } from "node:path";
6
6
  /** How `path` on disk differs from `expected`; `undefined` when `same` holds. */
@@ -12,7 +12,10 @@ function fileDrift(path, expected, same = (a, b) => a === b) {
12
12
  onDisk
13
13
  };
14
14
  }
15
- /** `--check`: one entry per file that is missing or differs, naming its part; a differing file carries a short diff. */
15
+ /**
16
+ * `--check`: one entry per file that is missing or differs, naming its part; a
17
+ * differing file carries a short diff.
18
+ */
16
19
  function driftOf(cwd, files) {
17
20
  const drift = [];
18
21
  for (const file of files) {
@@ -23,7 +26,10 @@ function driftOf(cwd, files) {
23
26
  }
24
27
  return drift;
25
28
  }
26
- /** Writes every file but the stdout ones, all or nothing, and returns the stdout text for printing. */
29
+ /**
30
+ * Writes every file but the stdout ones, all or nothing, and returns the stdout
31
+ * text for printing.
32
+ */
27
33
  function writeOutputFiles(cwd, files) {
28
34
  const onDisk = files.filter((file) => file.rel !== "-");
29
35
  applyFiles(cwd, onDisk.map((file) => ({
@@ -42,7 +48,10 @@ const SPLIT_PARTS = [
42
48
  "policies",
43
49
  "hook"
44
50
  ];
45
- /** `--split helpers,seeds,indexes,policies,hook`: the parts in that fixed order, or an error. */
51
+ /**
52
+ * `--split helpers,seeds,indexes,policies,hook`: the parts in that fixed order,
53
+ * or an error.
54
+ */
46
55
  function parseSplit(raw) {
47
56
  if (raw === void 0) return;
48
57
  const names = raw.split(",").map((name) => name.trim()).filter((name) => name !== "");
@@ -54,8 +63,8 @@ function partPath(out, part) {
54
63
  return out.replaceAll("{part}", part);
55
64
  }
56
65
  /**
57
- * pg-delta's per-schema, unnumbered layout: pg-delta orders statements by
58
- * their dependencies, so no file needs a number to apply first.
66
+ * pg-delta's per-schema, unnumbered layout: pg-delta orders statements by their
67
+ * dependencies, so no file needs a number to apply first.
59
68
  */
60
69
  function pgDeltaPath(root, part, schema) {
61
70
  switch (part) {
@@ -67,7 +76,10 @@ function pgDeltaPath(root, part, schema) {
67
76
  default: return part;
68
77
  }
69
78
  }
70
- /** Whether `--seeds-out` names a migrations directory: it ends with \`/\` or is an existing directory. */
79
+ /**
80
+ * Whether `--seeds-out` names a migrations directory: it ends with \`/\` or is
81
+ * an existing directory.
82
+ */
71
83
  function isSeedsDirectory(cwd, out) {
72
84
  if (out === "-") return false;
73
85
  if (out.endsWith("/")) return true;
@@ -75,11 +87,11 @@ function isSeedsDirectory(cwd, out) {
75
87
  return existsSync(path) && statSync(path).isDirectory();
76
88
  }
77
89
  /**
78
- * A generated data migration at `out`: a file, `-` for stdout, or a
79
- * migrations directory that gets a new versioned file only when the newest
80
- * one starting with `marker` differs. With `check`, the planned file is
81
- * always returned, so drift names it. `reserved` lists the files this run
82
- * already plans, so two data migrations never share a version.
90
+ * A generated data migration at `out`: a file, `-` for stdout, or a migrations
91
+ * directory that gets a new versioned file only when the newest one starting
92
+ * with `marker` differs. With `check`, the planned file is always returned, so
93
+ * drift names it. `reserved` lists the files this run already plans, so two
94
+ * data migrations never share a version.
83
95
  */
84
96
  function dataMigrationFile(input) {
85
97
  if (!isSeedsDirectory(input.cwd, input.out)) return {
@@ -100,9 +112,9 @@ function migrationVersion(now) {
100
112
  }
101
113
  const VERSION_PREFIX = /^\d{14}(?=_)/u;
102
114
  /**
103
- * The version of a new migration that sorts after every migration in
104
- * `names`: one second past the newest, so the same directory always gives the
105
- * same name. Only a directory with no versioned migration falls back to `now`.
115
+ * The version of a new migration that sorts after every migration in `names`:
116
+ * one second past the newest, so the same directory always gives the same name.
117
+ * Only a directory with no versioned migration falls back to `now`.
106
118
  */
107
119
  function nextMigrationVersion(names, now) {
108
120
  const times = names.flatMap((name) => {