permdock 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1,193 @@
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { h as secondsAt } from "./time-DkWjdL98.js";
3
+ import { n as readBodyText } from "./body-text-QcXok_SI.js";
4
+ import { t as timeoutSignal } from "./timeout-D51niuQP.js";
5
+ //#region src/terminal/device.ts
6
+ /** Milliseconds an authorization server request may take. */
7
+ const TERMINAL_TIMEOUT_MS = 1e4;
8
+ async function readJson(response) {
9
+ const text = await readBodyText(response);
10
+ if (!text.ok) return null;
11
+ try {
12
+ const body = JSON.parse(text.text);
13
+ return isRecord(body) ? body : null;
14
+ } catch {
15
+ return null;
16
+ }
17
+ }
18
+ /** POSTs a form and reads a JSON object back; any network or parse failure is `null`. */
19
+ async function postForm(runtime, url, fields) {
20
+ const fetchImpl = runtime.fetch ?? fetch;
21
+ try {
22
+ return await readJson(await fetchImpl(url, {
23
+ method: "POST",
24
+ headers: { "content-type": "application/x-www-form-urlencoded" },
25
+ body: new URLSearchParams(fields),
26
+ signal: timeoutSignal(TERMINAL_TIMEOUT_MS)
27
+ }));
28
+ } catch {
29
+ return null;
30
+ }
31
+ }
32
+ function withoutTrailingSlash(url) {
33
+ return url.replace(/\/+$/u, "");
34
+ }
35
+ /**
36
+ * Where RFC 8414 metadata may live: the well-known segment inserted before
37
+ * the issuer's path (section 3.1), then appended after it for servers that
38
+ * predate the rule. An issuer without a path has one location.
39
+ */
40
+ function metadataUrls(issuer) {
41
+ const parsed = new URL(issuer);
42
+ const path = withoutTrailingSlash(parsed.pathname);
43
+ const inserted = `${parsed.origin}/.well-known/oauth-authorization-server${path}`;
44
+ return path === "" ? [inserted] : [inserted, `${withoutTrailingSlash(issuer)}/.well-known/oauth-authorization-server`];
45
+ }
46
+ /**
47
+ * The issuer's RFC 8414 metadata, or `null`. Metadata whose `issuer` is not
48
+ * the configured issuer is refused (section 3.3), so a mix-up never routes a
49
+ * credential to another server.
50
+ */
51
+ async function discoverAuthorizationServer(issuer, runtime) {
52
+ const fetchImpl = runtime.fetch ?? fetch;
53
+ let urls;
54
+ try {
55
+ urls = metadataUrls(issuer);
56
+ } catch {
57
+ return null;
58
+ }
59
+ for (const url of urls) {
60
+ let body;
61
+ try {
62
+ const response = await fetchImpl(url, { signal: timeoutSignal(TERMINAL_TIMEOUT_MS) });
63
+ body = response.ok ? await readJson(response) : null;
64
+ } catch {
65
+ body = null;
66
+ }
67
+ if (body === null) continue;
68
+ return typeof body["issuer"] === "string" && withoutTrailingSlash(body["issuer"]) === withoutTrailingSlash(issuer) ? body : null;
69
+ }
70
+ return null;
71
+ }
72
+ async function discoverDeviceEndpoints(issuer, runtime) {
73
+ const body = await discoverAuthorizationServer(issuer, runtime);
74
+ if (body === null) return {};
75
+ return compact({
76
+ authorizationEndpoint: stringField(body, "device_authorization_endpoint"),
77
+ tokenEndpoint: stringField(body, "token_endpoint"),
78
+ revocationEndpoint: stringField(body, "revocation_endpoint")
79
+ });
80
+ }
81
+ function stringField(body, name) {
82
+ const value = body[name];
83
+ return typeof value === "string" ? value : void 0;
84
+ }
85
+ function parseAuthorization(body) {
86
+ if (typeof body["device_code"] !== "string" || typeof body["user_code"] !== "string" || typeof body["verification_uri"] !== "string" || typeof body["expires_in"] !== "number") return null;
87
+ return compact({
88
+ device_code: body["device_code"],
89
+ user_code: body["user_code"],
90
+ verification_uri: body["verification_uri"],
91
+ verification_uri_complete: typeof body["verification_uri_complete"] === "string" ? body["verification_uri_complete"] : void 0,
92
+ expires_in: body["expires_in"],
93
+ interval: typeof body["interval"] === "number" ? body["interval"] : void 0
94
+ });
95
+ }
96
+ function parseToken(body, now) {
97
+ if (typeof body["error"] === "string") return {
98
+ ok: false,
99
+ error: body["error"]
100
+ };
101
+ if (typeof body["access_token"] !== "string") return {
102
+ ok: false,
103
+ error: "invalid-token"
104
+ };
105
+ return {
106
+ ok: true,
107
+ credential: compact({
108
+ access_token: body["access_token"],
109
+ refresh_token: typeof body["refresh_token"] === "string" ? body["refresh_token"] : void 0,
110
+ expires_at: typeof body["expires_in"] === "number" ? now + body["expires_in"] : void 0,
111
+ token_type: typeof body["token_type"] === "string" ? body["token_type"] : void 0,
112
+ scope: stringField(body, "scope")
113
+ })
114
+ };
115
+ }
116
+ async function runDeviceFlow(device, runtime, write) {
117
+ const sleep = runtime.sleep ?? defaultSleep;
118
+ const now = () => secondsAt(runtime.now?.());
119
+ let authorizationEndpoint = device.authorizationEndpoint;
120
+ let tokenEndpoint = device.tokenEndpoint;
121
+ if ((authorizationEndpoint === void 0 || tokenEndpoint === void 0) && device.issuer !== void 0) {
122
+ const discovered = await discoverDeviceEndpoints(device.issuer, runtime);
123
+ authorizationEndpoint = authorizationEndpoint ?? discovered.authorizationEndpoint;
124
+ tokenEndpoint = tokenEndpoint ?? discovered.tokenEndpoint;
125
+ }
126
+ if (authorizationEndpoint === void 0 || tokenEndpoint === void 0) return null;
127
+ const startedBody = await postForm(runtime, authorizationEndpoint, {
128
+ client_id: device.clientId,
129
+ scope: device.scope ?? ""
130
+ });
131
+ const authorization = startedBody === null ? null : parseAuthorization(startedBody);
132
+ if (authorization === null) return null;
133
+ device.onPrompt?.(compact({
134
+ user_code: authorization.user_code,
135
+ verification_uri: authorization.verification_uri,
136
+ verification_uri_complete: authorization.verification_uri_complete
137
+ }));
138
+ write(`Visit ${authorization.verification_uri} and enter ${authorization.user_code}\n`);
139
+ if (authorization.verification_uri_complete !== void 0) device.open?.(authorization.verification_uri_complete);
140
+ let interval = authorization.interval ?? 5;
141
+ const deadline = now() + authorization.expires_in;
142
+ while (now() < deadline) {
143
+ await sleep(interval * 1e3);
144
+ const polledBody = await postForm(runtime, tokenEndpoint, {
145
+ grant_type: "urn:ietf:params:oauth:grant-type:device_code",
146
+ device_code: authorization.device_code,
147
+ client_id: device.clientId
148
+ });
149
+ if (polledBody === null) return null;
150
+ const token = parseToken(polledBody, now());
151
+ if (token.ok) return token.credential;
152
+ if (token.error === "slow_down") {
153
+ interval += 5;
154
+ continue;
155
+ }
156
+ if (token.error === "authorization_pending") continue;
157
+ return null;
158
+ }
159
+ return null;
160
+ }
161
+ async function refreshCredential(device, credential, runtime) {
162
+ if (credential.refresh_token === void 0) return null;
163
+ const now = () => secondsAt(runtime.now?.());
164
+ let tokenEndpoint = device.tokenEndpoint;
165
+ if (tokenEndpoint === void 0 && device.issuer !== void 0) tokenEndpoint = (await discoverDeviceEndpoints(device.issuer, runtime)).tokenEndpoint;
166
+ if (tokenEndpoint === void 0) return null;
167
+ const body = await postForm(runtime, tokenEndpoint, {
168
+ grant_type: "refresh_token",
169
+ refresh_token: credential.refresh_token,
170
+ client_id: device.clientId
171
+ });
172
+ if (body === null) return null;
173
+ const token = parseToken(body, now());
174
+ return token.ok ? token.credential : null;
175
+ }
176
+ async function revokeCredential(device, credential, runtime) {
177
+ if (device === void 0 || credential.refresh_token === void 0) return;
178
+ let revocationEndpoint = device.revocationEndpoint;
179
+ if (revocationEndpoint === void 0 && device.issuer !== void 0) revocationEndpoint = (await discoverDeviceEndpoints(device.issuer, runtime)).revocationEndpoint;
180
+ if (revocationEndpoint === void 0) return;
181
+ await postForm(runtime, revocationEndpoint, {
182
+ token: credential.refresh_token,
183
+ token_type_hint: "refresh_token",
184
+ client_id: device.clientId
185
+ });
186
+ }
187
+ function defaultSleep(ms) {
188
+ return new Promise((resolve) => {
189
+ setTimeout(resolve, ms);
190
+ });
191
+ }
192
+ //#endregion
193
+ export { refreshCredential as a, stringField as c, postForm as i, discoverAuthorizationServer as n, revokeCredential as o, parseToken as r, runDeviceFlow as s, TERMINAL_TIMEOUT_MS as t };
@@ -1,14 +1,59 @@
1
- import { g as memoryRoleSource } from "./src-Bb7no-hS.js";
2
- import { n as findPermission } from "./permission-registry-BsblpB-z.js";
3
- import { t as canonicalJson } from "./canonical-json-CFKyFOke.js";
4
- import { t as createPermDock } from "./permdock-L26udHSk.js";
5
- import { o as usageResult } from "./errors-CWfoNg9N.js";
6
- import { t as buildCatalog } from "./catalog-doc-DWtg0gGR.js";
7
- import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-C3_oTHyO.js";
8
- import { t as parseCatalog } from "./parse-CVFQHk6c.js";
9
- import { n as fixtureSubject, r as loadFixtures, t as fixtureRow } from "./fixtures-h2eG2OZV.js";
1
+ import { E as memoryCustomRoleSource } from "./src-Cu2m75uo.js";
2
+ import { n as findPermission } from "./permission-registry-Br4jSNVi.js";
3
+ import { g as secondsOf } from "./time-DkWjdL98.js";
4
+ import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
5
+ import { t as getPermDock } from "./permdock-BrAscV28.js";
6
+ import { i as configError, u as usageResult } from "./errors-CWTY6uih.js";
7
+ import { t as buildCatalog } from "./catalog-doc-Cdn7-0pQ.js";
8
+ import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-DFS_ry0W.js";
9
+ import { t as parseCatalog } from "./parse-Cxq0WxrA.js";
10
+ import { t as operationFindings } from "./operation-findings-DgATDpvh.js";
11
+ import { n as fixtureSubject, r as loadFixtures, t as fixtureRow } from "./fixtures-B7XrLeY7.js";
10
12
  import { existsSync, readFileSync } from "node:fs";
