permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -0,0 +1,36 @@
1
+ import { n as OPERATION_RISKS } from "./permissions-B-wCP5ZC.js";
2
+ //#region src/catalog/operation-findings.ts
3
+ function rank(risk) {
4
+ return OPERATION_RISKS.indexOf(risk ?? "low");
5
+ }
6
+ function requiresApproval(catalog, permission) {
7
+ return (catalog.permissions.find((entry) => entry.key === permission)?.approvals?.length ?? 0) > 0;
8
+ }
9
+ /**
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.
13
+ */
14
+ function operationFindings(previous, next) {
15
+ const before = new Map((previous.operations ?? []).map((operation) => [operation.name, operation]));
16
+ const findings = [];
17
+ for (const operation of next.operations ?? []) {
18
+ const old = before.get(operation.name);
19
+ if (old === void 0) continue;
20
+ if (rank(operation.meta.risk) > rank(old.meta.risk)) findings.push({
21
+ code: "operation-risk-raised",
22
+ operation: operation.name,
23
+ permission: operation.permission,
24
+ previous: old.meta.risk ?? "low",
25
+ risk: operation.meta.risk ?? "low"
26
+ });
27
+ if (requiresApproval(previous, old.permission) && !requiresApproval(next, operation.permission)) findings.push({
28
+ code: "operation-approval-removed",
29
+ operation: operation.name,
30
+ permission: operation.permission
31
+ });
32
+ }
33
+ return findings;
34
+ }
35
+ //#endregion
36
+ export { operationFindings as t };
@@ -0,0 +1,59 @@
1
+ import { E as PermissionTree, w as Permission } from "./vocabulary-D6lPdb4Z.js";
2
+ //#region src/core/operation-risks.d.ts
3
+ type OperationRisk = "low" | "medium" | "high" | "critical";
4
+ /** Every `meta.risk` level, lowest first. */
5
+ declare const OPERATION_RISKS: readonly OperationRisk[];
6
+ declare function isOperationRisk(value: unknown): value is OperationRisk;
7
+ //#endregion
8
+ //#region src/core/operations.d.ts
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. */
11
+ type OperationMeta = {
12
+ readonly risk?: OperationRisk;
13
+ /** What running the operation does, each effect at most once. */
14
+ readonly effects?: readonly OperationEffect[];
15
+ readonly title?: string;
16
+ };
17
+ /**
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
+ */
22
+ type OperationData<TInput = never> = {
23
+ load(input: TInput): unknown;
24
+ }["load"];
25
+ /** One entry of the object passed to `defineOperations`. */
26
+ type OperationDefinition = {
27
+ readonly permission: Permission;
28
+ readonly data?: OperationData<unknown>;
29
+ /** The permission each result row is filtered by. */
30
+ readonly results?: Permission;
31
+ readonly meta?: OperationMeta;
32
+ };
33
+ /**
34
+ * 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`.
37
+ */
38
+ type Operation<TInput = unknown, TName extends string = string, TPermission extends Permission = Permission> = {
39
+ readonly name: TName;
40
+ readonly permission: TPermission;
41
+ readonly data?: OperationData<TInput>;
42
+ readonly results?: Permission;
43
+ readonly meta: OperationMeta;
44
+ };
45
+ /** The input type of an operation: the parameter type of its `data` loader. */
46
+ type OperationInput<TOperation> = TOperation extends Operation<infer TInput> ? TInput : never;
47
+ type InputOf<TDefinition> = TDefinition extends {
48
+ readonly data: (input: infer TInput) => unknown;
49
+ } ? TInput : undefined;
50
+ type OperationMap<TDefinitions extends Record<string, OperationDefinition> = Record<string, OperationDefinition>> = { readonly [TName in keyof TDefinitions & string]: Operation<InputOf<TDefinitions[TName]>, TName, TDefinitions[TName]["permission"]>; };
51
+ /**
52
+ * Binds each named operation to a permission of `permissions`. Throws at
53
+ * definition time for a permission or `results` outside the tree, a name that
54
+ * is not 1 to 128 of `A-Z a-z 0-9 _ . -` or repeats another case-insensitively,
55
+ * a `data` that is not a function, or meta outside the closed lists.
56
+ */
57
+ declare function defineOperations<const TDefinitions extends Record<string, OperationDefinition>>(permissions: PermissionTree, definitions: TDefinitions): OperationMap<TDefinitions>;
58
+ //#endregion
59
+ export { OperationInput as a, defineOperations as c, isOperationRisk as d, OperationEffect as i, OPERATION_RISKS as l, OperationData as n, OperationMap as o, OperationDefinition as r, OperationMeta as s, Operation as t, OperationRisk as u };
@@ -1,9 +1,10 @@
1
- import { C as Policy, D as PolicyVocabulary, Nr as Principal, ln as PermDock } from "../policy-IB6yxpC3.js";
2
- import { f as Permission } from "../permissions-DttnqqxC.js";
3
- import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
4
- import { A as ConnectionOptions, O as Connection, n as OpenApiHooks } from "../create-B1d519XK.js";
5
- import { t as ServerAdapterOptions } from "../bind-C_ob3LKa.js";
6
- import { t as StreamProtectOptions } from "../stream-D1RXubw2.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { r as PermDock } from "../permdock-D7eeLJER.js";
4
+ import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
+ import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-BLd4MnBX.js";
6
+ import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
7
+ import { t as StreamProtectOptions } from "../stream-7-xmnf3U.js";
7
8
  import { Middleware } from "@orpc/server";
