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
@@ -0,0 +1,38 @@
1
+ import { ir as Subject } from "./policy-types-DzwivBgR.js";
2
+ import { m as ApprovalStore } from "./types-CCpc2Dcv.js";
3
+ import { t as InstanceOptions } from "./instance-options-Omfd793B.js";
4
+ import { t as RequestContext } from "./request-context-C2_1lchh.js";
5
+ import { n as PermDockWrap } from "./wrap-Bd1Tejur.js";
6
+ import { o as OtelWrap } from "./types-BqAKcRNW.js";
7
+ import { r as PdpFactory } from "./types-ClZaWzfb.js";
8
+ import { S as TenantOption, _ as WebBotAuthVerifier, t as DeniedResponse } from "./server-types-BLd4MnBX.js";
9
+ //#region src/server/bind.d.ts
10
+ /** The options of every framework adapter; `TContext` is what its callbacks receive. */
11
+ type ServerAdapterOptions<TContext, TUser = unknown> = InstanceOptions & ServerAdapterServices & {
12
+ /** The user, or a full `Subject` (core then skips `policy.subject`). */
13
+ readonly subject: (context: TContext) => TUser | Subject | Promise<TUser | Subject>;
14
+ /** The agent or service acting for the subject; anything but an `Actor` is ignored. */
15
+ readonly actor?: (context: TContext) => unknown;
16
+ readonly tenant?: TenantOption<TContext>;
17
+ /**
18
+ * Request values merged into `subject.context`, under `policy.context`.
19
+ * Only values the server derived belong here, never client input.
20
+ */
21
+ readonly context?: (context: TContext) => RequestContext | undefined | Promise<RequestContext | undefined>;
22
+ };
23
+ /** The services an adapter hands to its kernel unchanged. */
24
+ type ServerAdapterServices = {
25
+ readonly store?: ApprovalStore;
26
+ /** `getPermDock` from `permdock/pdp`; `protect` then decides delegated permissions remotely. */
27
+ readonly pdp?: PdpFactory;
28
+ /** `(permdock) => withOtel(permdock, options)` from `permdock/otel`. */
29
+ readonly otel?: OtelWrap;
30
+ /** `webBotAuthVerifier(options)`; a verified bot becomes the actor. */
31
+ readonly webBotAuth?: WebBotAuthVerifier;
32
+ /** Wraps each instance after `otel`; build it with `wrapPermDock` to cover derived instances. */
33
+ readonly wrap?: PermDockWrap;
34
+ /** Replaces the response of a refused guard; it can never turn a refusal into a grant. */
35
+ readonly deniedResponse?: DeniedResponse;
36
+ };
37
+ //#endregion
38
+ export { ServerAdapterServices as n, ServerAdapterOptions as t };
@@ -1,12 +1,14 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { o as invalidSignatureResponse } from "./evaluations-tz6D9A2G.js";
3
- import { t as instanceOptions } from "./instance-options-Dhhcnm3y.js";
4
- import { n as tenantScope } from "./adapter-context-mlWsVGGg.js";
5
- import { n as createServerKernel } from "./create-CMwIl-w2.js";
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { c as withApp } from "./permdock-B9JxkBwC.js";
3
+ import { t as composeWraps } from "./wrap-gX61EtpB.js";
4
+ import { r as instanceOptions } from "./build-instance-BMnAudHn.js";
5
+ import { p as invalidSignatureResponse } from "./evaluations-DZ2CbV5k.js";
6
+ import { n as tenantScope } from "./adapter-context-CRhqyzCk.js";
7
+ import { t as createPermDock } from "./create-DnrmLnLW.js";
6
8
  //#region src/server/bind.ts
7
9
  /** The server kernel with the subject and actor callbacks reading the context `contextOf` maps a `Request` to. */
