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,8 +1,9 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as wrapPermDock } from "../wrap-DWsU_5Bd.js";
3
- import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-Cod40D-X.js";
4
- import { n as resolveOrNull, t as buildInstance } from "../build-instance-DIIV9DbC.js";
5
- import { n as createEvaluationsHandler, u as NO_GRANT } from "../evaluations-C9YJsv3H.js";
2
+ import { c as withApp } from "../permdock-B9JxkBwC.js";
3
+ import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
4
+ import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-DZHQ0KF6.js";
5
+ import { n as resolveOrNull, t as buildInstance } from "../build-instance-BMnAudHn.js";
6
+ import { o as evaluationsHandler, v as NO_GRANT } from "../evaluations-DZ2CbV5k.js";
6
7
  import { cache } from "react";
7
8
  import { jsx } from "react/jsx-runtime";
8
9
  import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
@@ -72,7 +73,8 @@ function wrapInstance(permdock, onDenied) {
72
73
  onDenied: options?.onDenied ?? onDenied
73
74
  }))) }));
74
75
  }
75
- function createPermDock(policy, options) {
76
+ function createPermDock(policy, given) {
77
+ const options = withApp(policy, given);
76
78
  assertServerOnly();
77
79
  const sink = options.sink === void 0 ? void 0 : afterResponse(options.sink);
78
80
  const resolveSubject = cache(() => resolveOrNull(() => options.subject(), unstable_rethrow));
@@ -132,11 +134,11 @@ function createPermDock(policy, options) {
132
134
  }
133
135
  return snapshot;
134
136
  };
135
- const requireAccess = async (input) => {
136
- const permdock = await getPermDock(input.tenant === void 0 ? void 0 : { tenant: input.tenant });
137
+ const requirePermission = async (permission, data, requirement = {}) => {
138
+ const permdock = await getPermDock(requirement.tenant === void 0 ? void 0 : { tenant: requirement.tenant });
137
139
  const assert = permdock.assert;
138
- const handler = input.onDenied ?? options.onDenied;
139
- return assert(input.permission, input.data, { onDenied: (decision) => {
140
+ const handler = requirement.onDenied ?? options.onDenied;
141
+ return assert(permission, data, { onDenied: (decision) => {
140
142
  handler?.(decision);
141
143
  if (decision.outcome !== "denied" || decision.denials.some((denial) => denial.reason === "validation")) return;
142
144
  if (permdock.subject.principal === null) unauthorized();
@@ -158,7 +160,7 @@ function createPermDock(policy, options) {
158
160
  children: props.children
159
161
  }));
160
162
  };
161
- const permdockHandler = () => createEvaluationsHandler(compact({
163
+ const permdockHandler = () => evaluationsHandler(compact({
162
164
  policy,
163
165
  getPermDock,
164
166
  store: options.store
@@ -167,7 +169,7 @@ function createPermDock(policy, options) {
167
169
  getPermDock,
168
170
  getPermission,
169
171
  getSnapshot,
170
- requireAccess,
172
+ requirePermission,
171
173
  PermDockProvider,
172
174
  permdockHandler
173
175
  };
@@ -1,4 +1,4 @@
1
- import { a as PermDockPluginOptions } from "../types-7rJVLWe5.js";
1
+ import { a as PermDockPluginOptions } from "../types-5Ut_pbKy.js";
2
2
  //#region src/cli/plugin.d.ts
3
3
  /** Any object: Next's `NextConfig` is an interface, so no index signature. */
4
4
  type NextConfigLike = object;
@@ -1,5 +1,5 @@
1
- import { i as describeError } from "../errors-CWfoNg9N.js";
2
- import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-zeucB7eF.js";
1
+ import { a as describeError } from "../errors-CWTY6uih.js";
2
+ import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-CszoTJMq.js";
3
3
  //#region src/cli/plugin.ts
4
4
  const PHASE_BUILD = "phase-production-build";
5
5
  const PHASE_DEV = "phase-development-server";
@@ -1,24 +1,24 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { C as verifyWebBotAuth, b as discoverViaSignatureAgent, i as OpenApiHooks, m as InvalidSignatureError, o as ProtectOptions, s as ScopeGuard, t as Guard } from "../server-types-DdqBwZN_.js";
4
- import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
5
- import { a as toRequest, i as sendResponse, n as fromResponse, r as isServerResponse, t as NodeRequest } from "../http-DPuDaChb.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { r as PermDock } from "../permdock-D7eeLJER.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
5
+ import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
6
+ import { i as toRequest, n as isServerResponse, r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
6
7
  import { IncomingMessage, ServerResponse } from "node:http";
7
8
  //#region src/node/create.d.ts
8
9
  type NodePermDockOptions<TUser = unknown> = ServerAdapterOptions<NodeRequest, TUser>;
9
10
  type NodeProtect = {
10
- (permission: Permission, loadData?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<Guard>;
11
- (permission: null, loadData?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<ScopeGuard>;
11
+ (permission: Permission, data?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<Guard>;
12
+ (permission: null, data?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<ScopeGuard>;
12
13
  };
13
14
  type NodePermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
14
- readonly permdock: (req: IncomingMessage) => Promise<PermDock<V>>;
15
+ readonly getPermDock: (req: IncomingMessage) => Promise<PermDock<V>>;
15
16
  readonly protect: NodeProtect;
16
17
  readonly send: typeof sendResponse;
17
18
  readonly permdockHandler: () => (req: IncomingMessage, res: ServerResponse) => Promise<void>;
18
19
  readonly toRequest: typeof toRequest;
19
- readonly fromResponse: typeof fromResponse;
20
20
  readonly openapi: OpenApiHooks;
21
21
  };
22
22
  export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: NodePermDockOptions<TUser>): NodePermDock<V>;
23
23
  //#endregion
24
- export { InvalidSignatureError, type NodePermDock, type NodePermDockOptions, type NodeRequest, discoverViaSignatureAgent, fromResponse, isServerResponse, sendResponse, toRequest, verifyWebBotAuth };
24
+ export { InvalidSignatureError, type NodePermDock, type NodePermDockOptions, type NodeRequest, discoverViaSignatureAgent, isServerResponse, sendResponse, toRequest, webBotAuthVerifier };
@@ -1,15 +1,14 @@
1
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-C9YJsv3H.js";
2
- import { r as bindKernel } from "../bind-kk-uyCwH.js";
3
- import { i as toRequest, n as isServerResponse, r as sendResponse, t as fromResponse } from "../http-BEbdMZ05.js";
1
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
2
+ import { r as bindKernel } from "../bind-CZzhx-Vj.js";
3
+ import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-ujKm0JXE.js";
4
4
  //#region src/node/create.ts
5
5
  const nodeRequest = (req) => req;
6
6
  function createPermDock(policy, options) {
7
7
  const bound = bindKernel(policy, options, "node", toRequest);
8
8
  const { kernel, handlerScope } = bound;
9
9
  const bind = (req) => bound.bind(nodeRequest(req));
10
- const scopeOf = (req) => bound.scopeOf(nodeRequest(req));
11
- const permdock = async (req) => kernel.permdock(bind(req), await scopeOf(req));
12
- const protect = ((permission, loadData, protectOptions) => (req) => bound.guard(permission, loadData, nodeRequest(req), protectOptions));
10
+ const getPermDock = (req) => bound.getPermDock(nodeRequest(req));
11
+ const protect = ((permission, data, protectOptions) => (req) => bound.guard(permission, data, nodeRequest(req), protectOptions));
13
12
  const permdockHandler = () => {
14
13
  const { POST, GET } = kernel.permdockHandler(handlerScope);
15
14
  return async (req, res) => {
@@ -21,14 +20,13 @@ function createPermDock(policy, options) {
21
20
  };
22
21
  };
23
22
  return {
24
- permdock,
23
+ getPermDock,
25
24
  protect,
26
25
  send: sendResponse,
27
26
  permdockHandler,
28
27
  toRequest,
29
- fromResponse,
30
28
  openapi: kernel.openapi
31
29
  };
32
30
  }
33
31
  //#endregion
34
- export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, fromResponse, isServerResponse, sendResponse, toRequest, verifyWebBotAuth };
32
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, isServerResponse, sendResponse, toRequest, webBotAuthVerifier };
@@ -1,7 +1,7 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  //#region src/core/ocsf.ts
3
3
  /** The OCSF schema version `toOcsf` emits. */
4
- const OCSF_VERSION = "1.3.0";
4
+ const OCSF_VERSION = "1.9.0";
5
5
  function status(outcome) {
6
6
  switch (outcome) {
7
7
  case "granted": return {
@@ -14,7 +14,7 @@ function status(outcome) {
14
14
  };
15
15
  case "approval-required": return {
16
16
  status_id: 99,
17
- status: "Other"
17
+ status: "Approval Required"
18
18
  };
19
19
  default: return unknownStatus(outcome);
20
20
  }
@@ -31,20 +31,29 @@ function appObligationNames(event) {
31
31
  const names = (event.obligations ?? []).flatMap((obligation) => obligation.kind === "app" ? [obligation.name] : []);
32
32
  return names.length === 0 ? void 0 : names;
33
33
  }
34
- /** Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged. */
34
+ /** Epoch milliseconds of an RFC 3339 `at`, or `undefined` when it does not parse. */
35
+ function epochMillis(at) {
36
+ const time = Date.parse(at);
37
+ return Number.isNaN(time) ? void 0 : time;
38
+ }
39
+ /**
40
+ * Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged.
41
+ * An event whose `at` does not parse has no OCSF `time` and projects to `undefined`.
42
+ */
35
43
  function toOcsf(event) {
44
+ const time = epochMillis(event.at);
45
+ if (time === void 0) return;
36
46
  const principal = event.subject.principal;
37
47
  const actor = event.subject.actor;
38
48
  const breakGlass = event.matched?.breakGlass === true;
39
49
  const detail = event.outcome === "approval-required" ? "approval-required" : event.denials?.map((denial) => denial.reason).join(",");
40
- const time = Date.parse(event.at);
41
50
  return compact({
42
51
  class_uid: 3003,
43
52
  category_uid: 3,
44
53
  activity_id: 1,
45
54
  type_uid: 300301,
46
55
  severity_id: breakGlass ? 4 : 1,
47
- time: Number.isNaN(time) ? 0 : time,
56
+ time,
48
57
  ...status(event.outcome),
49
58
  status_detail: detail === "" ? void 0 : detail,
50
59
  message: `${event.permission} ${event.outcome}`,
@@ -68,7 +77,7 @@ function toOcsf(event) {
68
77
  outcome: event.outcome,
69
78
  scope: event.scope,
70
79
  resource: event.resource,
71
- source: event.source,
80
+ call: event.call,
72
81
  phase: event.phase,
73
82
  role: event.matched?.role,
74
83
  grant: event.matched?.name,
@@ -80,16 +89,18 @@ function toOcsf(event) {
80
89
  })
81
90
  });
82
91
  }
92
+ /** An access event whose `at` does not parse projects to `undefined`. */
83
93
  function accessToOcsf(event) {
84
- const time = Date.parse(event.at);
94
+ const time = epochMillis(event.at);
95
+ if (time === void 0) return;
85
96
  const enable = event.operation === "started";
86
97
  return compact({
87
- class_uid: 3001,
98
+ class_uid: 3007,
88
99
  category_uid: 3,
89
- activity_id: enable ? 2 : 5,
90
- type_uid: enable ? 300102 : 300105,
100
+ activity_id: enable ? 4 : 5,
101
+ type_uid: enable ? 300704 : 300705,
91
102
  severity_id: 4,
92
- time: Number.isNaN(time) ? 0 : time,
103
+ time,
93
104
  message: `support access ${event.operation}`,
94
105
  user: { uid: event.principal.id },
95
106
  actor: event.actor === void 0 ? void 0 : { user: { uid: event.actor.id } },
@@ -1,8 +1,8 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock, wr as Delegation } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { c as ApprovalRequest, f as ApprovalStore } from "../types-Br9IXUBG.js";
4
- import { t as InstanceOptions } from "../instance-options-plkrsAog.js";
5
- import { t as ToolMap } from "../types-DvupZE0w.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { r as PermDock } from "../permdock-D7eeLJER.js";
4
+ import { u as ApprovalRequest } from "../types-CCpc2Dcv.js";
5
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BDS7wc3y.js";
6
6
  //#region src/openai/create.d.ts
7
7
  /** The app context passed to `run(agent, input, { context })`. */
8
8
  type OpenAiContext = {
@@ -15,14 +15,7 @@ type OpenAiContext = {
15
15
  type OpenAiRunContext = {
16
16
  readonly context?: unknown;
17
17
  };
18
- type OpenAiPermDockOptions<TUser = unknown> = InstanceOptions & {
19
- readonly subject: (context: OpenAiContext) => TUser | Promise<TUser>;
20
- readonly actor?: (context: OpenAiContext) => unknown;
21
- readonly delegation?: (context: OpenAiContext) => Delegation | undefined | Promise<Delegation | undefined>;
22
- readonly tenant?: string | ((context: OpenAiContext) => string | undefined | Promise<string | undefined>);
23
- readonly tools: ToolMap;
24
- readonly store?: ApprovalStore;
25
- };
18
+ type OpenAiPermDockOptions<TUser = unknown> = AgentAdapterOptions<OpenAiContext, TUser>;
26
19
  type OpenAiTool = {
27
20
  readonly name: string;
28
21
  };
@@ -48,15 +41,15 @@ type OpenAiRunState<TItem> = {
48
41
  message?: string;
49
42
  }): unknown;
50
43
  };
51
- type OpenAiPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
44
+ type OpenAiPermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDock<OpenAiContext, V> & {
52
45
  /** A `ToolApprovalFunction`: pass it as a tool's `needsApproval`. */
53
46
  readonly needsApproval: (permission: Permission) => (runContext: OpenAiRunContext | undefined, input: unknown, callId?: string) => Promise<boolean>;
54
47
  readonly guardTools: <T extends OpenAiTool>(tools: readonly T[], context: OpenAiContext) => Promise<readonly T[]>;
55
48
  readonly resolveInterruptions: <TItem extends OpenAiInterruption>(state: OpenAiRunState<TItem>, interruptions: readonly TItem[], options: {
56
49
  readonly context: OpenAiContext;
57
50
  }) => Promise<readonly ApprovalRequest[]>;
58
- readonly permdock: (context: OpenAiContext) => Promise<PermDock<V>>;
51
+ readonly getPermDock: (context: OpenAiContext) => Promise<PermDock<V>>;
59
52
  };
60
- export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: OpenAiPermDockOptions<TUser>): OpenAiPermDock<V>;
53
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: OpenAiPermDockOptions<TUser>): OpenAiPermDock<V>;
61
54
  //#endregion
62
55
  export type { OpenAiContext, OpenAiInterruption, OpenAiPermDock, OpenAiPermDockOptions, OpenAiRunState, OpenAiTool };
@@ -1,7 +1,7 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { r as memoryApprovalStore } from "../store-ILkLUj_o.js";
3
- import { r as instanceOptions } from "../build-instance-DIIV9DbC.js";
4
- import { n as createAgentKernel, t as approvalTokenOf } from "../kernel-CB3LrIJM.js";
2
+ import { c as withApp } from "../permdock-B9JxkBwC.js";
3
+ import { t as approvalTokenOf } from "../kernel-5JatXyND.js";
4
+ import { t as agentRuntime } from "../create-C3b4B5eF.js";
5
5
  //#region src/openai/create.ts
6
6
  function appContext(runContext) {
7
7
  const context = runContext?.context;
@@ -26,34 +26,25 @@ function parseCall(item) {
26
26
  return { ok: false };
27
27
  }
28
28
  }
29
- function createPermDock(policy, options) {
30
- const store = options.store ?? memoryApprovalStore();
31
- const kernel = createAgentKernel(policy, {
32
- ...compact({
33
- actor: options.actor,
34
- delegation: options.delegation,
35
- tenant: options.tenant
36
- }),
37
- ...instanceOptions(options),
38
- subject: options.subject,
39
- tools: options.tools,
40
- store,
41
- adapter: "openai"
42
- });
29
+ function createPermDock(policy, given) {
30
+ const options = withApp(policy, given);
31
+ const store = options.store;
32
+ const { agent, kernel } = agentRuntime(policy, options, "openai");
43
33
  const byPermission = /* @__PURE__ */ new Map();
44
- for (const [name, binding] of Object.entries(options.tools)) byPermission.set(binding.permission.key, name);
34
+ for (const [name, binding] of Object.entries(options.operations)) byPermission.set(binding.permission.key, name);
35
+ const passes = (toolName) => options.unmapped === "allow" && !Object.hasOwn(options.operations, toolName);
45
36
  const needsApproval = (permission) => async (runContext, input) => {
46
37
  const toolName = byPermission.get(permission.key);
47
38
  if (toolName === void 0) return true;
48
39
  const context = appContext(runContext);
49
- const binding = options.tools[toolName];
40
+ const binding = options.operations[toolName];
50
41
  if (binding === void 0) return true;
51
42
  const checked = await kernel.check(binding, input, context, { simulate: true });
52
43
  return !checked.ok || checked.raw.outcome !== "granted";
53
44
  };
54
45
  const guardTools = async (tools, context) => {
55
46
  const allowed = await kernel.allowedToolNames(context);
56
- return tools.filter((tool) => allowed.has(tool.name));
47
+ return tools.filter((tool) => allowed.has(tool.name) || passes(tool.name));
57
48
  };
58
49
  const resolveOne = async (state, item, context) => {
59
50
  const call = parseCall(item);
@@ -61,6 +52,7 @@ function createPermDock(policy, options) {
61
52
  await state.reject(item, { message: "Denied: unreadable tool call." });
62
53
  return null;
63
54
  }
55
+ if (passes(call.name)) return null;
64
56
  const verdict = await kernel.decideTool(call.name, call.args, context, compact({ resumeToken: approvalTokenOf(context) }));
65
57
  if (verdict.outcome === "granted") {
66
58
  await state.approve(item);
@@ -70,6 +62,7 @@ function createPermDock(policy, options) {
70
62
  await state.reject(item, { message: verdict.reason });
71
63
  return null;
72
64
  }
65
+ if (store === void 0) return null;
73
66
  try {
74
67
  return await store.get(verdict.token);
75
68
  } catch {
@@ -81,12 +74,12 @@ function createPermDock(policy, options) {
81
74
  for (const item of interruptions) resolved.push(await resolveOne(state, item, resolveOptions.context));
82
75
  return resolved.filter((record) => record !== null);
83
76
  };
84
- return {
77
+ return Object.freeze({
78
+ ...agent,
85
79
  needsApproval,
86
80
  guardTools,
87
- resolveInterruptions,
88
- permdock: (context) => kernel.instance(context)
89
- };
81
+ resolveInterruptions
82
+ });
90
83
  }
91
84
  //#endregion
92
85
  export { createPermDock };
@@ -1,6 +1,6 @@
1
- import { E as Policy, Or as Principal, jr as Condition } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission, p as PermissionTree } from "../permission-types-Dg39z9Kv.js";
3
- import { a as ProblemDetails } from "../errors-OD_4c__H.js";
1
+ import { T as Policy, lr as Condition, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { E as PermissionTree, w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { a as ProblemDetails } from "../errors-C2PXIv4c.js";
4
4
  import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
5
5
  //#region src/openapi/types.d.ts
6
6
  type OpenApiTarget = "3.1" | "3.2" | "3.3";
@@ -1,3 +1,3 @@
1
1
  import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-8ILTftC9.js";
2
- import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-DBzHQbov.js";
2
+ import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-B7HZ0f-r.js";
3
3
  export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-BsblpB-z.js";
3
- import { n as sha256 } from "./sha256-BO0swRXL.js";
2
+ import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-Br4jSNVi.js";
3
+ import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
4
4
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
5
5
  import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-8ILTftC9.js";
6
6
  //#region src/openapi/emit.ts
@@ -188,13 +188,10 @@ function jsonPathString(value) {
188
188
  function operationTarget(operationId) {
189
189
  return `$.paths.*[?@.operationId == ${jsonPathString(operationId)}]`;
190
190
  }
191
- function hex(bytes) {
192
- return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
193
- }
194
- /** `sha256:` over the sorted permission keys and scopes, so the same catalog gives the same Overlay. */
191
+ /** The `sha-256:` digest of the sorted permission keys and scopes, so the same catalog gives the same Overlay. */
195
192
  function fingerprint(policy) {
196
193
  const lines = listPermissions(policy.permissions).map((leaf) => `${leaf.key} ${leaf.scope}`).toSorted();
197
- return `sha256:${hex(sha256(lines.join("\n")))}`;
194
+ return sha256Digest(lines.join("\n"));
198
195
  }
199
196
  function overlayOf(policy, options, overlayOptions = {}) {
200
197
  const version = overlayOptions.version ?? "1.1";
@@ -456,7 +453,10 @@ const JSON_SCHEMA = Object.freeze({
456
453
  maximum: 599
457
454
  },
458
455
  detail: { type: "string" },
459
- instance: { type: "string" },
456
+ instance: {
457
+ type: "string",
458
+ format: "uri-reference"
459
+ },
460
460
  permission: { type: "string" },
461
461
  scope: { type: "string" },
462
462
  reason: { type: "string" }
@@ -1,12 +1,13 @@
1
- import { n as validateOverlay, t as validateOpenapi } from "./schema-Bol6gqXA.js";
2
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
3
- import { a as getResource, n as findPermission } from "./permission-registry-BsblpB-z.js";
4
- import { o as definePolicy } from "./hosted-CBHgkzDl.js";
2
+ import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
3
+ import { n as definePolicy } from "./policy-DLZJ5gAp.js";
4
+ import { i as configError } from "./errors-CWTY6uih.js";
5
5
  import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
6
- import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-C3_oTHyO.js";
7
- import { t as shortDiff } from "./text-diff-BdkkYSbi.js";
8
- import { c as openapiVersion, o as createPermDock } from "./openapi-DBzHQbov.js";
9
- import { r as fileDrift } from "./output-files-CgIsvdSa.js";
6
+ import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
7
+ import { t as shortDiff } from "./text-diff-BQcUapOb.js";
8
+ import { c as openapiVersion, o as createPermDock } from "./openapi-B7HZ0f-r.js";
9
+ import { i as fileDrift } from "./output-files-DhRBBE4n.js";
10
+ import { n as validateOverlay, t as validateOpenapi } from "./schema-yLuBWWsh.js";
10
11
  import { existsSync } from "node:fs";
11
12
  import { resolve } from "node:path";
12
13
  //#region src/cli/openapi/openapi.ts
@@ -52,7 +53,7 @@ async function loadPolicy(cwd, config, from) {
52
53
  return asPolicy(pickNamed(await loadModule(abs), ["policy"]));
53
54
  }
54
55
  const permissionsPath = config.permissions;
55
- if (permissionsPath === void 0) throw new Error("PermDock CLI: openapi needs --from, policy or permissions in the config");
56
+ if (permissionsPath === void 0) throw configError("PermDock CLI: openapi emit needs --policy, or policy or permissions in the config");
56
57
  const tree = asPermissionTree(pickNamed(await loadModule(resolve(cwd, permissionsPath)), ["permissions"]));
57
58
  return definePolicy(tree, {
58
59
  roles: [],
@@ -63,7 +64,7 @@ function leavesOf(policy, keys) {
63
64
  return keys.map((key) => {
64
65
  if (typeof key !== "string") throw new TypeError("PermDock CLI: x-permdock-permissions must be strings");
65
66
  const leaf = findPermission(policy.permissions, key);
66
- if (leaf === void 0) throw new Error(`PermDock CLI: unknown permission '${key}'`);
67
+ if (leaf === void 0) throw configError(`PermDock CLI: unknown permission '${key}'`);
67
68
  return leaf;
68
69
  });
69
70
  }
@@ -0,0 +1,138 @@
1
+ import { c as missingInput } from "./errors-CWTY6uih.js";
2
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
3
+ import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-C3DktBDY.js";
4
+ //#region src/cli/commands/openapi.ts
5
+ const docFlag = { doc: {
6
+ type: "string",
7
+ description: "OpenAPI document: a path, or a URL for import",
8
+ valueHint: "path"
9
+ } };
10
+ const emit = defineLeaf({
11
+ flags: {
12
+ ...docFlag,
13
+ ...outFlag,
14
+ ...checkFlag,
15
+ ...policyFlag,
16
+ target: {
17
+ type: "enum",
18
+ options: [
19
+ "3.1",
20
+ "3.2",
21
+ "3.3"
22
+ ],
23
+ default: "3.2",
24
+ description: "OpenAPI version; 3.3 is the pinned Security Profiles draft"
25
+ },
26
+ kind: {
27
+ type: "enum",
28
+ options: ["document", "overlay"],
29
+ default: "document",
30
+ description: "A full document or an Overlay"
31
+ },
32
+ overlay: {
33
+ type: "enum",
34
+ options: ["1.1", "1.2"],
35
+ default: "1.1",
36
+ description: "Overlay version; 1.2 is the pinned reusable-actions draft"
37
+ },
38
+ profile: {
39
+ type: "enum",
40
+ options: ["fapi2"],
41
+ description: "Security profile to declare"
42
+ },
43
+ "profile-scheme": {
44
+ type: "string",
45
+ description: "Security scheme name for the profile",
46
+ valueHint: "name"
47
+ },
48
+ scheme: {
49
+ type: "string",
50
+ description: "OAuth security scheme name (default permdockOAuth)",
51
+ valueHint: "name"
52
+ },
53
+ "metadata-url": {
54
+ type: "string",
55
+ description: "OAuth authorization server metadata URL",
56
+ valueHint: "url"
57
+ },
58
+ "device-flow": {
59
+ type: "boolean",
60
+ description: "Declare the device authorization flow"
61
+ },
62
+ arity: {
63
+ type: "boolean",
64
+ description: "Mark instance and collection operations"
65
+ },
66
+ "authorization-url": {
67
+ type: "string",
68
+ description: "OAuth authorization endpoint",
69
+ valueHint: "url"
70
+ },
71
+ "token-url": {
72
+ type: "string",
73
+ description: "OAuth token endpoint",
74
+ valueHint: "url"
75
+ },
76
+ "device-authorization-url": {
77
+ type: "string",
78
+ description: "OAuth device authorization endpoint",
79
+ valueHint: "url"
80
+ }
81
+ },
82
+ async run(ctx, { flags }) {
83
+ return (await import("./openapi-DTaEmTSW.js")).runOpenapi({
84
+ cwd: ctx.cwd,
85
+ config: ctx.config,
86
+ rest: ["emit"],
87
+ doc: given(flags.doc),
88
+ out: fileOut("openapi emit", flags.out),
89
+ from: given(flags.policy),
90
+ target: flags.target,
91
+ format: flags.kind,
92
+ overlay: flags.overlay,
93
+ check: flags.check,
94
+ profile: flags.profile,
95
+ profileScheme: given(flags["profile-scheme"]),
96
+ scheme: given(flags.scheme) ?? "permdockOAuth",
97
+ metadataUrl: given(flags["metadata-url"]),
98
+ deviceFlow: flags["device-flow"],
99
+ arity: flags.arity,
100
+ authorizationUrl: given(flags["authorization-url"]),
101
+ tokenUrl: given(flags["token-url"]),
102
+ deviceAuthorizationUrl: given(flags["device-authorization-url"]),
103
+ io: ctx.io
104
+ });
105
+ }
106
+ });
107
+ const importDocument = defineLeaf({
108
+ flags: {
109
+ ...docFlag,
110
+ ...outFlag,
111
+ ...validatorFlag,
112
+ map: {
113
+ type: "string",
114
+ description: "JSON mapping of operations to permissions",
115
+ valueHint: "json"
116
+ },
117
+ annotate: {
118
+ type: "boolean",
119
+ description: "Write x-permdock-permissions back into the document"
120
+ }
121
+ },
122
+ async run(ctx, { flags }) {
123
+ const doc = given(flags.doc);
124
+ if (doc === void 0) throw missingInput("openapi import", ["--doc"], "the OpenAPI document to import");
125
+ const { runOpenapiImport } = await import("./import-CNV7I2Dw.js");
126
+ return runOpenapiImport({
127
+ cwd: ctx.cwd,
128
+ doc,
129
+ out: fileOut("openapi import", flags.out),
130
+ schema: flags.validator,
131
+ map: given(flags.map),
132
+ annotate: flags.annotate,
133
+ io: ctx.io
134
+ });
135
+ }
136
+ });
137
+ //#endregion
138
+ export { emit, importDocument };
@@ -0,0 +1,36 @@
1
+ import { n as OPERATION_RISKS } from "./permissions-B-wCP5ZC.js";
2
+ //#region src/catalog/operation-findings.ts
3
+ function rank(risk) {
4
+ return OPERATION_RISKS.indexOf(risk ?? "low");
5
+ }
6
+ function requiresApproval(catalog, permission) {
7
+ return (catalog.permissions.find((entry) => entry.key === permission)?.approvals?.length ?? 0) > 0;
8
+ }
9
+ /**
10
+ * Operations, matched by name, whose `meta.risk` rose or whose permission
11
+ * stopped requiring approval between two catalogs. A new or removed
12
+ * operation is not a finding.
13
+ */
14
+ function operationFindings(previous, next) {
15
+ const before = new Map((previous.operations ?? []).map((operation) => [operation.name, operation]));
16
+ const findings = [];
17
+ for (const operation of next.operations ?? []) {
18
+ const old = before.get(operation.name);
19
+ if (old === void 0) continue;
20
+ if (rank(operation.meta.risk) > rank(old.meta.risk)) findings.push({
21
+ code: "operation-risk-raised",
22
+ operation: operation.name,
23
+ permission: operation.permission,
24
+ previous: old.meta.risk ?? "low",
25
+ risk: operation.meta.risk ?? "low"
26
+ });
27
+ if (requiresApproval(previous, old.permission) && !requiresApproval(next, operation.permission)) findings.push({
28
+ code: "operation-approval-removed",
29
+ operation: operation.name,
30
+ permission: operation.permission
31
+ });
32
+ }
33
+ return findings;
34
+ }
35
+ //#endregion
36
+ export { operationFindings as t };