permdock 0.4.0 → 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 (514) 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-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 -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-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/arazzo-B6lebmiQ.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.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-Dg8XsRaO.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-BMZPIVUM.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-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
  34. package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -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-BMnAudHn.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-BSslw1QV.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-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
  48. package/dist/catalog-DjhMYYCq.js +1 -0
  49. package/dist/catalog-R_A__RsH.js +52 -0
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.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-CIoHNevm.js +87 -0
  68. package/dist/codemod-Bmj9dWMH.js +37 -0
  69. package/dist/codemod-Cxvvc70T.js +2084 -0
  70. package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
  71. package/dist/collect-DloHbDVa.js +55 -0
  72. package/dist/collect-FlXJlhus.js +1 -0
  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-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  77. package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  78. package/dist/completion-BqhRBJD8.js +143 -0
  79. package/dist/config-B46rm9sc.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  87. package/dist/create-BDS7wc3y.d.ts +138 -0
  88. package/dist/create-BFfm17UA.d.ts +110 -0
  89. package/dist/create-BWRSXgOF.js +403 -0
  90. package/dist/create-C3b4B5eF.js +130 -0
  91. package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
  92. package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-DaXVdDhM.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-D8jDHgsl.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.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-CxZo9pTq.js +37 -0
  104. package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
  105. package/dist/doctor-CxiwSfqH.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.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-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  116. package/dist/errors-CWTY6uih.js +143 -0
  117. package/dist/evaluate-_R8QkWaf.js +1732 -0
  118. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.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-g0ypLkID.js +120 -0
  129. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  130. package/dist/fields-D9tPVUUS.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-D2lZt4Dd.js} +55 -52
  135. package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
  136. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.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-DTcZOzhF.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-BZIAYvon.js +315 -0
  146. package/dist/hosted-DBDX0M-P.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-DMmOG27O.js} +190 -53
  152. package/dist/index-BcHcPyIo.d.ts +110 -0
  153. package/dist/index-CaxrMD1A.d.ts +1 -0
  154. package/dist/index-Chrs5fQ-.d.ts +210 -0
  155. package/dist/index-CxGUswIC.d.ts +431 -0
  156. package/dist/index-D8EovfsP.d.ts +91 -0
  157. package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
  158. package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
  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-Omfd793B.d.ts} +2 -2
  164. package/dist/instance-snapshot-Cxq4ygFc.js +600 -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-5JatXyND.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-CtKR3GXL.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-TCAdw-eW.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-BShP7Vf4.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-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
  205. package/dist/openapi-ahr8rHu3.js +138 -0
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-CxybZErY.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-Dyw8fyPF.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-BatFgAA4.js} +1698 -869
  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-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  219. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +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-B9JxkBwC.js +868 -0
  227. package/dist/permdock-D7eeLJER.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-CZKiUfFM.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  232. package/dist/policies-CO1oOymN.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
  235. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
  238. package/dist/postgrest-CW0IqC-U.js +566 -0
  239. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  240. package/dist/powersync-BHfuehf3.js +62 -0
  241. package/dist/powersync-CbzkqL_M.js +1 -0
  242. package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
  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-DXlt-vks.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-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
  255. package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
  256. package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
  259. package/dist/pull-BgIfno6w.js +256 -0
  260. package/dist/pull-ByOks_Tg.js +1 -0
  261. package/dist/push-CmFVBOeI.js +116 -0
  262. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  263. package/dist/pushed-policy-DobP7AHI.js +238 -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 +24 -22
  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-D7iKcLFe.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.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-BA8an5Ap.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
  287. package/dist/run-CNsApDpd.js +1 -0
  288. package/dist/run-DOfMtc9V.js +723 -0
  289. package/dist/run-ticket-BjhTOi6u.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-FO-Q8oj0.js} +16 -14
  293. package/dist/scan-BOI5tJ-6.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-DqCT4CgZ.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-BEZSlMS_.js +957 -0
  309. package/dist/sink-Bj_lDUDq.d.ts +225 -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-CXUWfsNy.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-DqK9eDmM.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-BV9j0DeZ.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-DLfUWFAI.js +1851 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  326. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
  330. package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
  331. package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.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-9pqI57pW.js +92 -0
  342. package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
  343. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  344. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
  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-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
  376. package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
  377. package/dist/types-BjV-fqcA.d.ts +57 -0
  378. package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
  379. package/dist/types-C8-KNsFf.d.ts +107 -0
  380. package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  381. package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
  382. package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
  383. package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
  384. package/dist/types-DX0LaKTb.d.ts +157 -0
  385. package/dist/types-DiQjupG2.d.ts +332 -0
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/types-_sHy8BQf.d.ts +65 -0
  388. package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
  389. package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CHOtwL19.js +1 -0
  393. package/dist/usage-DHtE8j4E.js +32 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.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-DbCL9bnB.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-D6lPdb4Z.d.ts} +65 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-BGUtGYoU.js +67 -0
  406. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  407. package/dist/watch-Cb-NcaUw.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.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-Dv-WTP-w.js +306 -0
  412. package/dist/who-can-D0QoYbEb.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-Bd1Tejur.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 +9 -8
  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 +5 -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/load-B_shHrmd.js +0 -2
  490. package/dist/manifest-BngWKryL.js +0 -770
  491. package/dist/may-use-BOn_dR_w.js +0 -78
  492. package/dist/openapi-DcQ1Kg40.js +0 -164
  493. package/dist/ownership-BgnbOJFT.js +0 -851
  494. package/dist/permdock-L26udHSk.js +0 -3646
  495. package/dist/powersync-BFSbSElQ.js +0 -62
  496. package/dist/powersync-DCDgZgfZ.js +0 -2
  497. package/dist/rls-55DQTuf5.js +0 -250
  498. package/dist/run-DMcNW_8T.js +0 -174
  499. package/dist/server-ZYEHtNHS.js +0 -268
  500. package/dist/sink-BTtmfPnE.js +0 -141
  501. package/dist/sink-CPN4zLfs.d.ts +0 -104
  502. package/dist/skills-Dle4ZoLF.js +0 -56
  503. package/dist/snapshot-Dc9CHPME.js +0 -1078
  504. package/dist/src-Bb7no-hS.js +0 -639
  505. package/dist/subject-C6dLxqHU.js +0 -24
  506. package/dist/supabase-Dbqr141s.js +0 -83
  507. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  508. package/dist/thenable-QSmvt-vZ.js +0 -65
  509. package/dist/types-C0dee0Qf.d.ts +0 -197
  510. package/dist/types-DvupZE0w.d.ts +0 -9
  511. package/dist/usage-4G6t643F.js +0 -42
  512. package/dist/usage-iFLJ0-rr.js +0 -2
  513. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  514. package/dist/watch-C8TpsAl4.js +0 -2
