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
@@ -1,2 +1,51 @@
1
- import { n as rowConditionKeys, t as parseCatalog } from "../parse-BuyjxhZV.js";
2
- export { parseCatalog, rowConditionKeys };
1
+ import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
2
+ import { t as hostedGrantDrops } from "../hosted-BZIAYvon.js";
3
+ import { n as rowConditionKeys, t as parseCatalog } from "../parse-Cxq0WxrA.js";
4
+ import { t as operationFindings } from "../operation-findings-DgATDpvh.js";
5
+ import { n as resourceSchemaFromJson, t as policyFromCatalog } from "../policy-from-catalog-DzhEc3Y9.js";
6
+ import { n as parsePushedPolicy, r as pushedPolicy, t as PUSHED_POLICY_SCHEMA } from "../pushed-policy-DobP7AHI.js";
7
+ //#region src/catalog/drift.ts
8
+ /** The finding a drop reason becomes; `null` for a reason the catalog did not cause. */
9
+ function findingCode(reason) {
10
+ switch (reason) {
11
+ case "unknown-permission": return "permission-removed";
12
+ case "not-hostable": return "not-hostable";
13
+ case "unknown-grantee": return "grantee-removed";
14
+ case "weaker-approval": return "approval-tightened";
15
+ case "non-portable":
16
+ case "invalid": return null;
17
+ default: return reason;
18
+ }
19
+ }
20
+ /**
21
+ * The hosted grants of `document` that `policy` no longer accepts, as drift
22
+ * findings with the grant id set. A grant dropped for a reason the catalog
23
+ * cannot cause (`non-portable`, `invalid`) is not a finding.
24
+ */
25
+ function hostedGrantFindings(policy, document) {
26
+ if (document === null) return [];
27
+ return hostedGrantDrops(policy, document).flatMap((drop) => {
28
+ const code = findingCode(drop.reason);
29
+ return code === null ? [] : [freezeDeep({
30
+ code,
31
+ permission: drop.permission,
32
+ ...drop.grant === "" ? {} : { grant: drop.grant }
33
+ })];
34
+ });
35
+ }
36
+ /**
37
+ * The `data` of a `com.permdock.catalog.drifted` event: the hosted grants
38
+ * `next` breaks, then the operations whose risk rose or whose approval was
39
+ * removed between `previous` and `next`.
40
+ */
41
+ function catalogDrift(input) {
42
+ const findings = [...hostedGrantFindings(input.policy, input.document ?? null), ...operationFindings(input.previous, input.next)];
43
+ return freezeDeep({
44
+ kind: "drift",
45
+ fingerprint: input.next.fingerprint ?? "",
46
+ ...input.previous.fingerprint === void 0 ? {} : { previous: input.previous.fingerprint },
47
+ findings
48
+ });
49
+ }
50
+ //#endregion
51
+ export { PUSHED_POLICY_SCHEMA, catalogDrift, hostedGrantFindings, operationFindings, parseCatalog, parsePushedPolicy, policyFromCatalog, pushedPolicy, resourceSchemaFromJson, rowConditionKeys };
@@ -0,0 +1,100 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { r as listSourceFiles, t as defaultSrcPath } from "./files-D_JIzUrP.js";
3
+ import { a as formatCatalogJson, i as catalogSchemaDocument, o as formatCatalogMarkdown, t as buildCatalog } from "./catalog-doc-C9wjsfNY.js";
4
+ import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
5
+ import { a as loadConfiguredOperations, i as scanSources, r as runCollect } from "./collect-CrZJJnEF.js";
6
+ import { n as fileSummary, t as applyFiles } from "./files-C5ZI27eV.js";
7
+ import { existsSync, readFileSync } from "node:fs";
8
+ import { resolve } from "node:path";
9
+ //#region src/cli/catalog.ts
10
+ async function runCatalog(input) {
11
+ if (input.format === "schema") return {
12
+ code: 0,
13
+ output: `${JSON.stringify(catalogSchemaDocument(), null, 2)}\n`
14
+ };
15
+ const from = input.from ?? input.config.permissions;
16
+ let document;
17
+ if (from !== void 0) {
18
+ const abs = resolve(input.cwd, from);
19
+ if (!existsSync(abs)) return {
20
+ code: 2,
21
+ output: `PermDock CLI: module not found: ${from}`
22
+ };
23
+ const tree = asPermissionTree(pickNamed(await loadModule(abs), ["permissions"]));
24
+ const srcPath = input.config.collect?.srcPath ?? defaultSrcPath();
25
+ const files = listSourceFiles(input.cwd, srcPath);
26
+ const scan = scanSources(input.cwd, files, new Set(leavesOf(tree).map((leaf) => leaf.key)));
27
+ document = buildCatalog(tree, scan, input.now.toISOString(), await loadConfiguredPolicy(input.cwd, input.config.policy), await loadConfiguredOperations(input.cwd, input.config.operations));
28
+ } else {
29
+ const collected = await runCollect({
30
+ cwd: input.cwd,
31
+ config: input.config,
32
+ collect: input.config.collect ?? {},
33
+ check: false,
34
+ now: input.now,
35
+ io: input.io
36
+ });
37
+ if (collected.document === void 0) return {
38
+ code: collected.code,
39
+ output: collected.message
40
+ };
41
+ document = collected.document;
42
+ }
43
+ const filtered = input.include.length === 0 ? document : {
44
+ ...document,
45
+ permissions: document.permissions.filter((permission) => input.include.some((prefix) => permission.key === prefix || permission.key.startsWith(`${prefix}.`) || permission.resource === prefix))
46
+ };
47
+ if (input.format === "markdown") return {
48
+ code: 0,
49
+ output: formatCatalogMarkdown(filtered)
50
+ };
51
+ return {
52
+ code: 0,
53
+ output: formatCatalogJson(filtered)
54
+ };
55
+ }
56
+ /** The comparable form of a catalog file: without the fields every run changes. */
57
+ function comparable(text) {
58
+ try {
59
+ const parsed = JSON.parse(text);
60
+ if (isRecord(parsed)) {
61
+ const { generatedAt: _generatedAt, generator: _generator, ...rest } = parsed;
62
+ return JSON.stringify(rest);
63
+ }
64
+ } catch {}
65
+ return text;
66
+ }
67
+ /** `catalog --out`: writes the export, or with `--check` exits 1 when the file differs. */
68
+ function catalogFile(cwd, out, text, check) {
69
+ if (check) {
70
+ const path = resolve(cwd, out);
71
+ if (!existsSync(path)) return {
72
+ code: 1,
73
+ output: `catalog missing: ${out}`,
74
+ data: {
75
+ out,
76
+ stale: true
77
+ }
78
+ };
79
+ const stale = comparable(readFileSync(path, "utf8")) !== comparable(text);
80
+ return {
81
+ code: stale ? 1 : 0,
82
+ output: stale ? `catalog stale: ${out}` : `${out} is up to date`,
83
+ data: {
84
+ out,
85
+ stale
86
+ }
87
+ };
88
+ }
89
+ const applied = applyFiles(cwd, [{
90
+ path: out,
91
+ text
92
+ }]);
93
+ return {
94
+ code: 0,
95
+ output: fileSummary(applied, false),
96
+ data: { files: applied }
97
+ };
98
+ }
99
+ //#endregion
100
+ export { runCatalog as n, catalogFile as t };
@@ -0,0 +1 @@
1
+ export { t as catalogFile, n as runCatalog } from "./catalog-BECMPrwc.js";
@@ -0,0 +1,52 @@
1
+ import { c as missingInput } from "./errors-CWTY6uih.js";
2
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
3
+ import { c as given, l as outFlag, t as checkFlag, u as permissionsFlag } from "./flags-C3DktBDY.js";
4
+ //#region src/cli/commands/catalog.ts
5
+ const RUN_FORMAT = {
6
+ catalog: "json",
7
+ "json-schema": "schema",
8
+ markdown: "markdown"
9
+ };
10
+ const catalog = defineLeaf({
11
+ flags: {
12
+ kind: {
13
+ type: "enum",
14
+ options: [
15
+ "catalog",
16
+ "json-schema",
17
+ "markdown"
18
+ ],
19
+ default: "catalog",
20
+ description: "What to print: the catalog, its JSON Schema, or a Markdown table"
21
+ },
22
+ ...permissionsFlag,
23
+ include: {
24
+ type: "string",
25
+ repeatable: true,
26
+ description: "Permission keys or prefixes to keep",
27
+ valueHint: "key"
28
+ },
29
+ ...outFlag,
30
+ ...checkFlag
31
+ },
32
+ async run(ctx, { flags }) {
33
+ const { catalogFile, runCatalog } = await import("./catalog-DjhMYYCq.js");
34
+ const result = await runCatalog({
35
+ cwd: ctx.cwd,
36
+ config: ctx.config,
37
+ format: RUN_FORMAT[flags.kind],
38
+ from: given(flags.permissions),
39
+ include: flags.include,
40
+ now: ctx.now,
41
+ io: ctx.io
42
+ });
43
+ const out = given(flags.out === "-" ? "" : flags.out);
44
+ if (out === void 0) {
45
+ if (flags.check) throw missingInput("catalog --check", ["--out"], "the file to compare");
46
+ return result;
47
+ }
48
+ return result.code === 0 ? catalogFile(ctx.cwd, out, result.output, flags.check) : result;
49
+ }
50
+ });
51
+ //#endregion
52
+ export { catalog };
@@ -1,11 +1,12 @@
1
- import { _ as listPermissions, a as formerKeys, c as getResource } from "./permissions-DVoF6dMt.js";
2
- import { t as catalogFingerprint } from "./src-BDwEZWrZ.js";
3
- import { S as findRole } from "./grantee-Cv5Sogfv.js";
4
- import { t as canonicalJson } from "./canonical-json-DemiK4Vp.js";
1
+ import { a as getResource, c as listPermissions, h as formerKeys } from "./permission-registry-Br4jSNVi.js";
2
+ import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
3
+ import { m as findRole, v as listRoles } from "./grantee-Cn1HyUsI.js";
4
+ import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
5
5
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
6
- import { t as catalogSchema } from "./schema-D3MnDMxa.js";
6
+ import { t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
7
+ import { t as catalogSchema } from "./schema-B4v0Qrac.js";
7
8
  import { t as policyRowConditionKeys } from "./row-conditions-h2HythXQ.js";
8
- import { s as generatorBanner, t as CATALOG_SCHEMA } from "./version-BvacVTZR.js";
9
+ import { c as generatorBanner, n as CATALOG_SCHEMA } from "./version-CEbQ5UeM.js";
9
10
  //#region src/cli/catalog-doc.ts
10
11
  function leafLevels(tree, leaf) {
11
12
  if (leaf.kind !== "instance") return;
@@ -13,7 +14,7 @@ function leafLevels(tree, leaf) {
13
14
  return names.length === 0 ? void 0 : names;
14
15
  }
15
16
  /** With `policy`, permissions carry `hostable` and a known `rowConditions` (without, it is `true`), and roles carry `on`, `assignable` and their ownership rules. */
16
- function buildCatalog(tree, scan, generatedAt, policy) {
17
+ function buildCatalog(tree, scan, generatedAt, policy, operations) {
17
18
  const hostable = new Set(policy?.hostable ?? []);
18
19
  const rowConditions = policy === void 0 ? void 0 : policyRowConditionKeys(policy);
19
20
  const resources = {};
@@ -21,21 +22,18 @@ function buildCatalog(tree, scan, generatedAt, policy) {
21
22
  for (const leaf of listPermissions(tree)) {
22
23
  if (resources[leaf.resource] !== void 0) continue;
23
24
  const node = getResource(tree, leaf.resource);
24
- resources[leaf.resource] = compactResource(definedIn === void 0 ? {
25
+ resources[leaf.resource] = compactResource({
25
26
  id: node?.id ?? "id",
26
27
  schema: node === void 0 ? null : jsonSchemaOf(node),
28
+ ...definedIn === void 0 ? {} : { definedIn },
29
+ parent: node?.parent,
30
+ links: node?.links,
31
+ disclosure: node?.disclosure,
27
32
  relations: node?.relations,
28
33
  version: node?.version,
29
34
  restricted: node?.restricted,
30
- restrictedStops: node?.restrictedStops
31
- } : {
32
- id: node?.id ?? "id",
33
- schema: node === void 0 ? null : jsonSchemaOf(node),
34
- definedIn,
35
- relations: node?.relations,
36
- version: node?.version,
37
- restricted: node?.restricted,
38
- restrictedStops: node?.restrictedStops
35
+ restrictedStops: node?.restrictedStops,
36
+ meta: node?.meta
39
37
  });
40
38
  }
41
39
  const approvals = codeApprovals(policy);
@@ -61,7 +59,9 @@ function buildCatalog(tree, scan, generatedAt, policy) {
61
59
  ...catalogRoles(scan.roleNames, policy),
62
60
  ...scan.planNames.length === 0 ? {} : { plans: scan.planNames.map((key) => ({ key })) },
63
61
  ...policy === void 0 ? {} : { grants: catalogGrants(policy) },
64
- ...policy?.delegations === void 0 ? {} : { delegations: catalogDelegations(policy) }
62
+ ...policy?.delegations === void 0 ? {} : { delegations: catalogDelegations(policy) },
63
+ ...operations === void 0 ? {} : { operations },
64
+ ...policy?.oauthScopes === void 0 || policy.oauthScopes.length === 0 ? {} : { oauthScopes: catalogOAuthScopes(policy.oauthScopes) }
65
65
  };
66
66
  const head = {
67
67
  $schema: CATALOG_SCHEMA,
@@ -114,12 +114,13 @@ function catalogGrant(grant) {
114
114
  check: grant.portable ? grant.check : void 0,
115
115
  approval: catalogApproval(grant.approval),
116
116
  fields: grant.fields,
117
- validity: grant.validity,
117
+ validity: wireValidity(grant.validity),
118
118
  name: grant.name,
119
119
  purpose: grant.purpose,
120
120
  requires: grant.requires?.length === 1 ? grant.requires[0] : grant.requires,
121
121
  limit,
122
- portable: grant.portable ? void 0 : false
122
+ portable: grant.portable ? void 0 : false,
123
+ meta: nonEmpty(grant.meta)
123
124
  })
124
125
  };
125
126
  }
@@ -149,13 +150,19 @@ function catalogDelegations(policy) {
149
150
  from: delegation.from,
150
151
  to: delegation.to,
151
152
  permissions: delegation.permissions,
152
- validity: delegation.validity
153
+ validity: wireValidity(delegation.validity)
153
154
  })).toSorted((a, b) => {
154
155
  const left = canonicalJson(a);
155
156
  const right = canonicalJson(b);
156
157
  return left < right ? -1 : left > right ? 1 : 0;
157
158
  });
158
159
  }
160
+ function catalogOAuthScopes(declared) {
161
+ return declared.map((entry) => ({
162
+ scope: entry.scope,
163
+ permissions: [...new Set(entry.permissions)].toSorted(byCodePoint)
164
+ })).toSorted((a, b) => byCodePoint(a.scope, b.scope));
165
+ }
159
166
  /** Per permission key, the distinct approvals the code allows require, in policy order. */
160
167
  function codeApprovals(policy) {
161
168
  const out = /* @__PURE__ */ new Map();
@@ -196,11 +203,23 @@ function catalogScopes(policy) {
196
203
  }
197
204
  function catalogRoles(scanned, policy) {
198
205
  if (policy === void 0) return scanned.length === 0 ? {} : { roles: scanned.map((key) => ({ key })) };
199
- const names = [.../* @__PURE__ */ new Set([...scanned, ...policy.roles.map((role) => role.name)])].toSorted();
206
+ const names = [.../* @__PURE__ */ new Set([
207
+ ...scanned,
208
+ ...policy.roles.map((role) => role.name),
209
+ ...listRoles(policy.vocabulary?.roles).map((leaf) => leaf.key)
210
+ ])].toSorted();
200
211
  if (names.length === 0) return {};
201
212
  return { roles: names.map((key) => {
202
213
  const binding = policy.rolesByName.get(key);
203
- if (binding === void 0) return { key };
214
+ if (binding === void 0) {
215
+ const leaf = findRole(policy.vocabulary?.roles, key);
216
+ return leaf === void 0 ? { key } : withDefined({
217
+ key,
218
+ on: leaf.on,
219
+ assignable: leaf.assignable,
220
+ audience: leaf.meta.audience
221
+ });
222
+ }
204
223
  const audience = binding.meta?.audience ?? findRole(policy.vocabulary.roles, key)?.meta.audience;
205
224
  return withDefined({
206
225
  key,
@@ -237,13 +256,23 @@ function compactResource(resource) {
237
256
  schema: resource.schema,
238
257
  ...withDefined({
239
258
  definedIn: resource.definedIn,
259
+ parent: resource.parent === void 0 ? void 0 : {
260
+ field: resource.parent.field,
261
+ resource: resource.parent.resource
262
+ },
263
+ links: resource.links === void 0 || Object.keys(resource.links).length === 0 ? void 0 : resource.links,
264
+ disclosure: resource.disclosure === "hide" ? "hide" : void 0,
240
265
  relations,
241
266
  version: resource.version,
242
267
  restricted: resource.restricted,
243
- restrictedStops: resource.restrictedStops
268
+ restrictedStops: resource.restrictedStops,
269
+ meta: nonEmpty(resource.meta)
244
270
  })
245
271
  };
246
272
  }
273
+ function nonEmpty(meta) {
274
+ return meta === void 0 || Object.keys(meta).length === 0 ? void 0 : { ...meta };
275
+ }
247
276
  function metaRecord(meta) {
248
277
  return { ...meta };
249
278
  }
@@ -283,4 +312,4 @@ function catalogSchemaDocument() {
283
312
  return catalogSchema;
284
313
  }
285
314
  //#endregion
286
- export { formatCatalogMarkdown as a, formatCatalogJson as i, catalogForCompare as n, jsonSchemaOf as o, catalogSchemaDocument as r, buildCatalog as t };
315
+ export { formatCatalogJson as a, catalogSchemaDocument as i, catalogForCompare as n, formatCatalogMarkdown as o, catalogOAuthScopes as r, jsonSchemaOf as s, buildCatalog as t };
@@ -0,0 +1,153 @@
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
+ import { l as isRfc3339 } from "./time-DkWjdL98.js";
5
+ import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
6
+ import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
7
+ import { C as EVENT_SCHEMA_IDS, T as SINK_EVENT_SCHEMAS, i as RESERVED_CLOUD_EVENT_TYPES, l as isAbsoluteUri, r as CLOUD_EVENT_TYPES, s as cloudEventType, u as isTraceparent, v as CATALOG_EVENT_SCHEMA } from "./sink-BEZSlMS_.js";
8
+ import { n as copyJson, t as checkSchema } from "./json-schema-B-vAwlde.js";
9
+ //#region src/core/parse-sink-events.ts
10
+ function hasUnsafeKey(value) {
11
+ if (Array.isArray(value)) return value.some(hasUnsafeKey);
12
+ if (!isRecord(value)) return false;
13
+ return Object.keys(value).some((key) => isForbiddenKey(key) || hasUnsafeKey(value[key]));
14
+ }
15
+ /** A JSON copy of `value` that matches `schema`, or `null`. */
16
+ function jsonMatching(value, schema) {
17
+ const issues = [];
18
+ const copy = copyJson(value, [], issues, /* @__PURE__ */ new Set());
19
+ if (issues.length > 0 || !isRecord(copy) || hasUnsafeKey(copy)) return null;
20
+ checkSchema(schema, copy, [], issues);
21
+ return issues.length === 0 ? copy : null;
22
+ }
23
+ function timesValid(event) {
24
+ const membership = event["membership"];
25
+ return isRfc3339(event["at"]) && (event["expiresAt"] === void 0 || isRfc3339(event["expiresAt"])) && (!isRecord(membership) || membership["expiresAt"] === void 0 || isRfc3339(membership["expiresAt"]));
26
+ }
27
+ function rulesHold(event) {
28
+ if (event["type"] === "membership") return event["scope"] === void 0 === (event["id"] === void 0) && (event["within"] === void 0 || event["scope"] !== void 0);
29
+ if (event["type"] === "credential") return event["sample"] === void 0 || event["operation"] === "used";
30
+ if (event["type"] === "automation") return event["run"] === void 0 === (event["operation"] !== "run");
31
+ if (event["type"] === "delivery") return event["operation"] === "failed" || event["cause"] === void 0 && event["retryable"] === void 0;
32
+ return true;
33
+ }
34
+ /**
35
+ * Validates one untrusted sink event against its family's schema and returns
36
+ * a frozen copy, or `null` for anything else. Never throws.
37
+ */
38
+ function parseSinkEvent(value) {
39
+ if (!isRecord(value)) return null;
40
+ const type = value["type"];
41
+ if (typeof type !== "string" || !Object.hasOwn(SINK_EVENT_SCHEMAS, type)) return null;
42
+ const schema = SINK_EVENT_SCHEMAS[type];
43
+ const copy = jsonMatching(value, schema);
44
+ if (copy === null || !timesValid(copy) || !rulesHold(copy)) return null;
45
+ return freezeDeep(copy);
46
+ }
47
+ /**
48
+ * Validates an untrusted list of sink events, such as a request body a sink
49
+ * receiver read. Each event that fails its schema is dropped, and a value
50
+ * that is not an array yields no events. Never throws.
51
+ */
52
+ function parseSinkEvents(value) {
53
+ if (!Array.isArray(value)) return Object.freeze([]);
54
+ return Object.freeze(value.flatMap((item) => {
55
+ const event = parseSinkEvent(item);
56
+ return event === null ? [] : [event];
57
+ }));
58
+ }
59
+ /** Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it does not match. */
60
+ function parseCatalogEventData(value) {
61
+ const copy = jsonMatching(value, CATALOG_EVENT_SCHEMA);
62
+ return copy === null ? null : freezeDeep(copy);
63
+ }
64
+ const RESERVED = new Set(RESERVED_CLOUD_EVENT_TYPES);
65
+ const TYPES = new Set(Object.values(CLOUD_EVENT_TYPES).filter((type) => !RESERVED.has(type)));
66
+ function catalogType(data) {
67
+ return data.kind === "publish" ? CLOUD_EVENT_TYPES.catalogPublished : CLOUD_EVENT_TYPES.catalogDrifted;
68
+ }
69
+ function envelopeValid(value) {
70
+ return value["specversion"] === "1.0" && typeof value["type"] === "string" && TYPES.has(value["type"]) && isAbsoluteUri(value["source"]) && typeof value["id"] === "string" && value["id"] !== "" && isRfc3339(value["time"]) && (value["subject"] === void 0 || typeof value["subject"] === "string") && (value["datacontenttype"] === void 0 || value["datacontenttype"] === "application/json") && (value["traceparent"] === void 0 || isTraceparent(value["traceparent"])) && (value["tracestate"] === void 0 || typeof value["tracestate"] === "string");
71
+ }
72
+ /**
73
+ * Validates one CloudEvent against the closed type list, its `dataschema` and
74
+ * its data shape; `null` for anything else, a reserved type included. Never
75
+ * throws.
76
+ */
77
+ function parseCloudEvent(value) {
78
+ if (!isRecord(value) || hasUnsafeKey(value) || !envelopeValid(value)) return null;
79
+ const type = value["type"];
80
+ const raw = value["data"];
81
+ let data;
82
+ let expected;
83
+ let schema;
84
+ if (type === CLOUD_EVENT_TYPES.catalogPublished || type === CLOUD_EVENT_TYPES.catalogDrifted) {
85
+ const catalog = parseCatalogEventData(raw);
86
+ data = catalog;
87
+ expected = catalog === null ? void 0 : catalogType(catalog);
88
+ schema = EVENT_SCHEMA_IDS.catalog;
89
+ } else {
90
+ const event = parseSinkEvent(raw);
91
+ data = event;
92
+ expected = event === null ? void 0 : cloudEventType(event);
93
+ schema = event === null ? "" : EVENT_SCHEMA_IDS[event.type];
94
+ }
95
+ if (data === null || expected !== type || value["dataschema"] !== schema) return null;
96
+ return freezeDeep(compact({
97
+ specversion: "1.0",
98
+ type: expected,
99
+ source: value["source"],
100
+ subject: value["subject"],
101
+ id: value["id"],
102
+ time: value["time"],
103
+ datacontenttype: "application/json",
104
+ dataschema: schema,
105
+ traceparent: value["traceparent"],
106
+ tracestate: value["tracestate"],
107
+ data
108
+ }));
109
+ }
110
+ /**
111
+ * Validates a CloudEvents JSON batch (`application/cloudevents-batch+json`):
112
+ * `null` unless the value is an array and every event in it is valid.
113
+ */
114
+ function parseCloudEventBatch(value) {
115
+ if (!Array.isArray(value)) return null;
116
+ const events = [];
117
+ for (const item of value) {
118
+ const event = parseCloudEvent(item);
119
+ if (event === null) return null;
120
+ events.push(event);
121
+ }
122
+ return Object.freeze(events);
123
+ }
124
+ //#endregion
125
+ //#region src/core/catalog-fingerprint.ts
126
+ const OMITTED_TOP_LEVEL = /* @__PURE__ */ new Set([
127
+ "generatedAt",
128
+ "generator",
129
+ "fingerprint"
130
+ ]);
131
+ function fingerprintInput(catalog) {
132
+ const out = {};
133
+ for (const [key, value] of Object.entries(catalog)) {
134
+ if (OMITTED_TOP_LEVEL.has(key)) continue;
135
+ out[key] = key === "permissions" && Array.isArray(value) ? value.map((permission) => {
136
+ if (!isRecord(permission)) return permission;
137
+ const { usages: _usages, ...rest } = permission;
138
+ return rest;
139
+ }) : value;
140
+ }
141
+ return out;
142
+ }
143
+ /**
144
+ * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON without `generatedAt`, `generator`, `fingerprint`
145
+ * and every `permissions[].usages`, so neither the CLI version, the clock nor
146
+ * call sites change it.
147
+ */
148
+ function catalogFingerprint(catalog) {
149
+ if (!isRecord(catalog)) throw new TypeError("PermDock: a catalog must be an object");
150
+ return sha256Digest(canonicalJson(fingerprintInput(catalog)));
151
+ }
152
+ //#endregion
153
+ export { parseSinkEvent as a, parseCloudEventBatch as i, parseCatalogEventData as n, parseSinkEvents as o, parseCloudEvent as r, catalogFingerprint as t };
@@ -0,0 +1,2 @@
1
+ import { a as ChatCommandResult, c as createPermDock, d as SubjectFromChatOptions, f as isChatAuthor, i as ChatCommandContext, l as ChatAuthor, n as ChatActionResult, o as ChatPermDock, p as subjectFromChat, r as ChatCommand, s as ChatPermDockOptions, t as ChatAction, u as ChatPrincipal } from "../create-0VZ7Pdiu.js";
2
+ export { type ChatAction, type ChatActionResult, type ChatAuthor, type ChatCommand, type ChatCommandContext, type ChatCommandResult, type ChatPermDock, type ChatPermDockOptions, type ChatPrincipal, type SubjectFromChatOptions, createPermDock, isChatAuthor, subjectFromChat };