permdock 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1,59 @@
1
+ import { E as PermissionTree, w as Permission } from "./vocabulary-CN8H_9UF.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 { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
4
- import { A as ConnectionOptions, O as Connection, i as OpenApiHooks } from "../server-types-DdqBwZN_.js";
5
- import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
6
- import { t as StreamProtectOptions } from "../stream-Dwsg6WwE.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
+ import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
+ import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CKQiCnON.js";
6
+ import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
7
+ import { t as StreamProtectOptions } from "../stream-CeCMJmBB.js";
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
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { o as isPermission } from "../permission-registry-BsblpB-z.js";
2
+ import { o as isPermission } from "../permission-registry-Br4jSNVi.js";
3
3
  import { o as problemMessage } from "../http-BBoKefeS.js";
4
- import { t as problemFromError } from "../map-error-BE27PYkE.js";
5
- import { n as attached } from "../bind-kk-uyCwH.js";
6
- import { a as reloadAfter, r as isAsyncIterable } from "../stream-BMui98KK.js";
7
- import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-nYC3cR_u.js";
4
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
5
+ import { n as attached } from "../bind-CAvgUuKs.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-VSl5ylaQ.js";
8
8
  import { ORPCError } from "@orpc/server";
9
9
  //#region src/orpc/create.ts
10
10
  function toOpts(mw, input, next) {
@@ -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,17 +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, scope, guard } = await runGuard(permission, loadData, opts, protectOptions);
114
+ const { request, scope, guard } = await runGuard(permission, data, opts, protectOptions);
111
115
  if (guard.ok) {
112
116
  const nextCtx = {
113
117
  ...opts.context,
@@ -115,11 +119,11 @@ function createPermDock(policy, options) {
115
119
  permdockData: guard.data
116
120
  };
117
121
  attach(nextCtx, request);
118
- 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);
119
123
  }
120
124
  return throwOrpcError(guard.response, mwOptions.errors);
121
125
  }));
