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,36 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { c as given, u as permissionsFlag } from "./flags-C3DktBDY.js";
3
+ //#region src/cli/commands/arazzo.ts
4
+ const check = defineLeaf({
5
+ flags: {
6
+ doc: {
7
+ type: "string",
8
+ description: "Arazzo document",
9
+ valueHint: "arazzo.json"
10
+ },
11
+ openapi: {
12
+ type: "string",
13
+ description: "OpenAPI document the workflows call",
14
+ valueHint: "doc.json"
15
+ },
16
+ workflow: {
17
+ type: "string",
18
+ description: "Check one workflow",
19
+ valueHint: "id"
20
+ },
21
+ ...permissionsFlag
22
+ },
23
+ async run(ctx, { flags }) {
24
+ return (await import("./arazzo-CaUVBn7D.js")).runArazzo({
25
+ cwd: ctx.cwd,
26
+ config: ctx.config,
27
+ doc: given(flags.doc),
28
+ openapi: given(flags.openapi),
29
+ workflow: given(flags.workflow),
30
+ from: given(flags.permissions),
31
+ json: ctx.json
32
+ });
33
+ }
34
+ });
35
+ //#endregion
36
+ export { check };
@@ -1,20 +1,16 @@
1
- import { m as arazzoFindings } from "./snapshot-Dc9CHPME.js";
1
+ import { p as arazzoFindings } from "./src-Cu2m75uo.js";
2
+ import { c as missingInput } from "./errors-CWTY6uih.js";
2
3
  import { i as readJsonFile } from "./files-D_JIzUrP.js";
3
- import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-C3_oTHyO.js";
4
+ import { t as ARAZZO_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
5
+ import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
6
+ import { t as DOCS_BASE } from "./manifest-dvL2XEe1.js";
4
7
  import { existsSync } from "node:fs";
5
8
  import { resolve } from "node:path";
6
9
  //#region src/cli/arazzo.ts
7
10
  async function runArazzo(input) {
8
- if (input.rest[0] !== "check") return {
9
- code: 2,
10
- output: "permdock arazzo check --doc <arazzo> --openapi <doc>"
11
- };
12
11
  const docPath = input.doc;
13
12
  const openapiPath = input.openapi;
14
- if (docPath === void 0 || openapiPath === void 0) return {
15
- code: 2,
16
- output: "arazzo check requires --doc and --openapi"
17
- };
13
+ if (docPath === void 0 || openapiPath === void 0) throw missingInput("arazzo check", [...docPath === void 0 ? ["--doc"] : [], ...openapiPath === void 0 ? ["--openapi"] : []]);
18
14
  const arazzoFile = resolve(input.cwd, docPath);
19
15
  const openapiFile = resolve(input.cwd, openapiPath);
20
16
  if (!existsSync(arazzoFile) || !existsSync(openapiFile)) return {
@@ -51,20 +47,30 @@ async function runArazzo(input) {
51
47
  openapi,
52
48
  workflowId: input.workflow
53
49
  }, tree);
50
+ const located = findings.map((finding) => ({
51
+ code: finding.reason,
52
+ severity: "error",
53
+ message: `${finding.workflowId} ${finding.stepId}: ${finding.detail}`,
54
+ file: docPath,
55
+ docs: `${DOCS_BASE}/arazzo`
56
+ }));
54
57
  if (input.json) return {
55
58
  code: findings.length === 0 ? 0 : 1,
56
59
  output: JSON.stringify({
57
- $schema: "permdock-arazzo-check",
60
+ $schema: ARAZZO_REPORT_SCHEMA,
58
61
  findings
59
- })
62
+ }),
63
+ findings: located
60
64
  };
61
65
  if (findings.length === 0) return {
62
66
  code: 0,
63
- output: "arazzo check: all steps documented"
67
+ output: "arazzo check: all steps documented",
68
+ findings: located
64
69
  };
65
70
  return {
66
71
  code: 1,
67
- output: findings.map((finding) => `${finding.workflowId} ${finding.stepId}: ${finding.reason} (${finding.detail})`).join("\n")
72
+ output: findings.map((finding) => `${finding.workflowId} ${finding.stepId}: ${finding.reason} (${finding.detail})`).join("\n"),
73
+ findings: located
68
74
  };