@@ -1,2 +1,51 @@
1
- import { n as rowConditionKeys, t as parseCatalog } from "../parse-CVFQHk6c.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 };
@@ -1,8 +1,10 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
1
2
  import { r as listSourceFiles, t as defaultSrcPath } from "./files-D_JIzUrP.js";
2
- import { a as formatCatalogMarkdown, i as formatCatalogJson, r as catalogSchemaDocument, t as buildCatalog } from "./catalog-doc-DWtg0gGR.js";
3
- import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-C3_oTHyO.js";
4
- import { i as scanSources, r as runCollect } from "./collect-2SrB7lfk.js";
5
- import { existsSync } from "node:fs";
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";
6
8
  import { resolve } from "node:path";
7
9
  //#region src/cli/catalog.ts
8
10
  async function runCatalog(input) {
@@ -22,7 +24,7 @@ async function runCatalog(input) {
22
24
  const srcPath = input.config.collect?.srcPath ?? defaultSrcPath();
23
25
  const files = listSourceFiles(input.cwd, srcPath);
24
26
  const scan = scanSources(input.cwd, files, new Set(leavesOf(tree).map((leaf) => leaf.key)));
25
- document = buildCatalog(tree, scan, input.now.toISOString(), await loadConfiguredPolicy(input.cwd, input.config.policy));
27
+ document = buildCatalog(tree, scan, input.now.toISOString(), await loadConfiguredPolicy(input.cwd, input.config.policy), await loadConfiguredOperations(input.cwd, input.config.operations));
26
28
  } else {
27
29
  const collected = await runCollect({
28
30
  cwd: input.cwd,
@@ -51,5 +53,48 @@ async function runCatalog(input) {
51
53
  output: formatCatalogJson(filtered)
52
54
  };
53
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
+ }
54
99
  //#endregion
55
- export { runCatalog as t };
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 { t as catalogFingerprint } from "./src-Bb7no-hS.js";
2
- import { a as getResource, c as listPermissions, h as formerKeys } from "./permission-registry-BsblpB-z.js";
3
- import { m as findRole } from "./grantee-CXY-0C87.js";
4
- import { t as canonicalJson } from "./canonical-json-CFKyFOke.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-DjQBcAP9.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-BEogC-rB.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,18 +22,13 @@ 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),
27
- relations: node?.relations,
28
- version: node?.version,
29
- restricted: node?.restricted,
30
- restrictedStops: node?.restrictedStops,
31
- meta: node?.meta
32
- } : {
33
- id: node?.id ?? "id",
34
- schema: node === void 0 ? null : jsonSchemaOf(node),
35
- definedIn,
28
+ ...definedIn === void 0 ? {} : { definedIn },
29
+ parent: node?.parent,
30
+ links: node?.links,
31
+ disclosure: node?.disclosure,
36
32
  relations: node?.relations,
37
33
  version: node?.version,
38
34
  restricted: node?.restricted,
@@ -63,7 +59,9 @@ function buildCatalog(tree, scan, generatedAt, policy) {
63
59
  ...catalogRoles(scan.roleNames, policy),
64
60
  ...scan.planNames.length === 0 ? {} : { plans: scan.planNames.map((key) => ({ key })) },
65
61
  ...policy === void 0 ? {} : { grants: catalogGrants(policy) },
66
- ...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) }
67
65
  };
68
66
  const head = {
69
67
  $schema: CATALOG_SCHEMA,
@@ -116,7 +114,7 @@ function catalogGrant(grant) {
116
114
  check: grant.portable ? grant.check : void 0,
117
115
  approval: catalogApproval(grant.approval),
118
116
  fields: grant.fields,
119
- validity: grant.validity,
117
+ validity: wireValidity(grant.validity),
120
118
  name: grant.name,
121
119
  purpose: grant.purpose,
122
120
  requires: grant.requires?.length === 1 ? grant.requires[0] : grant.requires,
@@ -152,13 +150,19 @@ function catalogDelegations(policy) {
152
150
  from: delegation.from,
153
151
  to: delegation.to,
154
152
  permissions: delegation.permissions,
155
- validity: delegation.validity
153
+ validity: wireValidity(delegation.validity)
156
154
  })).toSorted((a, b) => {
157
155
  const left = canonicalJson(a);
158
156
  const right = canonicalJson(b);
159
157
  return left < right ? -1 : left > right ? 1 : 0;
160
158
  });
161
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
+ }
162
166
  /** Per permission key, the distinct approvals the code allows require, in policy order. */
163
167
  function codeApprovals(policy) {
164
168
  const out = /* @__PURE__ */ new Map();
@@ -199,11 +203,23 @@ function catalogScopes(policy) {
199
203
  }
200
204
  function catalogRoles(scanned, policy) {
201
205
  if (policy === void 0) return scanned.length === 0 ? {} : { roles: scanned.map((key) => ({ key })) };
202
- 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();
203
211
  if (names.length === 0) return {};
204
212
  return { roles: names.map((key) => {
205
213
  const binding = policy.rolesByName.get(key);
206
- 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
+ }
207
223
  const audience = binding.meta?.audience ?? findRole(policy.vocabulary.roles, key)?.meta.audience;
208
224
  return withDefined({
209
225
  key,
@@ -240,6 +256,12 @@ function compactResource(resource) {
240
256
  schema: resource.schema,
241
257
  ...withDefined({
242
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,
243
265
  relations,
244
266
  version: resource.version,
245
267
  restricted: resource.restricted,
@@ -290,4 +312,4 @@ function catalogSchemaDocument() {
290
312
  return catalogSchema;
291
313
  }
292
314
  //#endregion
293
- 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 };