permdock 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -1,83 +0,0 @@
1
- import { i as describeError } from "./errors-CWfoNg9N.js";
2
- import { a as listArg, i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-BeaGNj_o.js";
3
- import { defineCommand } from "citty";
4
- //#region src/cli/commands/collect.ts
5
- function collect(ctx) {
6
- return defineCommand({
7
- meta: {
8
- name: "collect",
9
- description: COMMAND_DESCRIPTIONS.collect
10
- },
11
- args: {
12
- ...globalArgs,
13
- check: {
14
- type: "boolean",
15
- description: "Exit 1 when the catalog on disk is stale; write nothing"
16
- },
17
- src: {
18
- type: "string",
19
- description: "Source roots or globs, repeatable or comma-separated",
20
- valueHint: "path"
21
- },
22
- out: {
23
- type: "string",
24
- description: "Catalog file to write",
25
- valueHint: "file"
26
- },
27
- watch: {
28
- type: "boolean",
29
- description: "Collect again when a source, config or policy file changes"
30
- }
31
- },
32
- async run({ args: parsed, rawArgs }) {
33
- const src = listArg(rawArgs, "src");
34
- const out = stringArg(parsed.out);
35
- const overrides = {
36
- ...src.length > 0 ? { srcPath: src } : {},
37
- ...out === void 0 ? {} : { out }
38
- };
39
- if (parsed.watch === true) {
40
- if (parsed.check === true) {
41
- ctx.report({
42
- code: 2,
43
- output: "collect: --watch writes the catalog; drop --check"
44
- });
45
- return;
46
- }
47
- const { createCollectScheduler } = await import("./watch-BwxLTYMZ.js");
48
- const scheduler = createCollectScheduler(ctx.cwd, { collect: overrides }, {
49
- ...ctx.configFile === void 0 ? {} : { configFile: ctx.configFile },
50
- report: (message) => {
51
- ctx.io.stderr(message ?? "catalog updated");
52
- }
53
- });
54
- let message;
55
- try {
56
- message = await scheduler.run(false);
57
- } catch (error) {
58
- message = describeError(error);
59
- }
60
- scheduler.watch();
61
- ctx.report({
62
- code: 0,
63
- output: message ?? "watching for changes; Ctrl-C to stop"
64
- });
65
- return;
66
- }
67
- const result = await (await import("./collect-DSWOk19R.js")).runCollect({
68
- cwd: ctx.cwd,
69
- config: ctx.config,
70
- collect: overrides,
71
- check: parsed.check === true,
72
- now: ctx.now,
73
- io: ctx.io
74
- });
75
- ctx.report({
76
- code: result.code,
77
- output: result.message
78
- });
79
- }
80
- });
81
- }
82
- //#endregion
83
- export { collect };
@@ -1,2 +0,0 @@
1
- import { r as runCollect } from "./collect-DSTE3ml9.js";
2
- export { runCollect };
@@ -1,97 +0,0 @@
1
- //#region src/cli/commands/context.ts
2
- /** Flags every command accepts. `run()` reads them from anywhere in argv. */
3
- const globalArgs = {
4
- cwd: {
5
- type: "string",
6
- description: "Run as if started in this directory",
7
- valueHint: "dir"
8
- },
9
- config: {
10
- type: "string",
11
- description: "Config file (default permdock.config.{ts,mts,js,mjs})",
12
- valueHint: "file"
13
- },
14
- json: {
15
- type: "boolean",
16
- description: "Machine-readable output"
17
- },
18
- yes: {
19
- type: "boolean",
20
- alias: "y",
21
- description: "Never prompt; take the answer the flags give"
22
- },
23
- color: {
24
- type: "boolean",
25
- description: "Styled output on a colour terminal",
26
- default: true,
27
- negativeDescription: "Plain output"
28
- }
29
- };
30
- /**
31
- * A list flag: every `--name a,b` and `--name=c` occurrence, comma-split and
32
- * trimmed, in order. citty keeps only the last occurrence of a string flag.
33
- */
34
- function listArg(rawArgs, name) {
35
- const values = [];
36
- const flag = `--${name}`;
37
- for (const [i, token] of rawArgs.entries()) {
38
- if (token === "--") break;
39
- let value;
40
- if (token.startsWith(`${flag}=`)) value = token.slice(flag.length + 1);
41
- else if (token === flag) {
42
- const next = rawArgs[i + 1];
43
- if (next !== void 0 && (next === "-" || !next.startsWith("-"))) value = next;
44
- }
45
- if (value !== void 0) values.push(...value.split(",").map((item) => item.trim()));
46
- }
47
- return values;
48
- }
49
- /** A command's flag and positional definitions, whatever form it declared them in. */
50
- function resolveArgs(command) {
51
- const args = command.args;
52
- if (args === void 0) return {};
53
- return typeof args === "function" ? args() : args;
54
- }
55
- /** A string flag, `undefined` when absent or given without a value. */
56
- function stringArg(value) {
57
- return typeof value === "string" && value !== "" ? value : void 0;
58
- }
59
- //#endregion
60
- //#region src/cli/commands/index.ts
61
- /** What `permdock --help` lists, without loading any command module. */
62
- const COMMAND_DESCRIPTIONS = {
63
- collect: "Scan the sources for definePermissions() and permission references; write the catalog and barrel",
64
- catalog: "Export the catalog as JSON, JSON Schema or Markdown",
65
- diff: "Compare two policies or catalogs; exit 1 on a breaking change",
66
- usage: "Report unused, ungranted and role-less permissions and conditions on undeclared fields",
67
- doctor: "Check a PermDock installation and print a fix for each finding",
68
- config: "Check permdock.config.ts for unknown keys, or print the effective config",
69
- skills: "Install, update or list the PermDock Agent Skills",
70
- openapi: "Emit security into an OpenAPI document, or import one into a generated definition",
71
- rls: "Generate, import, verify or migrate Postgres RLS policies from the policy",
72
- arazzo: "Resolve every Arazzo step to x-permdock-permissions",
73
- cloud: "Publish the catalog, hostable flags and role assignability to a PermDock Cloud environment",
74
- supabase: "Generate the Supabase Custom Access Token Hook, or inspect its manifest",
75
- powersync: "Generate PowerSync Sync Streams from the policy, or verify them against the fixtures"
76
- };
77
- /** Every top-level command, loaded only when it runs or its own `--help` is asked for. */
78
- const commands = {
79
- collect: async () => (await import("./collect-CHB22Sx4.js")).collect,
80
- catalog: async () => (await import("./catalog-CYj-mX2O.js")).catalog,
81
- diff: async () => (await import("./diff-C9RDjjhs.js")).diff,
82
- usage: async () => (await import("./usage-B0YuTQRO.js")).usage,
83
- doctor: async () => (await import("./doctor-Djh6JDEk.js")).doctor,
84
- config: async () => (await import("./config-ir40y8m0.js")).config,
85
- skills: async () => (await import("./skills-C5CbhhpG.js")).skills,
86
- openapi: async () => (await import("./openapi-CQTsgKoB.js")).openapi,
87
- rls: async () => (await import("./rls-P-BeBx0n.js")).rls,
88
- arazzo: async () => (await import("./arazzo-C9chp3ST.js")).arazzo,
89
- cloud: async () => (await import("./cloud-CfwZ39Rl.js")).cloud,
90
- supabase: async () => (await import("./supabase-s4o9s1O1.js")).supabase,
91
- powersync: async () => (await import("./powersync-DE19b9dT.js")).powersync
92
- };
93
- function isCommand(name) {
94
- return Object.hasOwn(commands, name);
95
- }
96
- //#endregion
97
- export { listArg as a, globalArgs as i, commands as n, resolveArgs as o, isCommand as r, stringArg as s, COMMAND_DESCRIPTIONS as t };
@@ -1,36 +0,0 @@
1
- import { i as globalArgs, t as COMMAND_DESCRIPTIONS } from "./commands-BeaGNj_o.js";
2
- import { defineCommand } from "citty";
3
- //#region src/cli/commands/config.ts
4
- function config(ctx) {
5
- return defineCommand({
6
- meta: {
7
- name: "config",
8
- description: COMMAND_DESCRIPTIONS.config
9
- },
10
- args: {
11
- ...globalArgs,
12
- print: {
13
- type: "boolean",
14
- description: "Print the effective config as JSON: the file, as written, and each default"
15
- },
16
- strict: {
17
- type: "boolean",
18
- description: "Exit 1 on warnings"
19
- }
20
- },
21
- async run({ args: parsed }) {
22
- const { runConfig } = await import("./config-report-CdCgbRnV.js");
23
- ctx.report(runConfig({
24
- cwd: ctx.cwd,
25
- config: ctx.config,
26
- file: ctx.configPath,
27
- warnings: ctx.configWarnings,
28
- print: parsed.print === true,
29
- json: ctx.json,
30
- strict: parsed.strict === true
31
- }));
32
- }
33
- });
34
- }
35
- //#endregion
36
- export { config };
@@ -1,253 +0,0 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { _ as listPermissions } from "./permissions-DVoF6dMt.js";
3
- import { n as problemDetails } from "./problem-details-_AMOYz-w.js";
4
- import { r as challengeScope, t as createPermDock$1 } from "./permdock-CbgvLnuo.js";
5
- import { n as resourceRef } from "./resource-ref-CaS9yVPi.js";
6
- import { n as hasCredentials } from "./http-SO7qGttf.js";
7
- import { a as notFoundProblem, l as unauthenticatedProblem, o as problemFromDecision, r as decisionResponse } from "./problem-B43ztKIm.js";
8
- import { n as createEvaluationsHandler, r as InvalidSignatureError, t as applyApprovalResume } from "./evaluations-tz6D9A2G.js";
9
- import { t as instanceOptions } from "./instance-options-Dhhcnm3y.js";
10
- import { n as tenantScope, t as actorFrom } from "./adapter-context-mlWsVGGg.js";
11
- //#region src/server/create.ts
12
- async function resolveActor(request, options) {
13
- return (options.webBotAuth === void 0 ? void 0 : await options.webBotAuth(request)) ?? actorFrom(options.actor, request);
14
- }
15
- const NO_TENANT = "\0";
16
- function routeScopes(value) {
17
- if (value === void 0) return;
18
- const scopes = Array.isArray(value) ? value : [];
19
- const names = scopes.filter((scope) => typeof scope === "string" && scope !== "");
20
- if (names.length === 0 || names.length !== scopes.length) throw new TypeError("PermDock: oauthScopes must be a non-empty list of scope names");
21
- return names;
22
- }
23
- const NOT_DELEGATED = {
24
- outcome: "denied",
25
- denials: [{
26
- role: null,
27
- reason: "not-delegated"
28
- }],
29
- alternatives: []
30
- };
31
- /** The `403` `insufficient_scope` for a token that holds none of a route's OAuth scopes. */
32
- function scopeProblem(permission, subject, credentials, scope) {
33
- return permission === null ? decisionResponse(problemDetails(compact({
34
- decision: NOT_DELEGATED,
35
- detail: `the token holds none of the OAuth scopes this route needs, such as ${String(scope)}`,
36
- scope
37
- })), NOT_DELEGATED, compact({
38
- credentials,
39
- scope
40
- })) : problemFromDecision(NOT_DELEGATED, permission, subject, compact({
41
- credentials,
42
- scope
43
- }));
44
- }
45
- function createPermDock(policy, options) {
46
- return createServerKernel(policy, options);
47
- }
48
- function problemFor(decision, init, approval) {
49
- if (init?.permission !== void 0) return problemFromDecision(decision, init.permission, void 0, compact({
50
- instance: init.instance,
51
- approval
52
- }));
53
- if (decision.outcome === "granted") return new Response(null, { status: 204 });
54
- return decisionResponse(problemDetails(compact({
55
- decision,
56
- detail: decision.outcome,
57
- instance: init?.instance
58
- })), decision);
59
- }
60
- /**
61
- * The kernel behind every HTTP adapter. The subject and actor are resolved
62
- * once per `Request`; one instance is cached per `(Request, tenant)`, so a
63
- * global middleware and a later tenant-scoped `protect` never share a tenant.
64
- */
65
- function createServerKernel(policy, options) {
66
- const adapter = options.adapter ?? "server";
67
- const subjects = /* @__PURE__ */ new WeakMap();
68
- const instances = /* @__PURE__ */ new WeakMap();
69
- const freshSubject = async (request) => {
70
- const actor = await resolveActor(request, options);
71
- try {
72
- return {
73
- user: await options.subject(request),
74
- actor
75
- };
76
- } catch {
77
- return {
78
- user: null,
79
- actor
80
- };
81
- }
82
- };
83
- const resolveSubject = (request) => {
84
- const hit = subjects.get(request);
85
- if (hit !== void 0) return hit;
86
- const resolved = freshSubject(request);
87
- subjects.set(request, resolved);
88
- return resolved;
89
- };
90
- const instanceFor = async ({ user, actor }, tenant) => {
91
- const coreOptions = compact({
92
- tenant,
93
- ...instanceOptions(options),
94
- actor
95
- });
96
- const permdock = await createPermDock$1(policy, user, coreOptions);
97
- const remote = options.pdp === void 0 ? void 0 : await options.pdp(policy, user, coreOptions);
98
- return {
99
- permdock: options.wrap === void 0 ? permdock : options.wrap(permdock),
100
- remote
101
- };
102
- };
103
- const build = async (request, scope) => {
104
- const { tenant } = scope ?? await tenantScope(options.tenant, request);
105
- let byTenant = instances.get(request);
106
- if (byTenant === void 0) {
107
- byTenant = /* @__PURE__ */ new Map();
108
- instances.set(request, byTenant);
109
- }
110
- const key = tenant ?? NO_TENANT;
111
- const hit = byTenant.get(key);
112
- if (hit !== void 0) return hit;
113
- const built = (async () => instanceFor(await resolveSubject(request), tenant))();
114
- byTenant.set(key, built);
115
- return built;
116
- };
117
- const connection = async (request, connectionOptions = {}, scope) => {
118
- const { tenant } = scope ?? await tenantScope(options.tenant, request);
119
- const { openConnection } = await import("./connection-CU8MQxRi.js");
120
- return openConnection({
121
- open: async () => (await build(request, { tenant })).permdock,
122
- rebuild: async () => (await instanceFor(await freshSubject(request), tenant)).permdock,
123
- tenant,
124
- ...options.revocations === void 0 ? {} : { feed: options.revocations },
125
- adapter,
126
- options: connectionOptions
127
- });
128
- };
129
- const permdock = async (request, scope) => (await build(request, scope)).permdock;
130
- const getSnapshot = async (request, query = {}) => {
131
- return (await permdock(request, query.tenant === void 0 ? void 0 : { tenant: query.tenant })).snapshot(compact({
132
- include: query.include,
133
- tenants: query.tenants
134
- }));
135
- };
136
- const protectRoute = (permission, loadData, protectOptions = {}) => {
137
- if (permission === null && routeScopes(protectOptions.oauthScopes) === void 0 && options.operations === void 0) throw new TypeError("PermDock: protect(null) needs oauthScopes, in its options or an operations entry");
138
- return async (request, scope) => {
139
- let instance;
140
- let remote;
141
- try {
142
- ({permdock: instance, remote} = await build(request, scope));
143
- } catch (error) {
144
- if (error instanceof InvalidSignatureError) return {
145
- ok: false,
146
- response: error.response
147
- };
148
- throw error;
149
- }
150
- return guardOn(instance, remote, request, permission, loadData === void 0 ? void 0 : () => loadData(request), protectOptions);
151
- };
152
- };
153
- const guardOn = async (instance, remote, request, permission, load, protectOptions) => {
154
- const declared = routeScopes(protectOptions.oauthScopes ?? (request === void 0 ? void 0 : options.operations?.oauthScopesForRequest(request.method, new URL(request.url).pathname)));
155
- const credentials = request === void 0 ? false : hasCredentials(request);
156
- if (permission === null) {
157
- if (declared === void 0) throw new TypeError(request === void 0 ? "PermDock: protect(null) needs oauthScopes" : `PermDock: protect(null) needs oauthScopes, and no operation declares them for ${request.method} ${new URL(request.url).pathname}`);
158
- if (instance.subject.principal === null) return {
159
- ok: false,
160
- response: unauthenticatedProblem(credentials)
161
- };
162
- }
163
- const held = instance.subject.delegation?.scopes;
164
- if (declared !== void 0 && held !== void 0 && !declared.some((granted) => held.includes(granted))) return {
165
- ok: false,
166
- response: scopeProblem(permission, instance.subject, credentials, declared[0])
167
- };
168
- let data;
169
- if (load !== void 0) {
170
- const loaded = await load();
171
- if (loaded === null || loaded === void 0) return {
172
- ok: false,
173
- response: notFoundProblem()
174
- };
175
- data = loaded;
176
- }
177
- if (permission === null) return {
178
- ok: true,
179
- permdock: instance,
180
- data
181
- };
182
- const decideOptions = compact({
183
- source: "adapter",
184
- adapter,
185
- ...protectOptions.trusted === true ? { trusted: true } : {
186
- trusted: false,
187
- boundary: "http-body"
188
- }
189
- });
190
- const raw = remote === void 0 ? instance.decide(permission, data, decideOptions) : await remote.decide(permission, data, decideOptions).catch(() => ({
191
- outcome: "denied",
192
- denials: [{
193
- role: null,
194
- reason: "pdp-unavailable"
195
- }],
196
- alternatives: []
197
- }));
198
- const decision = await applyApprovalResume(raw, permission, instance, options.store, request, resourceRef(permission, data), adapter);
199
- if (decision.outcome === "granted") return {
200
- ok: true,
201
- permdock: instance,
202
- decision,
203
- data
204
- };
205
- return {
206
- ok: false,
207
- response: problemFromDecision(decision, permission, instance.subject, compact({
208
- approval: options.approval,
209
- credentials,
210
- scope: declared?.[0] ?? challengeScope(policy, permission),
211
- disclosure: data === void 0 ? void 0 : policy.resources.get(permission.resource)?.disclosure
212
- }))
213
- };
214
- };
215
- const protect = protectRoute;
216
- const openapi = {
217
- security: (permission) => ({
218
- security: [{ oauth2: [permission.scope] }],
219
- "x-permdock-permissions": [permission.key]
220
- }),
221
- securitySchemes: () => {
222
- const scopes = {};
223
- for (const leaf of listPermissions(policy.permissions)) scopes[leaf.scope] = leaf.meta.title ?? leaf.key;
224
- return { oauth2: {
225
- type: "oauth2",
226
- flows: {},
227
- scopes
228
- } };
229
- }
230
- };
231
- const permdockHandler = (scope) => createEvaluationsHandler(compact({
232
- policy,
233
- resolve: scope === void 0 ? permdock : async (request) => permdock(request, await scope(request)),
234
- store: options.store,
235
- adapter
236
- }));
237
- return {
238
- permdock,
239
- getSnapshot,
240
- protect,
241
- protectOn: (instance, permission, load, protectOptions = {}, request) => guardOn(instance, void 0, request, permission, load, protectOptions),
242
- connection,
243
- shareSubject: (from, to) => {
244
- const resolved = subjects.get(from);
245
- if (resolved !== void 0 && !subjects.has(to)) subjects.set(to, resolved);
246
- },
247
- problem: (decision, init) => problemFor(decision, init, options.approval),
248
- openapi,
249
- permdockHandler
250
- };
251
- }
252
- //#endregion
253
- export { createServerKernel as n, createPermDock as t };
@@ -1,103 +0,0 @@
1
- import { i as findPermission, o as formerScopes, t as annotationsFor } from "./permissions-DVoF6dMt.js";
2
- import { d as matchGrantee, s as flattenGrantee } from "./grantee-Cv5Sogfv.js";
3
- import { t as isActive } from "./validity-uOp8UpYn.js";
4
- //#region src/core/delegation.ts
5
- /** The permission's scope and any scope it was renamed from: tokens issued before a rename keep working. */
6
- function scopeNames(permission) {
7
- return [permission.scope, ...formerScopes(permission)];
8
- }
9
- /**
10
- * Whether a delegated caller may use a permission its principal holds, through
11
- * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
12
- * `undefined` means covered; otherwise the denial reason `decide` would add.
13
- */
14
- function coveredByDelegation(permission, delegation, resourceId, hasActor = false) {
15
- const unscoped = hasActor ? "no-delegation" : void 0;
16
- if (delegation === void 0) return unscoped;
17
- const hasScopes = delegation.scopes !== void 0;
18
- const hasDetails = delegation.authorizationDetails !== void 0;
19
- const hasAccess = delegation.access !== void 0;
20
- if (!hasScopes && !hasDetails && !hasAccess) return unscoped;
21
- const emptyScopes = hasScopes && (delegation.scopes?.length ?? 0) === 0;
22
- const emptyAccess = hasAccess && (delegation.access?.length ?? 0) === 0;
23
- if (emptyScopes && !hasDetails && !hasAccess) return "no-delegation";
24
- if (emptyAccess && !hasScopes && !hasDetails) return "no-delegation";
25
- if (emptyScopes && emptyAccess && !hasDetails) return "no-delegation";
26
- const scopes = scopeNames(permission);
27
- const scopeOk = delegation.scopes?.some((scope) => scopes.includes(scope)) ?? false;
28
- const detailOk = delegation.authorizationDetails?.some((detail) => {
29
- if (detail.type !== permission.resource) return false;
30
- const identifier = detail["identifier"];
31
- if (identifier !== void 0 && (typeof identifier !== "string" || identifier !== resourceId)) return false;
32
- const actions = detail.actions;
33
- if (actions === void 0) return true;
34
- return Array.isArray(actions) && actions.includes(permission.action);
35
- }) ?? false;
36
- const accessOk = accessCovers(permission, delegation.access, resourceId);
37
- if (scopeOk || detailOk || accessOk) return;
38
- return "not-delegated";
39
- }
40
- function coversRequirements(tree, requires, delegation, resourceId, hasActor = false) {
41
- return (requires ?? []).every((key) => {
42
- const leaf = findPermission(tree, key);
43
- return leaf !== void 0 && coveredByDelegation(leaf, delegation, resourceId, hasActor) === void 0;
44
- });
45
- }
46
- function requiresStandIn(grant) {
47
- return (grant.requires ?? []).length > 0 && annotationsFor(grant.permission).readOnlyHint && !flattenGrantee(grant.to).some((item) => item.kind === "role");
48
- }
49
- function accessCovers(permission, access, resourceId) {
50
- if (access === void 0) return false;
51
- return access.some((entry) => {
52
- if (typeof entry === "string") return scopeNames(permission).includes(entry);
53
- if (entry === null || typeof entry !== "object") return false;
54
- const type = entry["type"];
55
- if (typeof type !== "string" || !typeMatches(type, permission.resource)) return false;
56
- const actions = entry["actions"];
57
- if (actions !== void 0 && (!Array.isArray(actions) || !actions.includes(permission.action))) return false;
58
- const identifier = entry["identifier"];
59
- if (identifier !== void 0 && (typeof identifier !== "string" || identifier !== resourceId)) return false;
60
- return true;
61
- });
62
- }
63
- function typeMatches(type, resource) {
64
- if (type === resource) return true;
65
- return type.endsWith(`/${resource}`);
66
- }
67
- /**
68
- * Whether the subject's principal is a `from` of the delegation: every item
69
- * matches, with roles checked against the roles the principal holds here
70
- * (`matchGrantee` leaves role holding to the caller) and nothing that needs a
71
- * row.
72
- */
73
- function handsOver(delegation, subject, heldRoles, now) {
74
- const items = flattenGrantee(delegation.from);
75
- if (items.length === 0 || subject.principal === null) return false;
76
- return items.every((item) => {
77
- if (item.kind === "role") return heldRoles.has(item.role);
78
- if (item.kind === "relation") return false;
79
- const match = matchGrantee(item, subject, now, void 0);
80
- return match.matched && match.where === void 0;
81
- });
82
- }
83
- /**
84
- * The permission keys the policy's delegations let `subject.actor` use for
85
- * `subject.principal` right now: the union over every active delegation whose
86
- * `to` matches the actor and whose `from` the principal holds. `undefined`
87
- * when none applies, so the call falls back to the token delegation alone.
88
- * An actor with `readOnly: true` gets only each delegation's read-only keys.
89
- * Attenuation only: a key here still needs a matching allow and no deny.
90
- */
91
- function delegatedPermissions(delegations, subject, heldRoles, now) {
92
- const actor = subject.actor;
93
- if (actor === void 0 || delegations === void 0) return;
94
- let keys;
95
- for (const delegation of delegations) {
96
- if (delegation.to.kind !== actor.kind || delegation.to.id !== void 0 && delegation.to.id !== actor.id || delegation.to.client !== void 0 && delegation.to.client !== actor.client || !isActive(delegation.validity, now) || !handsOver(delegation, subject, heldRoles, now)) continue;
97
- keys ??= /* @__PURE__ */ new Set();
98
- for (const key of actor.readOnly === true ? delegation.readOnly : delegation.permissions) keys.add(key);
99
- }
100
- return keys;
101
- }
102
- //#endregion
103
- export { requiresStandIn as i, coversRequirements as n, delegatedPermissions as r, coveredByDelegation as t };
@@ -1,48 +0,0 @@
1
- import { i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-BeaGNj_o.js";
2
- import { defineCommand } from "citty";
3
- //#region src/cli/commands/diff.ts
4
- function diff(ctx) {
5
- return defineCommand({
6
- meta: {
7
- name: "diff",
8
- description: COMMAND_DESCRIPTIONS.diff
9
- },
10
- args: {
11
- ...globalArgs,
12
- before: {
13
- type: "positional",
14
- required: false,
15
- description: "A permissions.catalog.json or a module exporting policy"
16
- },
17
- after: {
18
- type: "positional",
19
- required: false,
20
- description: "The same, for the new side"
21
- },
22
- impact: {
23
- type: "boolean",
24
- description: "Run the fixtures through both sides and report changed outcomes"
25
- },
26
- fixtures: {
27
- type: "string",
28
- description: "Fixtures file for --impact",
29
- valueHint: "file"
30
- }
31
- },
32
- async run({ args: parsed }) {
33
- const result = await (await import("./diff-2VaeChzX.js")).runDiff({
34
- cwd: ctx.cwd,
35
- config: ctx.config,
36
- sources: parsed._,
37
- impact: parsed.impact === true,
38
- fixtures: stringArg(parsed.fixtures),
39
- json: ctx.json,
40
- now: ctx.now,
41
- io: ctx.io
42
- });
43
- ctx.report(result);
44
- }
45
- });
46
- }
47
- //#endregion
48
- export { diff };
@@ -1,53 +0,0 @@
1
- import { a as listArg, i as globalArgs, t as COMMAND_DESCRIPTIONS } from "./commands-BeaGNj_o.js";
2
- import { n as ask, t as CANCELLED } from "./prompt-CXYhLfsS.js";
3
- import { defineCommand } from "citty";
4
- //#region src/cli/commands/doctor.ts
5
- function doctor(ctx) {
6
- return defineCommand({
7
- meta: {
8
- name: "doctor",
9
- description: COMMAND_DESCRIPTIONS.doctor
10
- },
11
- args: {
12
- ...globalArgs,
13
- only: {
14
- type: "string",
15
- description: "Check codes or groups to run, repeatable",
16
- valueHint: "codes"
17
- },
18
- fix: {
19
- type: "boolean",
20
- description: "Apply safe fixes: install skills, regenerate the catalog"
21
- },
22
- strict: {
23
- type: "boolean",
24
- description: "Exit 1 on warnings too"
25
- }
26
- },
27
- async run({ args: parsed, rawArgs }) {
28
- let fix = parsed.fix === true;
29
- if (fix && ctx.interactive) {
30
- const answer = await ask(`Install the Agent Skills and regenerate the catalog in ${ctx.cwd}?`);
31
- if (answer === void 0) {
32
- ctx.report(CANCELLED);
33
- return;
34
- }
35
- fix = answer;
36
- }
37
- const result = await (await import("./doctor-DvH0IQff.js")).runDoctor({
38
- cwd: ctx.cwd,
39
- config: ctx.config,
40
- only: listArg(rawArgs, "only"),
41
- json: ctx.json,
42
- fix,
43
- strict: parsed.strict === true,
44
- color: ctx.color,
45
- now: ctx.now,
46
- io: ctx.io
47
- });
48
- ctx.report(result);
49
- }
50
- });
51
- }
52
- //#endregion
53
- export { doctor };