69
75
  }
70
76
  //#endregion
@@ -0,0 +1,197 @@
1
+ import { n as CliError } from "./errors-CWTY6uih.js";
2
+ import { closest, distance } from "fastest-levenshtein";
3
+ //#region src/cli/core/context.ts
4
+ /** Flags every command accepts, read from anywhere before `--`. */
5
+ const GLOBAL_FLAGS = {
6
+ cwd: {
7
+ type: "string",
8
+ description: "Run as if started in this directory",
9
+ valueHint: "dir"
10
+ },
11
+ config: {
12
+ type: "string",
13
+ description: "Config file (default permdock.config.{ts,mts,js,mjs})",
14
+ valueHint: "file"
15
+ },
16
+ json: {
17
+ type: "boolean",
18
+ description: "Print the cli-result-v1 JSON envelope on stdout"
19
+ },
20
+ format: {
21
+ type: "enum",
22
+ options: [
23
+ "text",
24
+ "json",
25
+ "github",
26
+ "sarif"
27
+ ],
28
+ description: "Output format; github and sarif render findings"
29
+ },
30
+ yes: {
31
+ type: "boolean",
32
+ alias: "y",
33
+ description: "Never prompt; take the answer the flags give"
34
+ },
35
+ confirm: {
36
+ type: "string",
37
+ description: "The token a consent_required result gave, once the person agreed",
38
+ valueHint: "token"
39
+ },
40
+ agent: {
41
+ type: "enum",
42
+ options: [
43
+ "auto",
44
+ "yes",
45
+ "no"
46
+ ],
47
+ description: "Agent mode: no prompts, JSON by default (default auto, PERMDOCK_AGENT)"
48
+ },
49
+ debug: {
50
+ type: "boolean",
51
+ description: "Log each step and the cause of an error on stderr"
52
+ },
53
+ color: {
54
+ type: "boolean",
55
+ description: "Styled output on a colour terminal",
56
+ default: true,
57
+ negativeDescription: "Plain output"
58
+ },
59
+ help: {
60
+ type: "boolean",
61
+ alias: "h",
62
+ description: "Print help"
63
+ }
64
+ };
65
+ //#endregion
66
+ //#region src/cli/core/args.ts
67
+ /** The closest name within a small edit distance, or `undefined`. */
68
+ function didYouMean(given, names) {
69
+ if (names.length === 0) return;
70
+ const best = closest(given, [...names]);
71
+ return distance(given, best) <= Math.max(1, Math.floor(given.length / 3)) ? best : void 0;
72
+ }
73
+ /** A sentence suggesting `suggestion`, or nothing. */
74
+ function suggestion(given, names) {
75
+ const best = didYouMean(given, names);
76
+ return best === void 0 ? "" : ` Did you mean ${best}?`;
77
+ }
78
+ /** Every spelling a flag set accepts: `--name`, `--no-name` for booleans, `-x` aliases. */
79
+ function lookupOf(flags) {
80
+ const lookup = /* @__PURE__ */ new Map();
81
+ for (const [name, flag] of Object.entries(flags)) {
82
+ lookup.set(`--${name}`, {
83
+ name,
84
+ negated: false
85
+ });
86
+ if (flag.type === "boolean") lookup.set(`--no-${name}`, {
87
+ name,
88
+ negated: true
89
+ });
90
+ if (flag.alias !== void 0) lookup.set(`-${flag.alias}`, {
91
+ name,
92
+ negated: false
93
+ });
94
+ }
95
+ return lookup;
96
+ }
97
+ function flagSpellings(flags) {
98
+ return [...lookupOf(flags).keys()];
99
+ }
100
+ /** A value never starts with `-`, bar `-` itself: `--out --check` is a bare `--out`. */
101
+ function isValue(token) {
102
+ return token !== void 0 && (token === "-" || !token.startsWith("-"));
103
+ }
104
+ function split(value) {
105
+ return value.split(",").map((item) => item.trim()).filter((item) => item !== "");
106
+ }
107
+ function checkEnum(command, name, flag, value) {
108
+ if (flag.type === "enum" && !flag.options.includes(value)) throw new CliError("usage", `${command}: --${name} ${value === "" ? "needs a value" : `'${value}' is not one of ${flag.options.join(", ")}`}.${suggestion(value, flag.options)}`, { code: "invalid_value" });
109
+ }
110
+ /**
111
+ * Splits argv into the flags `flags` declares, positionals and the tokens
112
+ * after `--`. An undeclared flag is a usage error naming the nearest one.
113
+ * `--name=value`, `--name value`, `--no-name` and `-x` aliases all read.
114
+ */
115
+ function parseFlags(command, argv, flags) {
116
+ const lookup = lookupOf(flags);
117
+ const values = /* @__PURE__ */ new Map();
118
+ const positionals = [];
119
+ let passthrough = [];
120
+ for (let i = 0; i < argv.length; i += 1) {
121
+ const token = argv[i] ?? "";
122
+ if (token === "--") {
123
+ passthrough = argv.slice(i + 1);
124
+ break;
125
+ }
126
+ if (token === "-" || !token.startsWith("-")) {
127
+ positionals.push(token);
128
+ continue;
129
+ }
130
+ const eq = token.indexOf("=");
131
+ const spelling = eq === -1 ? token : token.slice(0, eq);
132
+ const found = lookup.get(spelling);
133
+ if (found === void 0) throw new CliError("usage", `${command}: unknown flag '${spelling}'.${suggestion(spelling, [...lookup.keys(), ...lookupOf(GLOBAL_FLAGS).keys()].filter((key) => key.startsWith("--")))} Run permdock ${command} --help for the flags it takes.`, { code: "unknown_flag" });
134
+ const flag = flags[found.name];
135
+ if (flag === void 0) continue;
136
+ if (flag.type === "boolean") {
137
+ if (eq !== -1) {
138
+ const raw = token.slice(eq + 1);
139
+ if (raw !== "true" && raw !== "false") throw new CliError("usage", `${command}: ${spelling} takes true or false, got '${raw}'`, { code: "invalid_value" });
140
+ values.set(found.name, raw === "true" !== found.negated);
141
+ } else values.set(found.name, !found.negated);
142
+ continue;
143
+ }
144
+ let value;
145
+ if (eq !== -1) value = token.slice(eq + 1);
146
+ else if (isValue(argv[i + 1])) {
147
+ value = argv[i + 1] ?? "";
148
+ i += 1;
149
+ } else value = "";
150
+ if (flag.repeatable === true) {
151
+ const items = split(value);
152
+ for (const item of items) checkEnum(command, found.name, flag, item);
153
+ const previous = values.get(found.name);
154
+ values.set(found.name, [...Array.isArray(previous) ? previous : [], ...items]);
155
+ continue;
156
+ }
157
+ checkEnum(command, found.name, flag, value);
158
+ values.set(found.name, value);
159
+ }
160
+ return {
161
+ values,
162
+ positionals,
163
+ passthrough
164
+ };
165
+ }
166
+ /** The leaf's input: defaults applied, positionals named and counted. */
167
+ function parseLeaf(command, argv, flags, positionals = []) {
168
+ const raw = parseFlags(command, argv, flags);
169
+ const values = {};
170
+ for (const [name, flag] of Object.entries(flags)) {
171
+ const given = raw.values.get(name);
172
+ if (given !== void 0) values[name] = given;
173
+ else if (flag.type === "boolean") values[name] = flag.default ?? false;
174
+ else if (flag.repeatable === true) values[name] = [];
175
+ else values[name] = flag.type === "enum" ? flag.default : void 0;
176
+ }
177
+ const args = {};
178
+ const rest = [...raw.positionals];
179
+ for (const positional of positionals) {
180
+ args[positional.name] = positional.variadic === true ? rest[0] : rest.shift();
181
+ if (positional.required === true && args[positional.name] === void 0) throw new CliError("action", `${command}: <${positional.name}> is required. Run permdock ${command} --help.`, {
182
+ code: "input_required",
183
+ extensions: { missing: [`<${positional.name}>`] }
184
+ });
185
+ }
186
+ const variadic = positionals.at(-1)?.variadic === true;
187
+ const extra = variadic ? [] : rest;
188
+ if (extra.length > 0) throw new CliError("usage", `${command}: unexpected argument '${extra[0] ?? ""}'. Run permdock ${command} --help.`, { code: "usage" });
189
+ return {
190
+ flags: values,
191
+ args,
192
+ rest: variadic ? rest : [],
193
+ passthrough: raw.passthrough
194
+ };
195
+ }
196
+ //#endregion
197
+ export { suggestion as a, parseLeaf as i, flagSpellings as n, GLOBAL_FLAGS as o, parseFlags as r, didYouMean as t };
@@ -0,0 +1,43 @@
1
+ import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { a as OperationInput, t as Operation } from "../operations-X0VM7F3m.js";
4
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
+ import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-Dw0MTS3D.js";
7
+ import { APIContext, MiddlewareHandler } from "astro";
8
+ //#region src/astro/create.d.ts
9
+ type AstroPermDockOptions<TUser = unknown> = FetchAdapterOptions<APIContext, TUser>;
10
+ /** What the adapter sets on `context.locals`. */
11
+ type AstroPermDockLocals<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
12
+ readonly permdock: PermDock<V>;
13
+ readonly permdockData: TData;
14
+ };
15
+ /** The context a wrapped endpoint receives: its own `APIContext` with typed `locals`. */
16
+ type AstroPermDockContext<TContext extends APIContext = APIContext, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TContext & {
17
+ readonly locals: AstroPermDockLocals<TData, V>;
18
+ };
19
+ /** Wraps an endpoint; the route keeps its own `APIContext` type. */
20
+ type AstroGuarded<TData, V extends PolicyVocabulary = PolicyVocabulary> = <TContext extends APIContext, R = Response>(handler: (context: AstroPermDockContext<TContext, TData, V>) => R | Promise<R>) => (context: TContext) => Promise<R | Response>;
21
+ type AstroProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
22
+ <T = unknown>(permission: Permission | null, data?: ContextReader<APIContext, T | null | undefined>, protectOptions?: ProtectOptions): AstroGuarded<NonNullable<T>, V>;
23
+ <TOperation extends Operation>(operation: TOperation, input?: ContextReader<APIContext, OperationInput<TOperation>>, protectOptions?: ProtectOptions): AstroGuarded<unknown, V>;
24
+ };
25
+ type AstroPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
26
+ /** `onRequest` in `src/middleware.ts`: sets `context.locals.permdock`; a bad Web Bot Auth signature is a `401`. */
27
+ readonly middleware: () => MiddlewareHandler;
28
+ /** `export const DELETE = protect(permissions.post.delete, loadPost)(handler)`. */
29
+ readonly protect: AstroProtect<V>;
30
+ /** Types `context.locals.permdock` for an endpoint and answers a thrown PermDock error with Problem Details. */
31
+ readonly withPermDock: AstroGuarded<unknown, V>;
32
+ /** The instance for an endpoint, an action or a page's frontmatter (`Astro` is an `APIContext`). */
33
+ readonly getPermDock: (context: APIContext) => Promise<PermDock<V>>;
34
+ /** The snapshot a page passes to a `permdock/react` island. */
35
+ readonly getSnapshot: (context: APIContext, query?: SnapshotQuery) => Promise<Snapshot>;
36
+ readonly connection: (context: APIContext, connectionOptions?: ConnectionOptions) => Promise<Connection>;
37
+ /** `export const { GET, POST } = permdockHandler()` in `src/pages/api/permdock.ts`. */
38
+ readonly permdockHandler: () => PermDockHandlers<APIContext>;
39
+ readonly openapi: OpenApiHooks;
40
+ };
41
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: AstroPermDockOptions<TUser>): AstroPermDock<V>;
42
+ //#endregion
43
+ export { type AstroGuarded, type AstroPermDock, type AstroPermDockContext, type AstroPermDockLocals, type AstroPermDockOptions, type AstroProtect, type ContextReader, InvalidSignatureError, type PermDockHandlers, type ProtectTarget, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,27 @@
1
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
2
+ import { n as guardedRoute, r as instanceRoute, t as fetchAdapter } from "../fetch-adapter-DD_gfmrC.js";
3
+ //#region src/astro/create.ts
4
+ const route = {
5
+ context: (context) => context,
6
+ locals: (context) => context.locals
7
+ };
8
+ function createPermDock(policy, options) {
9
+ const adapter = fetchAdapter(policy, options, "astro", (context) => context.request);
10
+ const middleware = () => async (context, next) => {
11
+ const attached = await adapter.ensure(context.locals, context);
12
+ return attached.ok ? next() : attached.response;
13
+ };
14
+ const protect = ((target, data, protectOptions) => guardedRoute(adapter, route, target, data, protectOptions));
15
+ return {
16
+ middleware,
17
+ protect,
18
+ withPermDock: instanceRoute(adapter, route),
19
+ getPermDock: adapter.getPermDock,
20
+ getSnapshot: adapter.getSnapshot,
21
+ connection: adapter.connection,
22
+ permdockHandler: adapter.handlers,
23
+ openapi: adapter.kernel.openapi
24
+ };
25
+ }
26
+ //#endregion
27
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,55 @@
1
+ import { t as whoCan } from "./who-can-DWBAcaCQ.js";
2
+ //#region src/delivery/audience.ts
3
+ async function granted(permdock, ids, permission, row) {
4
+ const unique = [...new Set(ids.filter((id) => typeof id === "string" && id !== ""))];
5
+ const decisions = await Promise.all(unique.map(async (id) => {
6
+ try {
7
+ return (await permdock.decideFor(id, permission, row)).outcome;
8
+ } catch {
9
+ return "denied";
10
+ }
11
+ }));
12
+ return unique.filter((_, index) => decisions[index] === "granted");
13
+ }
14
+ /**
15
+ * Who may receive a delivery about `row`: the holders `whoCan` lists (or
16
+ * `candidates`), kept only where `decideFor` grants `permission` in the
17
+ * sender's active tenant. A collection permission has no holders to list,
18
+ * so it needs `candidates`; without them it is empty and incomplete.
19
+ */
20
+ async function audience(permdock, permission, row, options = {}) {
21
+ if (options.candidates !== void 0) return Object.freeze({
22
+ principals: Object.freeze(await granted(permdock, options.candidates, permission, row)),
23
+ complete: true
24
+ });
25
+ if (permission.kind !== "instance" || permdock.subject.principal === null) return Object.freeze({
26
+ principals: Object.freeze([]),
27
+ complete: permdock.subject.principal === null
28
+ });
29
+ let listed;
30
+ try {
31
+ listed = await whoCan(permdock, permission, row);
32
+ } catch {
33
+ return Object.freeze({
34
+ principals: Object.freeze([]),
35
+ complete: false
36
+ });
37
+ }
38
+ return Object.freeze({
39
+ principals: Object.freeze(await granted(permdock, listed.holders.map((holder) => holder.principal.id), permission, row)),
40
+ complete: listed.complete
41
+ });
42
+ }
43
+ /**
44
+ * The subscribers whose principal `decideFor` grants the event's
45
+ * permission on its row, in their order: the per-event filter for webhook
46
+ * endpoints and realtime channels. A subscriber without a string
47
+ * `principal` is dropped.
48
+ */
49
+ async function subscribersFor(permdock, event, subscribers) {
50
+ const ids = subscribers.map((subscriber) => subscriber.principal).filter((id) => typeof id === "string");
51
+ const allowed = new Set(await granted(permdock, ids, event.permission, event.row));
52
+ return subscribers.filter((subscriber) => typeof subscriber.principal === "string" && allowed.has(subscriber.principal));
53
+ }
54
+ //#endregion
55
+ export { subscribersFor as n, audience as t };
@@ -0,0 +1,178 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { h as secondsAt } from "./time-DkWjdL98.js";
3
+ import { n as CliError } from "./errors-CWTY6uih.js";
4
+ import { a as refreshCredential, c as stringField, n as discoverAuthorizationServer } from "./device-BARQ8eYG.js";
5
+ import { i as writeCredentials, r as readCredentials, t as credentialsPath } from "./storage-C2bWdvJH.js";
6
+ import { existsSync } from "node:fs";
7
+ import path from "node:path";
8
+ //#region src/cli/cloud/issuer.ts
9
+ /** The PermDock Cloud platform issuer and API base. */
10
+ const PLATFORM_ISSUER = "https://permdock.com/api";
11
+ /** The public OAuth client the `permdock` binary registers as. */
12
+ const CLI_CLIENT_ID = "permdock-cli";
13
+ const READ_SCOPES = ["projects:read", "policy:read"];
14
+ const WRITE_SCOPE = "catalog:write";
15
+ function firstNonEmpty(...values) {
16
+ for (const value of values) if (value !== void 0 && value !== "") return value;
17
+ return "";
18
+ }
19
+ /** `--url`, then `PERMDOCK_CLOUD_URL`, then the platform issuer; never a trailing slash. */
20
+ function cloudUrl(flag, env) {
21
+ return firstNonEmpty(flag, env["PERMDOCK_CLOUD_URL"], PLATFORM_ISSUER).replace(/\/+$/u, "");
22
+ }
23
+ async function issuerMetadata(issuer, runtime) {
24
+ const body = await discoverAuthorizationServer(issuer, runtime);
25
+ if (body === null) return null;
26
+ const endpoint = (name) => {
27
+ const value = stringField(body, name);
28
+ return value !== void 0 && isHttps(value, issuer) ? value : void 0;
29
+ };
30
+ return {
31
+ issuer,
32
+ ...optional("authorizationEndpoint", endpoint("authorization_endpoint")),
33
+ ...optional("deviceAuthorizationEndpoint", endpoint("device_authorization_endpoint")),
34
+ ...optional("tokenEndpoint", endpoint("token_endpoint")),
35
+ ...optional("revocationEndpoint", endpoint("revocation_endpoint")),
36
+ ...optional("registrationEndpoint", endpoint("registration_endpoint"))
37
+ };
38
+ }
39
+ function optional(key, value) {
40
+ return value === void 0 ? {} : { [key]: value };
41
+ }
42
+ /**
43
+ * An endpoint must be `https:`, except on a loopback issuer, which a local
44
+ * Cloud serves over plain HTTP.
45
+ */
46
+ function isHttps(value, issuer) {
47
+ try {
48
+ const url = new URL(value);
49
+ if (url.protocol === "https:") return true;
50
+ const host = new URL(issuer).hostname;
51
+ return url.protocol === "http:" && (host === "localhost" || host === "127.0.0.1" || host === "[::1]");
52
+ } catch {
53
+ return false;
54
+ }
55
+ }
56
+ //#endregion
57
+ //#region src/cli/cloud/auth.ts
58
+ /** The service name credentials are stored under, in the keychain or the config directory. */
59
+ const CREDENTIAL_SERVICE = "permdock";
60
+ /** Seconds before `expires_at` at which a stored access token counts as expired. */
61
+ const EXPIRY_SKEW_SECONDS = 30;
62
+ const KEYRING_PACKAGE = "@napi-rs/keyring";
63
+ function cliRuntime(io, env) {
64
+ const now = io.now;
65
+ return {
66
+ env,
67
+ ...io.fetch === void 0 ? {} : { fetch: io.fetch },
68
+ ...now === void 0 ? {} : { now: () => ({ epochMilliseconds: now().getTime() }) }
69
+ };
70
+ }
71
+ /**
72
+ * `Entry` from the optional peer `@napi-rs/keyring` when the project installed
73
+ * it; without it credentials go to the mode-0600 file.
74
+ */
75
+ async function loadKeyring() {
76
+ let loaded;
77
+ try {
78
+ loaded = await import(KEYRING_PACKAGE);
79
+ } catch {
80
+ return;
81
+ }
82
+ if (!isRecord(loaded) || typeof loaded["Entry"] !== "function") return;
83
+ return loaded["Entry"];
84
+ }
85
+ async function credentialStorage() {
86
+ const keyring = await loadKeyring();
87
+ return keyring === void 0 ? { service: CREDENTIAL_SERVICE } : {
88
+ service: CREDENTIAL_SERVICE,
89
+ keyring
90
+ };
91
+ }
92
+ /** The git work tree `cwd` sits in, or `null` outside one. */
93
+ function repositoryRoot(cwd) {
94
+ let dir = path.resolve(cwd);
95
+ for (;;) {
96
+ if (existsSync(path.join(dir, ".git"))) return dir;
97
+ const parent = path.dirname(dir);
98
+ if (parent === dir) return null;
99
+ dir = parent;
100
+ }
101
+ }
102
+ /** The credentials file when it would land inside the repository at `cwd`; `null` when it is outside. */
103
+ function credentialsInsideRepository(cwd, runtime) {
104
+ const root = repositoryRoot(cwd);
105
+ if (root === null) return null;
106
+ const file = path.resolve(credentialsPath(CREDENTIAL_SERVICE, runtime));
107
+ return file.startsWith(`${root}${path.sep}`) ? file : null;
108
+ }
109
+ function scopesOf(credential) {
110
+ return (credential.scope ?? "").split(" ").filter((scope) => scope !== "");
111
+ }
112
+ function authRequired(message, login, ci) {
113
+ return new CliError("action", message, {
114
+ code: "auth_required",
115
+ next: [{
116
+ command: login,
117
+ when: "to log in on this machine"
118
+ }, {
119
+ command: ci,
120
+ when: "in CI"
121
+ }]
122
+ });
123
+ }
124
+ /** The stored login for `issuer`, refreshed when its access token has expired. */
125
+ async function storedLogin(issuer, runtime) {
126
+ const storage = await credentialStorage();
127
+ const credential = readCredentials(storage, issuer, runtime);
128
+ if (credential === null) return null;
129
+ const now = secondsAt(runtime.now?.());
130
+ if (credential.expires_at === void 0 || credential.expires_at - EXPIRY_SKEW_SECONDS > now) return credential;
131
+ const metadata = await issuerMetadata(issuer, runtime);
132
+ const refreshed = metadata?.tokenEndpoint === void 0 ? null : await refreshCredential({
133
+ clientId: CLI_CLIENT_ID,
134
+ tokenEndpoint: metadata.tokenEndpoint
135
+ }, credential, runtime);
136
+ if (refreshed === null) return "expired";
137
+ const kept = {
138
+ ...refreshed,
139
+ ...refreshed.refresh_token === void 0 && credential.refresh_token !== void 0 ? { refresh_token: credential.refresh_token } : {},
140
+ ...refreshed.scope === void 0 && credential.scope !== void 0 ? { scope: credential.scope } : {}
141
+ };
142
+ writeCredentials(storage, issuer, kept, runtime);
143
+ return kept;
144
+ }
145
+ /**
146
+ * The bearer for the read API: `PERMDOCK_CLOUD_TOKEN` (a read-only key pinned
147
+ * to one environment, for CI), then the stored login for `issuer`. Throws an
148
+ * `auth_required` error when there is neither.
149
+ */
150
+ async function readAuth(command, issuer, env, runtime) {
151
+ const token = env["PERMDOCK_CLOUD_TOKEN"];
152
+ if (token !== void 0 && token !== "") return {
153
+ bearer: token,
154
+ source: "PERMDOCK_CLOUD_TOKEN"
155
+ };
156
+ const login = await storedLogin(issuer, runtime);
157
+ if (login === "expired" || login === null) throw authRequired(login === null ? `${command} needs a login: run permdock login, or set PERMDOCK_CLOUD_TOKEN in CI` : `${command}: the login for ${issuer} has expired; run permdock login`, "permdock login", "export PERMDOCK_CLOUD_TOKEN=<read-only key>");
158
+ return {
159
+ bearer: login.access_token,
160
+ source: "login"
161
+ };
162
+ }
163
+ /** The bearer for `cloud push`: `PERMDOCK_CLOUD_KEY`, then a login holding `catalog:write`. */
164
+ async function pushAuth(issuer, env, runtime) {
165
+ const key = env["PERMDOCK_CLOUD_KEY"];
166
+ if (key !== void 0 && key !== "") return {
167
+ bearer: key,
168
+ source: "PERMDOCK_CLOUD_KEY"
169
+ };
170
+ const login = await storedLogin(issuer, runtime);
171
+ if (login === "expired" || login === null || !scopesOf(login).includes("catalog:write")) throw authRequired(login === "expired" ? `permdock cloud push: the login for ${issuer} has expired; run permdock login --scope ${WRITE_SCOPE}` : login === null ? `permdock cloud push needs PERMDOCK_CLOUD_KEY in the environment, or a login from permdock login --scope ${WRITE_SCOPE}` : `permdock cloud push needs ${WRITE_SCOPE}: run permdock login --scope ${WRITE_SCOPE}`, `permdock login --scope ${WRITE_SCOPE}`, "export PERMDOCK_CLOUD_KEY=<write key>");
172
+ return {
173
+ bearer: login.access_token,
174
+ source: "login"
175
+ };
176
+ }
177
+ //#endregion
178
+ export { pushAuth as a, READ_SCOPES as c, issuerMetadata as d, credentialsInsideRepository as i, cloudUrl as l, cliRuntime as n, readAuth as o, credentialStorage as r, CLI_CLIENT_ID as s, CREDENTIAL_SERVICE as t, firstNonEmpty as u };
@@ -1,9 +1,10 @@
1
- import { E as Policy, Or as Principal } from "../policy-types-sp9P1iIV.js";
2
- import { f as ApprovalStore } from "../types-Br9IXUBG.js";
3
- import { t as InstanceOptions } from "../instance-options-plkrsAog.js";
1
+ import { T as Policy, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { m as ApprovalStore } from "../types-BdtSDbBO.js";
3
+ import { t as InstanceOptions } from "../instance-options-BsVpyGIk.js";
4
+ import { a as evaluationsSemantic, n as EvaluationsSemantic, r as evaluateBatch, t as EVALUATIONS_SEMANTICS } from "../evaluations-C_1vdSZc.js";
4
5
  //#region src/authzen/types.d.ts
5
6
  type AuthzenResourceAdapter = {
6
- readonly load?: (id: string) => unknown;
7
+ readonly data?: (id: string) => unknown;
7
8
  readonly list?: (query: {
8
9
  readonly where?: unknown;
9
10
  }) => readonly unknown[] | Promise<readonly unknown[]>;
@@ -29,11 +30,30 @@ type AuthzenPermDockOptions<TUser = unknown> = InstanceOptions & {
29
30
  readonly maxEvaluations?: number;
30
31
  };
31
32
  type AuthzenPermDock = {
32
- readonly permdockHandler: (request: Request) => Promise<Response>;
33
+ readonly permdockHandler: () => (request: Request) => Promise<Response>;
33
34
  };
34
35
  type AuthzenFactory = <TUser, TPrincipal extends Principal = Principal>(policy: Policy<TUser, TPrincipal>, options: AuthzenPermDockOptions<TUser>) => AuthzenPermDock;
35
36
  //#endregion
36
37
  //#region src/authzen/create.d.ts
37
38
  export declare const createPermDock: AuthzenFactory;
38
39
  //#endregion
39
- export type { AuthzenFactory, AuthzenPermDock, AuthzenPermDockOptions, AuthzenResourceAdapter, AuthzenSubjectRecord };
40
+ //#region src/authzen/map.d.ts
41
+ type AuthzenEntity = {
42
+ readonly type?: unknown;
43
+ readonly id?: unknown;
44
+ readonly properties?: unknown;
45
+ readonly name?: unknown;
46
+ };
47
+ type AuthzenItem = {
48
+ readonly subject?: AuthzenEntity;
49
+ readonly action?: AuthzenEntity;
50
+ readonly resource?: AuthzenEntity;
51
+ readonly context?: unknown;
52
+ };
53
+ /**
54
+ * One item of an `evaluations` batch with the request's top-level `subject`,
55
+ * `action`, `resource` and `context` filled in where the item omits them.
56
+ */
57
+ export declare function mergeEvaluationItem(shared: AuthzenItem, item: unknown): AuthzenItem;
58
+ //#endregion
59
+ export { type AuthzenEntity, type AuthzenFactory, type AuthzenItem, type AuthzenPermDock, type AuthzenPermDockOptions, type AuthzenResourceAdapter, type AuthzenSubjectRecord, EVALUATIONS_SEMANTICS, type EvaluationsSemantic, evaluateBatch, evaluationsSemantic };