8
9
  //#region src/orpc/create.d.ts
9
10
  type OrpcMiddlewareOpts<TCtx extends object = object, TInput = unknown> = {
@@ -25,7 +26,7 @@ type OrpcPermDockOptions<TCtx extends object = object, TUser = unknown> = Server
25
26
  readonly revocations?: RevocationFeed;
26
27
  };
27
28
  type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
28
- readonly protect: (permission: Permission | null, loadData?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
29
+ readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
29
30
  readonly security: (permission: Permission) => {
30
31
  readonly security: readonly Record<string, readonly string[]>[];
31
32
  readonly "x-permdock-permissions": readonly string[];
@@ -33,11 +34,13 @@ type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary =
33
34
  readonly securitySchemes: OpenApiHooks["securitySchemes"];
34
35
  };
35
36
  type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
36
- readonly permdock: () => OrpcMiddleware<TCtx, unknown, V>;
37
- readonly protect: (permission: Permission | null, loadData?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
37
+ /** The `PermDock` for one procedure call, for code the middleware does not run before. */
38
+ readonly getPermDock: (opts: OrpcMiddlewareOpts<TCtx>) => Promise<PermDock<V>>;
39
+ readonly middleware: () => OrpcMiddleware<TCtx, unknown, V>;
40
+ readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
38
41
  /** A long-lived connection for the request behind `context`. */
39
42
  readonly connection: (opts: OrpcMiddlewareOpts<TCtx>, connectionOptions?: ConnectionOptions) => Promise<Connection>;
40
- readonly permdockHandler: (request: Request) => Promise<Response>;
43
+ readonly permdockHandler: () => (request: Request) => Promise<Response>;
41
44
  readonly openapi: OrpcOpenApiHooks<TCtx, V>;
42
45
  };
43
46
  /**
@@ -1,10 +1,10 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { p as isPermission } from "../permissions-DVoF6dMt.js";
3
- import { a as problemMessage } from "../http-SO7qGttf.js";
4
- import { t as problemFromError } from "../map-error-pgUWNNtG.js";
5
- import { n as attached } from "../bind-CuzGytRf.js";
6
- import { a as reloadAfter, r as isAsyncIterable } from "../stream-DDpvynSB.js";
7
- import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-DL9Sqvb1.js";
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { o as isPermission } from "../permission-registry-Br4jSNVi.js";
3
+ import { o as problemMessage } from "../http-BBoKefeS.js";
4
+ import { t as problemFromError } from "../map-error-TCAdw-eW.js";
5
+ import { n as attached } from "../bind-CZzhx-Vj.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-aPyNi6tA.js";
8
8
  import { ORPCError } from "@orpc/server";
9
9
  //#region src/orpc/create.ts
10
10
  function toOpts(mw, input, next) {
@@ -71,7 +71,7 @@ function permissionOf(procedure) {
71
71
  }
72
72
  }
73
73
  function createPermDock(policy, options) {
74
- const { kernel, bind, attach, scopeOf, connection, evaluate } = bindRpcKernel(policy, options, "orpc", (opts) => opts.context, (opts) => opts.path?.join(".") ?? "orpc");
74
+ const { kernel, bind, attach, scopeOf, connection, evaluate, guard: runGuard } = bindRpcKernel(policy, options, "orpc", (opts) => opts.context, (opts) => opts.path?.join(".") ?? "orpc");
75
75
  /** Instances this factory built, with the tenant each was built for. */
76
76
  const issued = /* @__PURE__ */ new WeakMap();
77
77
  const issue = (instance, scope) => {
@@ -83,10 +83,14 @@ function createPermDock(policy, options) {
83
83
  if (typeof bound !== "object" || bound === null || !issued.has(bound) || issued.get(bound) !== scope.tenant) return;
84
84
  return bound;
85
85
  };
86
- const permdock = () => ((mwOptions, input) => {
86
+ const getPermDock = async (opts) => {
87
+ const scope = await scopeOf(opts);
88
+ return boundFor(opts.context, scope) ?? issue(await kernel.getPermDock(bind(opts), scope), scope);
89
+ };
90
+ const middleware = () => ((mwOptions, input) => {
87
91
  const opts = toOpts(mwOptions, input, mwOptions.next);
88
92
  const request = bind(opts);
89
- return scopeOf(opts).then((scope) => attached(async () => boundFor(opts.context, scope) ?? issue(await kernel.permdock(request, scope), scope))).then((instance) => {
93
+ return scopeOf(opts).then((scope) => attached(async () => boundFor(opts.context, scope) ?? issue(await kernel.getPermDock(request, scope), scope))).then((instance) => {
90
94
  if (!instance.ok) return throwOrpcError(instance.response, mwOptions.errors);
91
95
  const nextCtx = {
92
96
  ...opts.context,
@@ -97,19 +101,17 @@ function createPermDock(policy, options) {
97
101
  });
98
102
  });
99
103
  /** Wraps an event iterator so revocation ends it and unreadable items drop. */
100
- const guardOutput = async (result, opts, permission, loadData, protectOptions, errors) => {
104
+ const guardOutput = async (result, opts, permission, data, protectOptions, errors) => {
101
105
  const output = result !== null && typeof result === "object" && "output" in result ? result.output : void 0;
102
106
  if (!isAsyncIterable(output)) return result;
103
107
  return {
104
108
  ...result,
105
- output: await guardStream(output, (connectionOptions) => connection(opts, connectionOptions), permission, loadData, protectOptions, { onRevoked: (error) => orpcErrorFrom(error, errors) })
109
+ output: await guardStream(output, (connectionOptions) => connection(opts, connectionOptions), permission, data, protectOptions, { onRevoked: (error) => orpcErrorFrom(error, errors) })
106
110
  };
107
111
  };
108
- const protect = (permission, loadData, protectOptions) => tagged(permission, (async (mwOptions, input) => {
112
+ const protect = (permission, data, protectOptions) => tagged(permission, (async (mwOptions, input) => {
109
113
  const opts = toOpts(mwOptions, input, mwOptions.next);
110
- const request = bind(opts);
111
- const scope = await scopeOf(opts);
112
- const guard = await kernel.protect(permission, loadData === void 0 ? void 0 : () => loadData(opts), protectOptions)(request, scope);
114
+ const { request, scope, guard } = await runGuard(permission, data, opts, protectOptions);
113
115
  if (guard.ok) {
114
116
  const nextCtx = {
115
117
  ...opts.context,
@@ -117,11 +119,11 @@ function createPermDock(policy, options) {
117
119
  permdockData: guard.data
118
120
  };
119
121
  attach(nextCtx, request);
120
- return guardOutput(await mapDownstream(() => mwOptions.next({ context: nextCtx }), mwOptions.errors), opts, permission, loadData === void 0 ? void 0 : reloadAfter(guard.data, () => loadData(opts)), protectOptions, mwOptions.errors);
122
+ return guardOutput(await mapDownstream(() => mwOptions.next({ context: nextCtx }), mwOptions.errors), opts, permission, data === void 0 ? void 0 : reloadAfter(guard.data, () => data(opts)), protectOptions, mwOptions.errors);
121
123
  }
122
124
  return throwOrpcError(guard.response, mwOptions.errors);
123
125
  }));
124
- const permdockHandler = (request) => {
126
+ const handler = (request) => {
125
127
  return evaluate(request, {
126
128
  context: { req: request },
127
129
  path: ["permdock"],
@@ -130,10 +132,11 @@ function createPermDock(policy, options) {
130
132
  };
131
133
  const kernelOpenApi = kernel.openapi;
132
134
  return {
133
- permdock,
135
+ getPermDock,
136
+ middleware,
134
137
  protect,
135
138
  connection,
136
- permdockHandler,
139
+ permdockHandler: () => handler,
137
140
  openapi: {
138
141
  protect,
139
142
  security: kernelOpenApi.security,
@@ -1,5 +1,6 @@
1
- import { D as PolicyVocabulary, ln as PermDock } from "../policy-IB6yxpC3.js";
2
- 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-QCuYJh4q.js";
1
+ import { j as PolicyVocabulary } from "../policy-types-DzwivBgR.js";
2
+ import { r as PermDock } from "../permdock-D7eeLJER.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-BqAKcRNW.js";
3
4
  //#region src/otel/instrument.d.ts
4
5
  /**
5
6
  * Listens on one instance. Spans carry no duration and no histogram is
@@ -1,8 +1,15 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
3
+ import { r as appObligationNames } from "../ocsf-BFp-PZZA.js";
2
4
  //#region src/otel/types.ts
3
5
  const GENAI_SEMCONV_PIN = "1.37.0";
4
6
  const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
5
7
  const GEN_AI_TOOL_CALL_ID = "gen_ai.tool.call.id";
8
+ const GEN_AI_AGENT_ID = "gen_ai.agent.id";
9
+ const GEN_AI_REQUEST_MODEL = "gen_ai.request.model";
10
+ const USER_ID = "user.id";
11
+ const USER_ROLES = "user.roles";
12
+ const ERROR_TYPE = "error.type";
6
13
  //#endregion
7
14
  //#region src/otel/instrument.ts
8
15
  const FORBIDDEN = /* @__PURE__ */ new Set([
@@ -78,9 +85,26 @@ function omitPath(attributes, path) {
78
85
  matched: true
79
86
  };
80
87
  }
88
+ /**
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.
92
+ */
93
+ function errorType(event, options) {
94
+ if (event.outcome !== "denied") return;
95
+ if (event.denials?.some((denial) => denial.reason === "validation") === true) return "validation";
96
+ return options.errorOnDeny === true ? event.denials?.[0]?.reason : void 0;
97
+ }
81
98
  function attributesOf(event, options, parent) {
82
99
  const extra = options.attributes === void 0 ? {} : options.attributes(event);
100
+ const actor = event.subject.actor;
101
+ const scopes = event.subject.delegation?.scope?.split(" ").filter((scope) => scope !== "");
83
102
  let redacted = compact({
103
+ [USER_ID]: event.subject.principal?.id,
104
+ [USER_ROLES]: event.subject.principal?.roles,
105
+ [GEN_AI_AGENT_ID]: actor?.kind === "agent" ? actor.id : void 0,
106
+ [GEN_AI_REQUEST_MODEL]: event.model ?? parent?.attributes?.["gen_ai.request.model"],
107
+ [ERROR_TYPE]: errorType(event, options),
84
108
  "permdock.outcome": event.outcome,
85
109
  "permdock.permission": event.permission,
86
110
  "permdock.scope": event.scope,
@@ -89,8 +113,11 @@ function attributesOf(event, options, parent) {
89
113
  "permdock.subject.id": event.subject.principal?.id,
90
114
  "permdock.actor.id": event.subject.actor?.id,
91
115
  "permdock.actor.kind": event.subject.actor?.kind,
92
- "permdock.delegation.scopes": event.subject.delegation?.scopes?.join(","),
116
+ "permdock.support_session.id": event.subject.supportSession?.id,
117
+ "permdock.delegation.scopes": scopes,
93
118
  "permdock.matched.role": event.matched?.role,
119
+ "permdock.matched.name": event.matched?.name,
120
+ "permdock.obligations": appObligationNames(event),
94
121
  "permdock.denials.count": event.denials?.length,
95
122
  "permdock.token": event.token,
96
123
  "permdock.validate": event.trusted ? "trusted" : "boundary",
@@ -131,9 +158,9 @@ function recordSignals(event, options, api, timing) {
131
158
  span.setAttributes?.(attributes);
132
159
  if (event.outcome === "denied") {
133
160
  span.addEvent?.("permdock.denied", compact({
134
- role: event.denials?.map((denial) => denial.role).join(","),
135
- reason: event.denials?.map((denial) => denial.reason).join(","),
136
- alternatives: event.alternatives?.join(",")
161
+ role: event.denials?.map((denial) => denial.role ?? ""),
162
+ reason: event.denials?.map((denial) => denial.reason),
163
+ alternatives: event.alternatives
137
164
  }));
138
165
  if (event.denials?.some((denial) => denial.reason === "validation") === true) span.recordException?.(/* @__PURE__ */ new Error("validation"));
139
166
  if (options.errorOnDeny === true) span.setStatus?.({ code: SPAN_STATUS_ERROR });
@@ -170,28 +197,27 @@ function instrument(permdock, options = {}) {
170
197
  return listen(permdock, options, resolveApi(options.api), () => void 0);
171
198
  }
172
199
  function instrumented(permdock, options, api) {
173
- let started;
174
- listen(permdock, options, api, () => started);
175
- const timed = (fn) => (...args) => {
176
- const outer = started === void 0;
177
- if (outer) started = now();
178
- try {
179
- return fn(...args);
180
- } finally {
181
- if (outer) started = void 0;
182
- }
183
- };
184
- return Object.freeze({
185
- ...permdock,
186
- can: timed(permdock.can),
187
- decide: timed(permdock.decide),
188
- assert: timed(permdock.assert),
189
- explain: timed(permdock.explain),
190
- filter: timed(permdock.filter),
191
- pick: timed(permdock.pick),
192
- actions: timed(permdock.actions),
193
- tenant: (id) => instrumented(permdock.tenant(id), options, api),
194
- team: (id) => instrumented(permdock.team(id), options, api)
200
+ return wrapPermDock(permdock, (inner) => {
201
+ let started;
202
+ listen(inner, options, api, () => started);
203
+ const timed = (fn) => (...args) => {
204
+ const outer = started === void 0;
205
+ if (outer) started = now();
206
+ try {
207
+ return fn(...args);
208
+ } finally {
209
+ if (outer) started = void 0;
210
+ }
211
+ };
212
+ return {
213
+ can: timed(inner.can),
214
+ decide: timed(inner.decide),
215
+ assert: timed(inner.assert),
216
+ explain: timed(inner.explain),
217
+ filter: timed(inner.filter),
218
+ pick: timed(inner.pick),
219
+ actions: timed(inner.actions)
220
+ };
195
221
  });
196
222
  }
197
223
  /** Returns an instrumented instance: timed spans and histogram, derived instances included. */
@@ -0,0 +1,88 @@
1
+ import { s as cliVersion } from "./version-CEbQ5UeM.js";
2
+ import { t as DOCS_BASE } from "./manifest-CtKR3GXL.js";
3
+ //#region src/cli/core/output.ts
4
+ const CLI_RESULT_SCHEMA = "https://permdock.com/schemas/cli-result-v1.json";
5
+ function envelope(input) {
6
+ return {
7
+ $schema: CLI_RESULT_SCHEMA,
8
+ status: input.status,
9
+ ...input.data === void 0 ? {} : { data: input.data },
10
+ ...input.error === void 0 ? {} : { error: input.error },
11
+ ...input.next === void 0 || input.next.length === 0 ? {} : { next: input.next }
12
+ };
13
+ }
14
+ /** A command's JSON report as data; text that is not JSON becomes `{ message }`. */
15
+ function dataOf(output) {
16
+ const text = output.trim();
17
+ if (text === "") return;
18
+ try {
19
+ return JSON.parse(text);
20
+ } catch {
21
+ return { message: text };
22
+ }
23
+ }
24
+ const LOCATION = /^([^\s:]+\.[A-Za-z0-9]+):(\d+)\b/u;
25
+ /**
26
+ * A finding whose `file` and `line` default to the `path:line` a message
27
+ * opens with, the form doctor, usage and scan already print.
28
+ */
29
+ function findingOf(input) {
30
+ if (input.file !== void 0) return input;
31
+ const match = LOCATION.exec(input.message);
32
+ if (match?.[1] === void 0 || match[2] === void 0) return input;
33
+ return {
34
+ ...input,
35
+ file: match[1],
36
+ line: Number(match[2])
37
+ };
38
+ }
39
+ function escapeData(value) {
40
+ return value.replaceAll("%", "%25").replaceAll("\r", "%0D").replaceAll("\n", "%0A");
41
+ }
42
+ function escapeProperty(value) {
43
+ return escapeData(value).replaceAll(":", "%3A").replaceAll(",", "%2C");
44
+ }
45
+ /** GitHub Actions workflow commands, one per finding. */
46
+ function githubAnnotations(findings) {
47
+ return findings.map((finding) => {
48
+ return `::${finding.severity === "error" ? "error" : finding.severity === "warning" ? "warning" : "notice"} ${[
49
+ ...finding.file === void 0 ? [] : [`file=${escapeProperty(finding.file)}`],
50
+ ...finding.line === void 0 ? [] : [`line=${String(finding.line)}`],
51
+ `title=${escapeProperty(finding.code)}`
52
+ ].join(",")}::${escapeData(finding.fix === void 0 ? finding.message : `${finding.message}\nFix: ${finding.fix}`)}`;
53
+ }).join("\n");
54
+ }
55
+ /** A SARIF 2.1.0 log with one run, one rule per finding code. */
56
+ function sarifLog(command, findings) {
57
+ const rules = [...new Set(findings.map((finding) => finding.code))].map((code) => {
58
+ const sample = findings.find((finding) => finding.code === code);
59
+ const rule = { id: code };
60
+ if (sample?.docs !== void 0) rule.helpUri = sample.docs;
61
+ if (sample?.fix !== void 0) rule.help = { text: sample.fix };
62
+ return rule;
63
+ });
64
+ const results = findings.map((finding) => ({
65
+ ruleId: finding.code,
66
+ level: finding.severity === "error" ? "error" : finding.severity === "warning" ? "warning" : "note",
67
+ message: { text: finding.message },
68
+ ...finding.file === void 0 ? {} : { locations: [{ physicalLocation: {
69
+ artifactLocation: { uri: finding.file },
70
+ ...finding.line === void 0 ? {} : { region: { startLine: finding.line } }
71
+ } }] }
72
+ }));
73
+ return `${JSON.stringify({
74
+ $schema: "https://json.schemastore.org/sarif-2.1.0.json",
75
+ version: "2.1.0",
76
+ runs: [{
77
+ tool: { driver: {
78
+ name: `permdock ${command}`,
79
+ version: cliVersion(),
80
+ informationUri: DOCS_BASE,
81
+ rules
82
+ } },
83
+ results
84
+ }]
85
+ }, null, 2)}\n`;
86
+ }
87
+ //#endregion
88
+ export { sarifLog as a, githubAnnotations as i, envelope as n, findingOf as r, dataOf as t };
@@ -0,0 +1 @@
1
+ export { t as SPLIT_PARTS } from "./output-files-DhRBBE4n.js";
@@ -0,0 +1,138 @@
1
+ import { i as dateAt } from "./time-DkWjdL98.js";
2
+ import { t as shortDiff } from "./text-diff-BQcUapOb.js";
3
+ import { t as applyFiles } from "./files-C5ZI27eV.js";
4
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
5
+ import { basename, dirname, resolve } from "node:path";
6
+ /** How `path` on disk differs from `expected`; `undefined` when `same` holds. */
7
+ function fileDrift(path, expected, same = (a, b) => a === b) {
8
+ if (!existsSync(path)) return { kind: "missing" };
9
+ const onDisk = readFileSync(path, "utf8");
10
+ return same(onDisk, expected) ? void 0 : {
11
+ kind: "differs",
12
+ onDisk
13
+ };
14
+ }
15
+ /** `--check`: one entry per file that is missing or differs, naming its part; a differing file carries a short diff. */
16
+ function driftOf(cwd, files) {
17
+ const drift = [];
18
+ for (const file of files) {
19
+ if (file.rel === "-") continue;
20
+ const found = fileDrift(resolve(cwd, file.rel), file.text);
21
+ if (found?.kind === "missing") drift.push(`${file.part}: missing ${file.rel}`);
22
+ else if (found?.kind === "differs") drift.push(`${file.part}: ${file.rel}\n${shortDiff(file.rel, found.onDisk, file.text)}`);
23
+ }
24
+ return drift;
25
+ }
26
+ /** Writes every file but the stdout ones, all or nothing, and returns the stdout text for printing. */
27
+ function writeOutputFiles(cwd, files) {
28
+ const onDisk = files.filter((file) => file.rel !== "-");
29
+ applyFiles(cwd, onDisk.map((file) => ({
30
+ path: file.rel,
31
+ text: file.text
32
+ })));
33
+ return {
34
+ wrote: onDisk.map((file) => file.rel),
35
+ printed: files.filter((file) => file.rel === "-").map((file) => file.text.trimEnd()).join("\n")
36
+ };
37
+ }
38
+ const SPLIT_PARTS = [
39
+ "helpers",
40
+ "seeds",
41
+ "indexes",
42
+ "policies",
43
+ "hook"
44
+ ];
45
+ /** `--split helpers,seeds,indexes,policies,hook`: the parts in that fixed order, or an error. */
46
+ function parseSplit(raw) {
47
+ if (raw === void 0) return;
48
+ const names = raw.split(",").map((name) => name.trim()).filter((name) => name !== "");
49
+ if (names.filter((name) => !SPLIT_PARTS.some((part) => part === name)).length > 0 || names.length === 0) return `rls generate --split takes helpers, seeds, indexes, policies and hook, got '${raw}'`;
50
+ return SPLIT_PARTS.filter((part) => names.includes(part));
51
+ }
52
+ /** The path of one split part: `{part}` in `out` replaced by the part name. */
53
+ function partPath(out, part) {
54
+ return out.replaceAll("{part}", part);
55
+ }
56
+ /**
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.
59
+ */
60
+ function pgDeltaPath(root, part, schema) {
61
+ switch (part) {
62
+ case "helpers":
63
+ case "indexes":
64
+ case "seeds": return `${root}/${schema}/${part}.sql`;
65
+ case "policies": return `${root}/public/policies/permdock.sql`;
66
+ case "hook": return `${root}/${schema}/functions/custom_access_token_hook.sql`;
67
+ default: return part;
68
+ }
69
+ }
70
+ /** Whether `--seeds-out` names a migrations directory: it ends with \`/\` or is an existing directory. */
71
+ function isSeedsDirectory(cwd, out) {
72
+ if (out === "-") return false;
73
+ if (out.endsWith("/")) return true;
74
+ const path = resolve(cwd, out);
75
+ return existsSync(path) && statSync(path).isDirectory();
76
+ }
77
+ /**
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.
83
+ */
84
+ function dataMigrationFile(input) {
85
+ if (!isSeedsDirectory(input.cwd, input.out)) return {
86
+ part: input.part,
87
+ rel: input.out,
88
+ text: input.text
89
+ };
90
+ const planned = seedsMigration(input.cwd, input.out, input.marker, input.text, input.now, input.part, input.reserved);
91
+ return !planned.current || input.check ? {
92
+ part: input.part,
93
+ rel: planned.rel,
94
+ text: input.text
95
+ } : void 0;
96
+ }
97
+ /** `YYYYMMDDHHMMSS` in UTC, the Supabase migration version. */
98
+ function migrationVersion(now) {
99
+ return now.toISOString().replaceAll(/[^0-9]/gu, "").slice(0, 14);
100
+ }
101
+ const VERSION_PREFIX = /^\d{14}(?=_)/u;
102
+ /**
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`.
106
+ */
107
+ function nextMigrationVersion(names, now) {
108
+ const times = names.flatMap((name) => {
109
+ const stamp = VERSION_PREFIX.exec(name)?.[0];
110
+ return stamp === void 0 ? [] : [Date.UTC(Number(stamp.slice(0, 4)), Number(stamp.slice(4, 6)) - 1, Number(stamp.slice(6, 8)), Number(stamp.slice(8, 10)), Number(stamp.slice(10, 12)), Number(stamp.slice(12, 14)))];
111
+ });
112
+ return times.length === 0 ? migrationVersion(now) : migrationVersion(dateAt({ epochMilliseconds: Math.max(...times) + 1e3 }));
113
+ }
114
+ /**
115
+ * The seeds part in a migrations directory: the newest migration there that
116
+ * starts with \`marker\` when its text is \`text\` already, otherwise a new
117
+ * \`<version>_permdock_seeds.sql\` one second after the newest migration
118
+ * (\`nextMigrationVersion\`), so a regeneration of the same directory names it
119
+ * the same. \`current\` is false when a new one is due. \`label\` replaces
120
+ * \`seeds\` in the file name for the other generated data migrations.
121
+ * \`reserved\` holds paths, relative to \`cwd\`, that this run writes; the ones
122
+ * in \`dir\` count as migrations already there.
123
+ */
124
+ function seedsMigration(cwd, dir, marker, text, now, label = "seeds", reserved = []) {
125
+ const base = dir.endsWith("/") ? dir.slice(0, -1) : dir;
126
+ const path = resolve(cwd, base);
127
+ const latest = existsSync(path) ? readdirSync(path).filter((name) => name.endsWith(".sql")).toSorted().toReversed().find((name) => readFileSync(resolve(path, name), "utf8").startsWith(marker)) : void 0;
128
+ if (latest !== void 0 && readFileSync(resolve(path, latest), "utf8") === text) return {
129
+ rel: `${base}/${latest}`,
130
+ current: true
131
+ };
132
+ return {
133
+ rel: `${base}/${nextMigrationVersion([...existsSync(path) ? readdirSync(path) : [], ...reserved.filter((rel) => resolve(cwd, dirname(rel)) === path).map((rel) => basename(rel))], now)}_permdock_${label}.sql`,
134
+ current: false
135
+ };
136
+ }
137
+ //#endregion
138
+ export { isSeedsDirectory as a, parseSplit as c, seedsMigration as d, writeOutputFiles as f, fileDrift as i, partPath as l, dataMigrationFile as n, migrationVersion as o, driftOf as r, nextMigrationVersion as s, SPLIT_PARTS as t, pgDeltaPath as u };