11
13
  import { resolve } from "node:path";
14
+ //#region src/cli/diff/format.ts
15
+ function describeGrant(grant) {
16
+ const role = grant.role === null ? "top-level" : `role ${grant.role}`;
17
+ const scope = grant.scope === "global" ? "" : typeof grant.scope === "string" ? ` in ${grant.scope}` : ` on ${grant.scope.resource}`;
18
+ return `${grant.effect} ${grant.permission} (${role}${scope})`;
19
+ }
20
+ function describeDelegation(delegation) {
21
+ const narrowed = delegation.to.id ?? delegation.to.client;
22
+ const to = narrowed === void 0 ? delegation.to.kind : `${delegation.to.kind} ${narrowed}`;
23
+ return `delegation ${canonicalJson(delegation.from)} → ${to} (${delegation.permissions.join(", ")})`;
24
+ }
25
+ function formatText(diff) {
26
+ const lines = [];
27
+ const section = (title, added, removed, changed = []) => {
28
+ if (added.length === 0 && removed.length === 0 && changed.length === 0) return;
29
+ lines.push(title);
30
+ for (const item of added) lines.push(` + ${item}`);
31
+ for (const item of removed) lines.push(` - ${item}`);
32
+ for (const item of changed) lines.push(` ~ ${item}`);
33
+ };
34
+ section("permissions", diff.permissions.added, diff.permissions.removed, diff.permissions.renamed.map((rename) => `${rename.from} → ${rename.to} (renamed)`));
35
+ section("levels", diff.levels.added.map((item) => `${item.permission}@${item.level}`), diff.levels.removed.map((item) => `${item.permission}@${item.level}`));
36
+ section("scopes", diff.scopes.added, diff.scopes.removed);
37
+ section("roles", diff.roles.added, diff.roles.removed, diff.roles.changed.map((name) => `${name}: declaration changed`));
38
+ if (diff.grants === void 0) lines.push("grants: not compared (a catalog was built without its policy; run `permdock collect` with `policy` configured)");
39
+ else section("grants", diff.grants.added.map(describeGrant), diff.grants.removed.map(describeGrant), diff.grants.changed.map((change) => `${describeGrant(change.after)}: ${change.changes.join(", ")}`));
40
+ if (diff.delegations !== void 0) section("delegations", diff.delegations.added.map(describeDelegation), diff.delegations.removed.map(describeDelegation), diff.delegations.changed.map((change) => `${describeDelegation(change.after)}: ${change.changes.join(", ")}`));
41
+ section("operations", [], [], diff.operations.map((finding) => `${[finding.operation, `(${finding.permission})`].join(" ")}: ${finding.code === "operation-risk-raised" ? `risk ${[finding.previous, finding.risk].join(" → ")}` : "approval no longer required"}`));
42
+ if (diff.impact !== void 0) {
43
+ lines.push(diff.impact.length === 0 ? "impact: no fixture changes outcome" : `impact (${String(diff.impact.length)} fixture(s) change outcome)`);
44
+ for (const row of diff.impact) {
45
+ const where = row.tenant === void 0 ? "" : ` in ${row.tenant}`;
46
+ lines.push(` ${row.subject}${where} ${row.action}: ${row.before} → ${row.after}`);
47
+ }
48
+ }
49
+ if (lines.length === 0) lines.push("no changes");
50
+ if (diff.breaking.length > 0) {
51
+ lines.push(`breaking (${String(diff.breaking.length)})`);
52
+ for (const change of diff.breaking) lines.push(` ${change.kind}: ${change.detail}`);
53
+ }
54
+ return `${lines.join("\n")}\n`;
55
+ }
56
+ //#endregion
12
57
  //#region src/cli/diff/diff.ts