122
- const permdockHandler = (request) => {
126
+ const handler = (request) => {
123
127
  return evaluate(request, {
124
128
  context: { req: request },
125
129
  path: ["permdock"],
@@ -128,10 +132,11 @@ function createPermDock(policy, options) {
128
132
  };
129
133
  const kernelOpenApi = kernel.openapi;
130
134
  return {
131
- permdock,
135
+ getPermDock,
136
+ middleware,
132
137
  protect,
133
138
  connection,
134
- permdockHandler,
139
+ permdockHandler: () => handler,
135
140
  openapi: {
136
141
  protect,
137
142
  security: kernelOpenApi.security,
@@ -1,5 +1,6 @@
1
- import { j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.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-CUcFZfpU.js";
1
+ import { j as PolicyVocabulary } from "../policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "../permdock-SV8ZINYT.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-lUlG3TVd.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,10 +1,15 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as wrapPermDock } from "../wrap-DWsU_5Bd.js";
3
- import { r as appObligationNames } from "../ocsf-uYFXGVw2.js";
2
+ import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
3
+ import { r as appObligationNames } from "../ocsf-BFp-PZZA.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";
7
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";
8
13
  //#endregion
9
14
  //#region src/otel/instrument.ts
10
15
  const FORBIDDEN = /* @__PURE__ */ new Set([
@@ -80,9 +85,26 @@ function omitPath(attributes, path) {
80
85
  matched: true
81
86
  };
82
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
+ }
83
98
  function attributesOf(event, options, parent) {
84
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 !== "");
85
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),
86
108
  "permdock.outcome": event.outcome,
87
109
  "permdock.permission": event.permission,
88
110
  "permdock.scope": event.scope,
@@ -91,10 +113,11 @@ function attributesOf(event, options, parent) {
91
113
  "permdock.subject.id": event.subject.principal?.id,
92
114
  "permdock.actor.id": event.subject.actor?.id,
93
115
  "permdock.actor.kind": event.subject.actor?.kind,
94
- "permdock.delegation.scopes": event.subject.delegation?.scopes?.join(","),
116
+ "permdock.support_session.id": event.subject.supportSession?.id,
117
+ "permdock.delegation.scopes": scopes,
95
118
  "permdock.matched.role": event.matched?.role,
96
119
  "permdock.matched.name": event.matched?.name,
97
- "permdock.obligations": appObligationNames(event)?.join(","),
120
+ "permdock.obligations": appObligationNames(event),
98
121
  "permdock.denials.count": event.denials?.length,
99
122
  "permdock.token": event.token,
100
123
  "permdock.validate": event.trusted ? "trusted" : "boundary",
@@ -135,9 +158,9 @@ function recordSignals(event, options, api, timing) {
135
158
  span.setAttributes?.(attributes);
136
159
  if (event.outcome === "denied") {
137
160
  span.addEvent?.("permdock.denied", compact({
138
- role: event.denials?.map((denial) => denial.role).join(","),
139
- reason: event.denials?.map((denial) => denial.reason).join(","),
140
- alternatives: event.alternatives?.join(",")
161
+ role: event.denials?.map((denial) => denial.role ?? ""),
162
+ reason: event.denials?.map((denial) => denial.reason),
163
+ alternatives: event.alternatives
141
164
  }));
142
165
  if (event.denials?.some((denial) => denial.reason === "validation") === true) span.recordException?.(/* @__PURE__ */ new Error("validation"));
143
166
  if (options.errorOnDeny === true) span.setStatus?.({ code: SPAN_STATUS_ERROR });
@@ -0,0 +1,88 @@
1
+ import { s as cliVersion } from "./version-CEbQ5UeM.js";
2
+ import { t as DOCS_BASE } from "./manifest-dvL2XEe1.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";
@@ -1,7 +1,8 @@
1
- import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
2
- import { t as shortDiff } from "./text-diff-BdkkYSbi.js";
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";
3
4
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
4
- import { resolve } from "node:path";
5
+ import { basename, dirname, resolve } from "node:path";
5
6
  /** How `path` on disk differs from `expected`; `undefined` when `same` holds. */
6
7
  function fileDrift(path, expected, same = (a, b) => a === b) {
7
8
  if (!existsSync(path)) return { kind: "missing" };
@@ -22,25 +23,19 @@ function driftOf(cwd, files) {
22
23
  }
23
24
  return drift;
24
25
  }
25
- /** Writes every file but the stdout ones, whose text it returns for printing. */
26
+ /** Writes every file but the stdout ones, all or nothing, and returns the stdout text for printing. */
26
27
  function writeOutputFiles(cwd, files) {
27
- const wrote = [];
28
- const printed = [];
29
- for (const file of files) {
30
- if (file.rel === "-") {
31
- printed.push(file.text.trimEnd());
32
- continue;
33
- }
34
- const path = resolve(cwd, file.rel);
35
- writeFileEnsuringDir(path, file.text);
36
- wrote.push(file.rel);
37
- }
28
+ const onDisk = files.filter((file) => file.rel !== "-");
29
+ applyFiles(cwd, onDisk.map((file) => ({
30
+ path: file.rel,
31
+ text: file.text
32
+ })));
38
33
  return {
39
- wrote,
40
- printed: printed.join("\n")
34
+ wrote: onDisk.map((file) => file.rel),
35
+ printed: files.filter((file) => file.rel === "-").map((file) => file.text.trimEnd()).join("\n")
41
36
  };
42
37
  }
43
- const PARTS = [
38
+ const SPLIT_PARTS = [
44
39
  "helpers",
45
40
  "seeds",
46
41
  "indexes",
@@ -51,8 +46,8 @@ const PARTS = [
51
46
  function parseSplit(raw) {
52
47
  if (raw === void 0) return;
53
48
  const names = raw.split(",").map((name) => name.trim()).filter((name) => name !== "");
54
- if (names.filter((name) => !PARTS.some((part) => part === name)).length > 0 || names.length === 0) return `rls generate --split takes helpers, seeds, indexes, policies and hook, got '${raw}'`;
55
- return PARTS.filter((part) => names.includes(part));
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));
56
51
  }
57
52
  /** The path of one split part: `{part}` in `out` replaced by the part name. */
58
53
  function partPath(out, part) {
@@ -83,7 +78,8 @@ function isSeedsDirectory(cwd, out) {
83
78
  * A generated data migration at `out`: a file, `-` for stdout, or a
84
79
  * migrations directory that gets a new versioned file only when the newest
85
80
  * one starting with `marker` differs. With `check`, the planned file is
86
- * always returned, so drift names it.
81
+ * always returned, so drift names it. `reserved` lists the files this run
82
+ * already plans, so two data migrations never share a version.
87
83
  */
88
84
  function dataMigrationFile(input) {
89
85
  if (!isSeedsDirectory(input.cwd, input.out)) return {
@@ -91,7 +87,7 @@ function dataMigrationFile(input) {
91
87
  rel: input.out,
92
88
  text: input.text
93
89
  };
94
- const planned = seedsMigration(input.cwd, input.out, input.marker, input.text, input.now, input.part);
90
+ const planned = seedsMigration(input.cwd, input.out, input.marker, input.text, input.now, input.part, input.reserved);
95
91
  return !planned.current || input.check ? {
96
92
  part: input.part,
97
93
  rel: planned.rel,
@@ -113,7 +109,7 @@ function nextMigrationVersion(names, now) {
113
109
  const stamp = VERSION_PREFIX.exec(name)?.[0];
114
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)))];
115
111
  });
116
- return times.length === 0 ? migrationVersion(now) : migrationVersion(new Date(Math.max(...times) + 1e3));
112
+ return times.length === 0 ? migrationVersion(now) : migrationVersion(dateAt({ epochMilliseconds: Math.max(...times) + 1e3 }));
117
113
  }
118
114
  /**
119
115
  * The seeds part in a migrations directory: the newest migration there that
@@ -122,8 +118,10 @@ function nextMigrationVersion(names, now) {
122
118
  * (\`nextMigrationVersion\`), so a regeneration of the same directory names it
123
119
  * the same. \`current\` is false when a new one is due. \`label\` replaces
124
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.
125
123
  */
126
- function seedsMigration(cwd, dir, marker, text, now, label = "seeds") {
124
+ function seedsMigration(cwd, dir, marker, text, now, label = "seeds", reserved = []) {
127
125
  const base = dir.endsWith("/") ? dir.slice(0, -1) : dir;
128
126
  const path = resolve(cwd, base);
129
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;
@@ -132,9 +130,9 @@ function seedsMigration(cwd, dir, marker, text, now, label = "seeds") {
132
130
  current: true
133
131
  };
134
132
  return {
135
- rel: `${base}/${nextMigrationVersion(existsSync(path) ? readdirSync(path) : [], now)}_permdock_${label}.sql`,
133
+ rel: `${base}/${nextMigrationVersion([...existsSync(path) ? readdirSync(path) : [], ...reserved.filter((rel) => resolve(cwd, dirname(rel)) === path).map((rel) => basename(rel))], now)}_permdock_${label}.sql`,
136
134
  current: false
137
135
  };
138
136
  }
139
137
  //#endregion
140
- export { parseSplit as a, seedsMigration as c, isSeedsDirectory as i, writeOutputFiles as l, driftOf as n, partPath as o, fileDrift as r, pgDeltaPath as s, dataMigrationFile as t };
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 };