8
10
  function adapterKernel(policy, options, adapter, contextOf) {
9
- return createServerKernel(policy, compact({
11
+ return createPermDock(policy, compact({
10
12
  subject: (request) => {
11
13
  const context = contextOf(request);
12
14
  return context === void 0 ? null : options.subject(context);
@@ -15,20 +17,26 @@ function adapterKernel(policy, options, adapter, contextOf) {
15
17
  const context = contextOf(request);
16
18
  return context === void 0 ? void 0 : options.actor?.(context);
17
19
  },
20
+ context: options.context === void 0 ? void 0 : (request) => {
21
+ const context = contextOf(request);
22
+ return context === void 0 ? void 0 : options.context?.(context);
23
+ },
18
24
  ...instanceOptions(options),
19
25
  store: options.store,
20
26
  pdp: options.pdp,
21
27
  webBotAuth: options.webBotAuth,
22
28
  revocations: options.revocations,
23
29
  adapter,
24
- wrap: options.otel
30
+ wrap: composeWraps(options.otel, options.wrap),
31
+ deniedResponse: options.deniedResponse
25
32
  }));
26
33
  }
27
34
  /**
28
35
  * The kernel of a framework adapter, with the subject, actor and tenant
29
36
  * callbacks reading the framework context each `Request` was built from.
30
37
  */
31
- function bindKernel(policy, options, adapter, toRequest) {
38
+ function bindKernel(policy, given, adapter, toRequest) {
39
+ const options = withApp(policy, given);
32
40
  const contexts = /* @__PURE__ */ new WeakMap();
33
41
  const bound = /* @__PURE__ */ new WeakMap();
34
42
  const kernel = adapterKernel(policy, options, adapter, (request) => contexts.get(request));
@@ -52,14 +60,18 @@ function bindKernel(policy, options, adapter, toRequest) {
52
60
  const context = contexts.get(request);
53
61
  return context === void 0 ? Promise.resolve({ tenant: void 0 }) : scopeOf(context);
54
62
  };
55
- const attach = (context) => attached(async () => kernel.permdock(bind(context), await scopeOf(context)));
63
+ const getPermDock = async (context) => kernel.getPermDock(bind(context), await scopeOf(context));
64
+ const attach = (context) => attached(() => getPermDock(context));
65
+ const guard = async (permission, data, context, protectOptions) => kernel.protect(permission, data === void 0 ? void 0 : () => data(context), protectOptions)(bind(context), await scopeOf(context));
56
66
  return {
57
67
  kernel,
58
68
  bind,
59
69
  rebind,
60
70
  scopeOf,
61
71
  handlerScope,
62
- attach
72
+ getPermDock,
73
+ attach,
74
+ guard
63
75
  };
64
76
  }
65
77
  /** The instance `build` resolves; an invalid Web Bot Auth signature is its `401` response. */
@@ -0,0 +1,10 @@
1
+ import { o as statusProblem } from "./problem-details-cn5X30gZ.js";
2
+ import { t as MAX_BODY_BYTES } from "./body-text-QcXok_SI.js";
3
+ import { c as problemResponse } from "./problem-CTviyH5L.js";
4
+ //#region src/server/body.ts
5
+ /** The 413 Problem Details for a body over `maxBytes`. */
6
+ function bodyTooLarge(maxBytes = MAX_BODY_BYTES) {
7
+ return problemResponse(statusProblem(413, `request body exceeds ${String(maxBytes)} bytes`));
8
+ }
9
+ //#endregion
10
+ export { bodyTooLarge as t };
@@ -0,0 +1,52 @@
1
+ //#region src/server/body-text.ts
2
+ /** The largest request body PermDock reads when a handler sets no smaller cap: 1 MiB. */
3
+ const MAX_BODY_BYTES = 1048576;
4
+ /**
5
+ * The request or response body as UTF-8 text, read until `maxBytes` and no further. A
6
+ * `Content-Length` above the cap is refused before the body is touched; a body
7
+ * that runs past the cap whatever its header says is cancelled mid-stream.
8
+ */
9
+ async function readBodyText(request, maxBytes = MAX_BODY_BYTES) {
10
+ const declared = request.headers.get("content-length");
11
+ if (declared !== null && Number(declared) > maxBytes) return {
12
+ ok: false,
13
+ cause: "too-large"
14
+ };
15
+ if (request.bodyUsed) return {
16
+ ok: false,
17
+ cause: "unreadable"
18
+ };
19
+ if (request.body === null) return {
20
+ ok: true,
21
+ text: ""
22
+ };
23
+ const decoder = new TextDecoder();
24
+ let size = 0;
25
+ let text = "";
26
+ try {
27
+ const reader = request.body.getReader();
28
+ for (;;) {
29
+ const chunk = await reader.read();
30
+ if (chunk.done) return {
31
+ ok: true,
32
+ text: text + decoder.decode()
33
+ };
34
+ size += chunk.value.byteLength;
35
+ if (size > maxBytes) {
36
+ await reader.cancel();
37
+ return {
38
+ ok: false,
39
+ cause: "too-large"
40
+ };
41
+ }
42
+ text += decoder.decode(chunk.value, { stream: true });
43
+ }
44
+ } catch {
45
+ return {
46
+ ok: false,
47
+ cause: "unreadable"
48
+ };
49
+ }
50
+ }
51
+ //#endregion
52
+ export { readBodyText as n, MAX_BODY_BYTES as t };
@@ -0,0 +1,52 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { t as getPermDock } from "./permdock-B9JxkBwC.js";
3
+ //#region src/core/instance-options.ts
4
+ const INSTANCE_KEYS = {
5
+ memberships: true,
6
+ relations: true,
7
+ entitlements: true,
8
+ customRoles: true,
9
+ policies: true,
10
+ approvalPolicies: true,
11
+ sink: true,
12
+ limits: true,
13
+ principals: true
14
+ };
15
+ /** The `InstanceOptions` set on `options`, without the adapter's own keys. */
16
+ function instanceOptions(options) {
17
+ const picked = {};
18
+ for (const key of Object.keys(INSTANCE_KEYS)) {
19
+ const name = key;
20
+ if (options[name] !== void 0) picked[name] = options[name];
21
+ }
22
+ return picked;
23
+ }
24
+ //#endregion
25
+ //#region src/core/build-instance.ts
26
+ /**
27
+ * `resolve()`, or `null` when it throws: a subject or delegation that cannot
28
+ * be resolved is absent. `rethrow` sees the error first, so a framework's
29
+ * control-flow throws (Next.js `redirect`, `notFound`) pass through.
30
+ */
31
+ async function resolveOrNull(resolve, rethrow) {
32
+ try {
33
+ return await resolve();
34
+ } catch (error) {
35
+ rethrow?.(error);
36
+ return null;
37
+ }
38
+ }
39
+ /** The one path every server adapter creates a request's instance through. */
40
+ async function buildInstance(input) {
41
+ const options = compact({
42
+ ...instanceOptions(input.sources),
43
+ ...input.scope
44
+ });
45
+ const created = await getPermDock(input.policy, input.user, options);
46
+ return {
47
+ permdock: input.wrap === void 0 ? created : input.wrap(created),
48
+ options
49
+ };
50
+ }
51
+ //#endregion
52
+ export { resolveOrNull as n, instanceOptions as r, buildInstance as t };
@@ -1,11 +1,11 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
1
2
  //#region src/core/canonical-json.ts
2
- function isRecord(value) {
3
- return value !== null && typeof value === "object" && !Array.isArray(value);
4
- }
5
3
  /**
6
- * JSON with sorted keys and `undefined` members dropped, so equal values hash
7
- * equally. Dates become ISO strings, bigints `"<n>n"`, and a repeated object
8
- * on the current path `"[Circular]"`, so any validated row serialises.
4
+ * RFC 8785 (JCS) output for I-JSON input: keys sorted by UTF-16 code units,
5
+ * ECMAScript number and string serialisation, no whitespace. `undefined`
6
+ * members are dropped. Outside I-JSON, Dates become ISO strings, bigints
7
+ * `"<n>n"`, and a repeated object on the current path `"[Circular]"`, so any
8
+ * validated row serialises.
9
9
  */
10
10
  function canonicalJson(value, path = /* @__PURE__ */ new Set()) {
11
11
  if (typeof value === "bigint") return JSON.stringify(`${value}n`);
@@ -1,5 +1,5 @@
1
- import { Nr as Principal, Pr as Subject, Pt as TokenSigner } from "./policy-IB6yxpC3.js";
2
- import { f as Permission, m as PermissionTree } from "./permissions-DttnqqxC.js";
1
+ import { Rt as Instant, rr as Principal, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
+ import { E as PermissionTree, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
3
  //#region src/core/capability.d.ts
4
4
  /**
5
5
  * Who may redeem a capability: anyone holding it, any signed-in principal,
@@ -12,15 +12,18 @@ type CapabilityRedeemer = "anyone" | "signed-in" | {
12
12
  readonly scope: string;
13
13
  readonly id: string;
14
14
  };
15
+ /** RFC 7800 confirmation: the SHA-256 JWK thumbprint (RFC 7638) of the key that must redeem it. */
16
+ type CapabilityConfirmation = {
17
+ readonly jkt: string;
18
+ };
15
19
  /**
16
- * Capability v1: the `capability` claim of a `permdock-capability+jwt`. It
17
- * holds `roles` on one resource instance (`on`, the `Membership.on` shape),
18
- * optionally narrowed to `permissions` (keys). `id` is the link id: the
19
- * token's `sub` and the handle an application revokes.
20
+ * Capability v1: the `capability` claim of a `vnd.permdock.capability+jwt`.
21
+ * It holds `roles` on one resource instance (`on`, the `Membership.on`
22
+ * shape), optionally narrowed to `permissions` (keys). The link id is the
23
+ * token's `sub` and its expiry the token's `exp`; neither repeats here.
20
24
  */
21
- type Capability = {
25
+ type CapabilityClaim = {
22
26
  readonly v: 1;
23
- readonly id: string;
24
27
  /** `key` is reserved for user-bound credentials and resolves to no subject. */
25
28
  readonly holder: "link" | "key";
26
29
  readonly on: {
@@ -32,10 +35,18 @@ type Capability = {
32
35
  readonly redeemer?: CapabilityRedeemer;
33
36
  /** One request per token: the resolver claims the token's `jti` in a `ReplayStore`. */
34
37
  readonly once?: true;
35
- /** Seconds since the epoch; also the token's `exp` and the membership's `expiresAt`. */
38
+ };
39
+ /**
40
+ * A verified capability: the claim plus `id` (the token's `sub`, the handle
41
+ * an application revokes), `expiresAt` (its `exp`, Unix seconds, also the
42
+ * membership's `expiresAt`) and `cnf` when the token binds a redeemer key.
43
+ */
44
+ type Capability = CapabilityClaim & {
45
+ readonly id: string;
36
46
  readonly expiresAt: number;
47
+ readonly cnf?: CapabilityConfirmation;
37
48
  };
38
- type LinkPrincipal = Principal & {
49
+ type CapabilityPrincipal = Principal & {
39
50
  readonly kind: "link";
40
51
  readonly capability: Capability;
41
52
  };
@@ -49,7 +60,10 @@ type CapabilityInput = {
49
60
  readonly permissions?: readonly Permission[];
50
61
  readonly redeemer?: CapabilityRedeemer;
51
62
  readonly once?: boolean;
63
+ /** `exp`, Unix seconds. */
52
64
  readonly expiresAt: number;
65
+ /** Binds the link to the key with this RFC 7638 thumbprint; redeeming it then needs a DPoP proof from that key. */
66
+ readonly cnf?: CapabilityConfirmation;
53
67
  };
54
68
  /**
55
69
  * What one scope instance (a tenant, a customer) allows for links on its
@@ -64,8 +78,10 @@ type LinkPolicy = {
64
78
  readonly once?: boolean;
65
79
  };
66
80
  type LinkPolicyViolation = "lifetime" | "redeemer" | "once";
67
- type SignCapabilityOptions = {
81
+ type CapabilityOptions = {
68
82
  readonly audience?: string | readonly string[];
83
+ /** `iat`; the clock when absent. */
84
+ readonly issuedAt?: Instant;
69
85
  /** Refuse to sign a link these policies would refuse at resolution. */
70
86
  readonly linkPolicy?: LinkPolicy | readonly LinkPolicy[];
71
87
  };
@@ -76,24 +92,27 @@ type SignCapabilityOptions = {
76
92
  */
77
93
  declare function linkPolicyViolation(capability: Capability, policy: LinkPolicy | readonly LinkPolicy[], issuedAt: number | undefined): LinkPolicyViolation | undefined;
78
94
  /**
79
- * Validates an untrusted `capability` claim and returns a frozen copy with
80
- * only the v1 fields, or `undefined`. Unknown fields are dropped; a wrong
81
- * type in a known field rejects the whole claim.
95
+ * Validates a verified capability (a claim plus `id`, `expiresAt` and
96
+ * an optional `cnf`) and returns a frozen copy, or `undefined`.
82
97
  */
83
98
  declare function parseCapability(input: unknown): Capability | undefined;
84
99
  /**
85
- * Signs a capability as a `permdock-capability+jwt`: `sub` is the link id,
86
- * `exp` is `expiresAt`, and the signer sets `iss`, `iat` and a fresh `jti`.
100
+ * The capability verified claims carry: the `capability` claim, `sub` as
101
+ * `id`, `exp` as `expiresAt` and the RFC 7800 `cnf`. `undefined` when any
102
+ * of them is missing or malformed.
103
+ */
104
+ declare function capabilityFromClaims(claims: Readonly<Record<string, unknown>>): Capability | undefined;
105
+ /**
106
+ * Validates an untrusted `capability` claim and returns a frozen copy with
107
+ * only the v1 fields, or `undefined`. Unknown fields are dropped; a wrong
108
+ * type in a known field rejects the whole claim.
87
109
  */
88
- declare function signCapability(input: CapabilityInput, signer: TokenSigner, options?: SignCapabilityOptions): Promise<string>;
110
+ declare function parseCapabilityClaim(input: unknown): CapabilityClaim | undefined;
89
111
  /**
90
- * The subject a verified capability acts as: a `link` principal holding
91
- * `roles` on `on` and nothing else, with `delegation.scopes` narrowing it to
92
- * `permissions` when the capability lists them. A `key` holder resolves to
93
- * the anonymous subject until user-bound credentials ship.
112
+ * Signs a capability as a `vnd.permdock.capability+jwt`: `sub` is the link
113
+ * id, `exp` is `expiresAt`, `cnf` binds the redeemer's key, and the signer
114
+ * sets `iss`, `aud`, `iat` (`issuedAt`, else now) and a fresh `jti`.
94
115
  */
95
- declare function capabilitySubject(capability: Capability, options?: {
96
- readonly issuer?: string;
97
- }): Subject<LinkPrincipal> | Subject;
116
+ declare function signCapability(input: CapabilityInput, signer: TokenSigner, options?: CapabilityOptions): Promise<string>;
98
117
  //#endregion
99
- export { LinkPolicyViolation as a, capabilitySubject as c, signCapability as d, LinkPolicy as i, linkPolicyViolation as l, CapabilityInput as n, LinkPrincipal as o, CapabilityRedeemer as r, SignCapabilityOptions as s, Capability as t, parseCapability as u };
118
+ export { CapabilityOptions as a, LinkPolicy as c, linkPolicyViolation as d, parseCapability as f, CapabilityInput as i, LinkPolicyViolation as l, signCapability as m, CapabilityClaim as n, CapabilityPrincipal as o, parseCapabilityClaim as p, CapabilityConfirmation as r, CapabilityRedeemer as s, Capability as t, capabilityFromClaims as u };
@@ -1,9 +1,10 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { T as isForbiddenKey, _ as listPermissions } from "./permissions-DVoF6dMt.js";
4
- import { t as expiredAt } from "./expiry-BoBJ8Tvc.js";
5
- import { n as sameId } from "./ids-DC4V4CFu.js";
6
- import { t as anonymousSubject } from "./subject-C6dLxqHU.js";
3
+ import { a as ownRecord } from "./paths-DXSHAMIa.js";
4
+ import { a as isId, o as sameId, r as idList, t as expiredAt } from "./expiry-D4_YKRKD.js";
5
+ import { c as listPermissions } from "./permission-registry-Br4jSNVi.js";
6
+ import { o as epochSeconds, p as nowSeconds } from "./time-DkWjdL98.js";
7
+ import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
7
8
  //#region src/core/capability.ts
8
9
  function redeemerKind(redeemer) {
9
10
  if (redeemer === void 0 || typeof redeemer === "string") return redeemer ?? "anyone";
@@ -23,22 +24,6 @@ function linkPolicyViolation(capability, policy, issuedAt) {
23
24
  if (item.once === true && capability.once !== true) return "once";
24
25
  }
25
26
  }
26
- const MAX_ID = 256;
27
- const MAX_ENTRIES = 64;
28
- /** A copy holding only own enumerable properties, so a prototype never supplies a field. */
29
- function ownRecord(value) {
30
- if (value === null || typeof value !== "object" || Array.isArray(value)) return;
31
- const record = {};
32
- for (const [key, item] of Object.entries(value)) if (!isForbiddenKey(key)) record[key] = item;
33
- return record;
34
- }
35
- function isId(value) {
36
- return typeof value === "string" && value.length > 0 && value.length <= MAX_ID;
37
- }
38
- function idList(value) {
39
- if (!Array.isArray(value) || value.length === 0 || value.length > MAX_ENTRIES || !value.every(isId)) return;
40
- return [...new Set(value)];
41
- }
42
27
  function parseRedeemer(input) {
43
28
  if (input === "anyone" || input === "signed-in") return input;
44
29
  const value = ownRecord(input);
@@ -50,14 +35,54 @@ function parseRedeemer(input) {
50
35
  id: value["id"]
51
36
  };
52
37
  }
38
+ function parseConfirmation(input) {
39
+ const jkt = ownRecord(input)?.["jkt"];
40
+ return typeof jkt === "string" && /^[\w-]{43}$/u.test(jkt) ? { jkt } : void 0;
41
+ }
42
+ /**
43
+ * Validates a verified capability (a claim plus `id`, `expiresAt` and
44
+ * an optional `cnf`) and returns a frozen copy, or `undefined`.
45
+ */
46
+ function parseCapability(input) {
47
+ const value = ownRecord(input);
48
+ const claim = parseCapabilityClaim(input);
49
+ if (value === void 0 || claim === void 0 || !isId(value["id"])) return;
50
+ const expiresAt = value["expiresAt"];
51
+ if (typeof expiresAt !== "number" || !Number.isFinite(expiresAt)) return;
52
+ const cnf = value["cnf"] === void 0 ? void 0 : parseConfirmation(value["cnf"]);
53
+ if (value["cnf"] !== void 0 && cnf === void 0) return;
54
+ return freezeDeep(compact({
55
+ ...claim,
56
+ id: value["id"],
57
+ expiresAt,
58
+ cnf
59
+ }));
60
+ }
61
+ /**
62
+ * The capability verified claims carry: the `capability` claim, `sub` as
63
+ * `id`, `exp` as `expiresAt` and the RFC 7800 `cnf`. `undefined` when any
64
+ * of them is missing or malformed.
65
+ */
66
+ function capabilityFromClaims(claims) {
67
+ const claim = parseCapabilityClaim(claims["capability"]);
68
+ const sub = claims["sub"];
69
+ const exp = claims["exp"];
70
+ if (claim === void 0 || !isId(sub) || typeof exp !== "number") return;
71
+ return parseCapability({
72
+ ...claim,
73
+ id: sub,
74
+ expiresAt: exp,
75
+ cnf: claims["cnf"]
76
+ });
77
+ }
53
78
  /**
54
79
  * Validates an untrusted `capability` claim and returns a frozen copy with
55
80
  * only the v1 fields, or `undefined`. Unknown fields are dropped; a wrong
56
81
  * type in a known field rejects the whole claim.
57
82
  */
58
- function parseCapability(input) {
83
+ function parseCapabilityClaim(input) {
59
84
  const value = ownRecord(input);
60
- if (value === void 0 || value["v"] !== 1 || !isId(value["id"])) return;
85
+ if (value === void 0 || value["v"] !== 1) return;
61
86
  if (value["holder"] !== "link" && value["holder"] !== "key") return;
62
87
  const on = ownRecord(value["on"]);
63
88
  if (on === void 0 || !isId(on["resource"]) || !isId(on["id"])) return;
@@ -68,11 +93,8 @@ function parseCapability(input) {
68
93
  const redeemer = value["redeemer"] === void 0 ? void 0 : parseRedeemer(value["redeemer"]);
69
94
  if (value["redeemer"] !== void 0 && redeemer === void 0) return;
70
95
  if (value["once"] !== void 0 && value["once"] !== true) return;
71
- const expiresAt = value["expiresAt"];
72
- if (typeof expiresAt !== "number" || !Number.isFinite(expiresAt)) return;
73
96
  return freezeDeep(compact({
74
97
  v: 1,
75
- id: value["id"],
76
98
  holder: value["holder"],
77
99
  on: {
78
100
  resource: on["resource"],
@@ -81,8 +103,7 @@ function parseCapability(input) {
81
103
  roles,
82
104
  permissions,
83
105
  redeemer,
84
- once: value["once"],
85
- expiresAt
106
+ once: value["once"]
86
107
  }));
87
108
  }
88
109
  function resourceName(resource) {
@@ -105,26 +126,32 @@ function capabilityOf(input) {
105
126
  permissions: input.permissions?.map((permission) => permission.key),
106
127
  redeemer: input.redeemer,
107
128
  once: input.once === true ? true : void 0,
108
- expiresAt: Math.floor(input.expiresAt)
129
+ expiresAt: Math.floor(input.expiresAt),
130
+ cnf: input.cnf
109
131
  }));
110
- if (capability === void 0) throw new Error("PermDock: invalid capability (id, on.id and roles are required; roles and permissions hold at most 64 entries)");
132
+ if (capability === void 0) throw new Error("PermDock: invalid capability (id, on.id and roles are required; roles and permissions hold at most 64 entries; cnf.jkt is a base64url SHA-256 thumbprint)");
111
133
  return capability;
112
134
  }
113
135
  /**
114
- * Signs a capability as a `permdock-capability+jwt`: `sub` is the link id,
115
- * `exp` is `expiresAt`, and the signer sets `iss`, `iat` and a fresh `jti`.
136
+ * Signs a capability as a `vnd.permdock.capability+jwt`: `sub` is the link
137
+ * id, `exp` is `expiresAt`, `cnf` binds the redeemer's key, and the signer
138
+ * sets `iss`, `aud`, `iat` (`issuedAt`, else now) and a fresh `jti`.
116
139
  */
117
140
  function signCapability(input, signer, options = {}) {
118
141
  const capability = capabilityOf(input);
119
- const violation = options.linkPolicy === void 0 ? void 0 : linkPolicyViolation(capability, options.linkPolicy, Math.floor(Date.now() / 1e3));
142
+ const issuedAt = nowSeconds(options.issuedAt);
143
+ const violation = options.linkPolicy === void 0 ? void 0 : linkPolicyViolation(capability, options.linkPolicy, issuedAt);
120
144
  if (violation !== void 0) return Promise.reject(/* @__PURE__ */ new Error(`PermDock: capability breaks the link policy (${violation})`));
121
- return signer.sign({
122
- capability,
123
- sub: capability.id
124
- }, compact({
125
- typ: "permdock-capability+jwt",
145
+ const { id, expiresAt, cnf, ...claim } = capability;
146
+ return signer.sign(compact({
147
+ capability: claim,
148
+ sub: id,
149
+ cnf
150
+ }), compact({
151
+ typ: "vnd.permdock.capability+jwt",
126
152
  audience: options.audience,
127
- expiresAt: capability.expiresAt
153
+ expiresAt,
154
+ issuedAt
128
155
  }));
129
156
  }
130
157
  function holdsScope(membership, scope, id, now) {
@@ -133,10 +160,10 @@ function holdsScope(membership, scope, id, now) {
133
160
  return scope === "tenant" && sameId(membership.tenant, id) || scope === "team" && sameId(membership.team, id);
134
161
  }
135
162
  /** Whether `viewer`, the request's own verified subject, may redeem a capability. */
136
- function redeemerAllows(redeemer, viewer, now = Date.now() / 1e3) {
163
+ function redeemerAllows(redeemer, viewer, now = epochSeconds()) {
137
164
  if (redeemer === void 0 || redeemer === "anyone") return true;
138
165
  const principal = viewer?.principal ?? null;
139
- if (principal === null || principal.kind === "link") return false;
166
+ if (principal === null || principal.kind === "link" || principal.kind === "feed") return false;
140
167
  if (redeemer === "signed-in") return true;
141
168
  if ("user" in redeemer) return principal.id === redeemer.user;
142
169
  return (principal.memberships ?? []).some((membership) => holdsScope(membership, redeemer.scope, redeemer.id, now));
@@ -170,4 +197,4 @@ function capabilitySubject(capability, options = {}) {
170
197
  }));
171
198
  }
172
199
  //#endregion
173
- export { ownRecord as a, signCapability as c, linkPolicyViolation as i, idList as n, parseCapability as o, isId as r, redeemerAllows as s, capabilitySubject as t };
200
+ export { parseCapability as a, signCapability as c, linkPolicyViolation as i, capabilityOf as n, parseCapabilityClaim as o, capabilitySubject as r, redeemerAllows as s, capabilityFromClaims as t };
@@ -0,0 +1,30 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { c as given, l as outFlag, o as fileOut } from "./flags-C3DktBDY.js";
3
+ //#region src/cli/commands/casbin.ts
4
+ const casbinImport = defineLeaf({
5
+ flags: {
6
+ model: {
7
+ type: "string",
8
+ description: "The Casbin model.conf",
9
+ valueHint: "file"
10
+ },
11
+ policy: {
12
+ type: "string",
13
+ description: "The Casbin policy.csv",
14
+ valueHint: "file"
15
+ },
16
+ ...outFlag
17
+ },
18
+ async run(ctx, { flags }) {
19
+ const { runCasbinImport } = await import("./casbin-Dyu2gnUD.js");
20
+ return runCasbinImport({
21
+ cwd: ctx.cwd,
22
+ model: given(flags.model),
23
+ policy: given(flags.policy),
24
+ out: fileOut("casbin import", flags.out),
25
+ json: ctx.json
26
+ });
27
+ }
28
+ });
29
+ //#endregion
30
+ export { casbinImport };