13
58
  const EMPTY_SCAN = {
14
59
  roots: [],
@@ -24,7 +69,7 @@ const EMPTY_SCAN = {
24
69
  };
25
70
  async function loadSide(cwd, source, now) {
26
71
  const abs = resolve(cwd, source);
27
- if (!existsSync(abs)) throw new Error(`PermDock CLI: not found: ${source}`);
72
+ if (!existsSync(abs)) throw configError(`PermDock CLI: not found: ${source}`);
28
73
  if (abs.endsWith(".json")) return {
29
74
  source,
30
75
  catalog: parseCatalog(readFileSync(abs, "utf8")),
@@ -78,8 +123,8 @@ function fieldsChange(before, after) {
78
123
  const kept = new Set(after);
79
124
  return before.every((field) => kept.has(field)) ? "fields widened" : "fields narrowed";
80
125
  }
81
- const validFrom = (value) => value?.from ?? Number.NEGATIVE_INFINITY;
82
- const validUntil = (value) => value?.until ?? Number.POSITIVE_INFINITY;
126
+ const validFrom = (value) => secondsOf(value?.from) ?? Number.NEGATIVE_INFINITY;
127
+ const validUntil = (value) => secondsOf(value?.until) ?? Number.POSITIVE_INFINITY;
83
128
  /** Narrowed when the window starts later or ends earlier than before; a new window on an open grant narrows it. */
84
129
  function validityChange(before, after) {
85
130
  return validFrom(after) > validFrom(before) || validUntil(after) < validUntil(before) ? "validity narrowed" : "validity widened";
@@ -98,22 +143,12 @@ const NARROWING = /* @__PURE__ */ new Set([
98
143
  "purpose changed",
99
144
  "portable: false"
100
145
  ]);
101
- function describeGrant(grant) {
102
- const role = grant.role === null ? "top-level" : `role ${grant.role}`;
103
- const scope = grant.scope === "global" ? "" : typeof grant.scope === "string" ? ` in ${grant.scope}` : ` on ${grant.scope.resource}`;
104
- return `${grant.effect} ${grant.permission} (${role}${scope})`;
105
- }
106
146
  function delegationIdentity(delegation) {
107
147
  return canonicalJson({
108
148
  from: delegation.from,
109
149
  to: delegation.to
110
150
  });
111
151
  }
112
- function describeDelegation(delegation) {
113
- const narrowed = delegation.to.id ?? delegation.to.client;
114
- const to = narrowed === void 0 ? delegation.to.kind : `${delegation.to.kind} ${narrowed}`;
115
- return `delegation ${canonicalJson(delegation.from)} → ${to} (${delegation.permissions.join(", ")})`;
116
- }
117
152
  function delegationChanges(before, after) {
118
153
  const changes = [];
119
154
  const lost = before.permissions.filter((key) => !after.permissions.includes(key));
@@ -340,16 +375,17 @@ function diffCatalogs(original, b) {
340
375
  },
341
376
  ...grants === void 0 ? {} : { grants },
342
377
  ...delegations === void 0 ? {} : { delegations },
378
+ operations: operationFindings(original.catalog, b.catalog),
343
379
  breaking
344
380
  };
345
381
  }
346
382
  async function impactOf(input) {
347
383
  const { fixtures, customRoles } = await loadFixtures(input.cwd, input.fixtures);
348
- const now = Math.floor(input.now.getTime() / 1e3);
384
+ const now = { epochMilliseconds: Math.floor(input.now.getTime() / 1e3) * 1e3 };
349
385
  const outcome = async (policy, fixture) => {
350
386
  const permission = findPermission(policy.permissions, fixture.action);
351
387
  if (permission === void 0) return "unknown";
352
- const [decision] = (await createPermDock(policy, fixtureSubject(fixture.subject), { customRoles: memoryRoleSource(customRoles) })).simulate([[permission, fixtureRow(fixture, permission.kind)]], { now });
388
+ const [decision] = (await getPermDock(policy, fixtureSubject(fixture.subject), { customRoles: memoryCustomRoleSource(customRoles) })).simulate([[permission, fixtureRow(fixture, permission.kind)]], { now });
353
389
  return decision?.outcome ?? "denied";
354
390
  };
355
391
  const rows = [];
@@ -375,36 +411,6 @@ async function impactOf(input) {
375
411
  breaking
376
412
  };
377
413
  }
378
- function formatText(diff) {
379
- const lines = [];
380
- const section = (title, added, removed, changed = []) => {
381
- if (added.length === 0 && removed.length === 0 && changed.length === 0) return;
382
- lines.push(title);
383
- for (const item of added) lines.push(` + ${item}`);
384
- for (const item of removed) lines.push(` - ${item}`);
385
- for (const item of changed) lines.push(` ~ ${item}`);
386
- };
387
- section("permissions", diff.permissions.added, diff.permissions.removed, diff.permissions.renamed.map((rename) => `${rename.from} → ${rename.to} (renamed)`));
388
- section("levels", diff.levels.added.map((item) => `${item.permission}@${item.level}`), diff.levels.removed.map((item) => `${item.permission}@${item.level}`));
389
- section("scopes", diff.scopes.added, diff.scopes.removed);
390
- section("roles", diff.roles.added, diff.roles.removed, diff.roles.changed.map((name) => `${name}: declaration changed`));
391
- if (diff.grants === void 0) lines.push("grants: not compared (a catalog was built without its policy; run `permdock collect` with `policy` configured)");
392
- else section("grants", diff.grants.added.map(describeGrant), diff.grants.removed.map(describeGrant), diff.grants.changed.map((change) => `${describeGrant(change.after)}: ${change.changes.join(", ")}`));
393
- if (diff.delegations !== void 0) section("delegations", diff.delegations.added.map(describeDelegation), diff.delegations.removed.map(describeDelegation), diff.delegations.changed.map((change) => `${describeDelegation(change.after)}: ${change.changes.join(", ")}`));
394
- if (diff.impact !== void 0) {
395
- lines.push(diff.impact.length === 0 ? "impact: no fixture changes outcome" : `impact (${String(diff.impact.length)} fixture(s) change outcome)`);
396
- for (const row of diff.impact) {
397
- const where = row.tenant === void 0 ? "" : ` in ${row.tenant}`;
398
- lines.push(` ${row.subject}${where} ${row.action}: ${row.before} → ${row.after}`);
399
- }
400
- }
401
- if (lines.length === 0) lines.push("no changes");
402
- if (diff.breaking.length > 0) {
403
- lines.push(`breaking (${String(diff.breaking.length)})`);
404
- for (const change of diff.breaking) lines.push(` ${change.kind}: ${change.detail}`);
405
- }
406
- return `${lines.join("\n")}\n`;
407
- }
408
414
  async function runDiff(input) {
409
415
  const [sourceA, sourceB, ...extra] = input.sources;
410
416
  if (sourceA === void 0 || sourceB === void 0 || extra.length > 0) return {
@@ -0,0 +1,37 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { c as given } from "./flags-C3DktBDY.js";
3
+ //#region src/cli/commands/diff.ts
4
+ const diff = defineLeaf({
5
+ positionals: [{
6
+ name: "before",
7
+ description: "A permissions.catalog.json or a module exporting policy (default the committed catalog)"
8
+ }, {
9
+ name: "after",
10
+ description: "The same, for the new side (default the working tree)"
11
+ }],
12
+ flags: {
13
+ impact: {
14
+ type: "boolean",
15
+ description: "Run the fixtures through both sides and report changed outcomes"
16
+ },
17
+ fixtures: {
18
+ type: "string",
19
+ description: "Fixtures file for --impact",
20
+ valueHint: "file"
21
+ }
22
+ },
23
+ async run(ctx, { flags, args }) {
24
+ return (await import("./diff-3jbx6Rm4.js")).runDiff({
25
+ cwd: ctx.cwd,
26
+ config: ctx.config,
27
+ sources: [args["before"], args["after"]].filter((value) => value !== void 0),
28
+ impact: flags.impact,
29
+ fixtures: given(flags.fixtures),
30
+ json: ctx.json,
31
+ now: ctx.now,
32
+ io: ctx.io
33
+ });
34
+ }
35
+ });
36
+ //#endregion
37
+ export { diff };
@@ -0,0 +1,44 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { a as failOnFlag } from "./flags-C3DktBDY.js";
3
+ import { n as ask, t as CANCELLED } from "./prompt-DfZLJLIn.js";
4
+ //#region src/cli/commands/doctor.ts
5
+ const doctor = defineLeaf({
6
+ flags: {
7
+ only: {
8
+ type: "string",
9
+ repeatable: true,
10
+ description: "Check codes or groups to run",
11
+ valueHint: "code",
12
+ async complete() {
13
+ const { DOCTOR_CHECKS } = await import("./doctor-BdZw53-k.js");
14
+ return [.../* @__PURE__ */ new Set([...DOCTOR_CHECKS.map(({ code }) => code), ...DOCTOR_CHECKS.flatMap(({ groups }) => groups)])];
15
+ }
16
+ },
17
+ fix: {
18
+ type: "boolean",
19
+ description: "Apply safe fixes: install skills, regenerate the catalog"
20
+ },
21
+ ...failOnFlag
22
+ },
23
+ async run(ctx, { flags }) {
24
+ let fix = flags.fix;
25
+ if (fix && ctx.interactive && !ctx.yes) {
26
+ const answer = await ask(`Install the Agent Skills and regenerate the catalog in ${ctx.cwd}?`);
27
+ if (answer === void 0) return CANCELLED;
28
+ fix = answer;
29
+ }
30
+ return (await import("./doctor-BdZw53-k.js")).runDoctor({
31
+ cwd: ctx.cwd,
32
+ config: ctx.config,
33
+ only: flags.only,
34
+ json: ctx.json,
35
+ fix,
36
+ strict: flags["fail-on"] === "warning",
37
+ color: ctx.color,
38
+ now: ctx.now,
39
+ io: ctx.io
40
+ });
41
+ }
42
+ });
43
+ //#endregion
44
+ export { doctor };