permdock 0.1.0 → 0.2.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 (349) hide show
  1. package/README.md +106 -47
  2. package/dist/a2a/index.d.ts +7 -16
  3. package/dist/a2a/index.js +59 -98
  4. package/dist/adapter-context-mlWsVGGg.js +23 -0
  5. package/dist/ai-sdk/index.d.ts +37 -16
  6. package/dist/ai-sdk/index.js +30 -13
  7. package/dist/approvals/index.d.ts +3 -3
  8. package/dist/approvals/index.js +5 -4
  9. package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
  10. package/dist/approvers-DT4AVyIg.js +52 -0
  11. package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
  12. package/dist/{arazzo-aoTkqYsJ.js → arazzo-cmvX2jDe.js} +2 -2
  13. package/dist/authzen/index.d.ts +4 -13
  14. package/dist/authzen/index.js +16 -50
  15. package/dist/better-auth/index.d.ts +20 -3
  16. package/dist/better-auth/index.js +27 -7
  17. package/dist/better-supabase/index.d.ts +206 -0
  18. package/dist/better-supabase/index.js +620 -0
  19. package/dist/bind-CVy3Espv.d.ts +25 -0
  20. package/dist/bind-VnYn2HKq.js +97 -0
  21. package/dist/boundary-BM8a_P6E.js +13 -0
  22. package/dist/boundary-BmHxVH1J.d.ts +15 -0
  23. package/dist/canonical-json-DemiK4Vp.js +26 -0
  24. package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
  25. package/dist/{capability-BDG_nkxt.d.ts → capability-Dq43tT1u.d.ts} +2 -2
  26. package/dist/catalog/index.d.ts +1 -1
  27. package/dist/catalog/index.js +1 -1
  28. package/dist/catalog-BjZSovXQ.js +2 -0
  29. package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-Dsc9y7sd.js} +23 -12
  30. package/dist/{catalog-B0E6bggc.js → catalog-h2tlKFkq.js} +2 -2
  31. package/dist/{catalog-H-vFGwWK.js → catalog-z8q6bi_r.js} +4 -4
  32. package/dist/claude-agent/index.d.ts +5 -14
  33. package/dist/claude-agent/index.js +4 -10
  34. package/dist/clerk/index.d.ts +12 -3
  35. package/dist/clerk/index.js +26 -5
  36. package/dist/cli/bin.js +1 -1
  37. package/dist/cli/index.d.ts +3 -3
  38. package/dist/cli/index.js +2 -2
  39. package/dist/clients-C7zLFuWT.d.ts +12 -0
  40. package/dist/clients-DjU5ABMy.js +23 -0
  41. package/dist/cloud/index.d.ts +4 -5
  42. package/dist/cloud/index.js +20 -6
  43. package/dist/{cloud-BNQTrmrr.js → cloud-BGhHS-lY.js} +2 -2
  44. package/dist/{cloud-Cuxr6Czw.js → cloud-Bo3e9Ak3.js} +7 -6
  45. package/dist/{collect-O-tOtbnk.js → collect-DDDv_ESs.js} +194 -42
  46. package/dist/collect-DLlujdHC.js +83 -0
  47. package/dist/collect-rG2IQ3t0.js +2 -0
  48. package/dist/{commands-BMh_Etm2.js → commands-DWOrSQic.js} +16 -12
  49. package/dist/compile/index.d.ts +3 -0
  50. package/dist/compile/index.js +2 -0
  51. package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
  52. package/dist/compile-CNnl6uIt.d.ts +94 -0
  53. package/dist/config-BJiM-xAm.js +157 -0
  54. package/dist/config-Bn00Z3ks.js +36 -0
  55. package/dist/config-report-Dw_JcUqT.js +44 -0
  56. package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
  57. package/dist/{context-CKEAabd7.js → context-Ttp0ekMT.js} +36 -27
  58. package/dist/convex/index.d.ts +9 -4
  59. package/dist/convex/index.js +14 -4
  60. package/dist/create-BWyx3jua.d.ts +245 -0
  61. package/dist/create-CPhDL6qx.js +253 -0
  62. package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
  63. package/dist/delegation-D8pUEuce.js +103 -0
  64. package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
  65. package/dist/{describe-DernyItf.d.ts → describe-PdoqESvg.d.ts} +9 -10
  66. package/dist/{diff-x5Il8LVa.js → diff-B8Tunc3o.js} +44 -11
  67. package/dist/{diff-BUzf5Poi.js → diff-CzqLxZ77.js} +2 -2
  68. package/dist/doctor-WpvG6p4k.js +1194 -0
  69. package/dist/doctor-collect-ByfYlNv1.js +664 -0
  70. package/dist/{doctor-Bqo6FwUa.js → doctor-rOr-4ZfS.js} +2 -2
  71. package/dist/drizzle/index.d.ts +4 -3
  72. package/dist/drizzle/index.js +3 -3
  73. package/dist/elysia/index.d.ts +6 -28
  74. package/dist/elysia/index.js +16 -60
  75. package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
  76. package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
  77. package/dist/{errors-DbZ1YOnb.d.ts → errors-DAqevpNk.d.ts} +8 -21
  78. package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
  79. package/dist/evaluation-items-CfCCejQd.js +40 -0
  80. package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
  81. package/dist/eve/index.d.ts +6 -15
  82. package/dist/eve/index.js +7 -12
  83. package/dist/expiry-BoBJ8Tvc.js +7 -0
  84. package/dist/express/index.d.ts +6 -29
  85. package/dist/express/index.js +28 -58
  86. package/dist/fastify/index.d.ts +6 -29
  87. package/dist/fastify/index.js +16 -65
  88. package/dist/fields-BMl1RxoX.js +26 -0
  89. package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
  90. package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
  91. package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
  92. package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-C3sHpZNS.js} +65 -48
  93. package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
  94. package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
  95. package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
  96. package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
  97. package/dist/helpers-H_KARDVC.js +421 -0
  98. package/dist/hono/index.d.ts +6 -28
  99. package/dist/hono/index.js +11 -43
  100. package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
  101. package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
  102. package/dist/http-SO7qGttf.js +44 -0
  103. package/dist/ids-DC4V4CFu.js +18 -0
  104. package/dist/{index-LF_hS-yn.d.ts → index-A0YNL8jZ.d.ts} +1 -1
  105. package/dist/index-CtE07CBF.d.ts +6 -0
  106. package/dist/{index-xIxJLwOQ.d.ts → index-D3vbkoSI.d.ts} +75 -7
  107. package/dist/{index-CltcQ4Bf.d.ts → index-D6_cSa1z.d.ts} +68 -5
  108. package/dist/index.d.ts +14 -9
  109. package/dist/index.js +22 -17
  110. package/dist/instance-options-BK_rNOSC.d.ts +11 -0
  111. package/dist/instance-options-Dhhcnm3y.js +22 -0
  112. package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
  113. package/dist/jwt/index.d.ts +10 -6
  114. package/dist/jwt/index.js +32 -13
  115. package/dist/kernel-GSQnMz3O.js +208 -0
  116. package/dist/kysely/index.d.ts +4 -3
  117. package/dist/kysely/index.js +3 -3
  118. package/dist/live-options-H2eG8dfJ.js +60 -0
  119. package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
  120. package/dist/load-DwJUafYN.js +2 -0
  121. package/dist/manifest-iaoBXHKc.js +783 -0
  122. package/dist/manifest-uDS9y5de.d.ts +206 -0
  123. package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
  124. package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
  125. package/dist/map-error-pgUWNNtG.js +23 -0
  126. package/dist/may-use-DndQ5tQ-.js +77 -0
  127. package/dist/mcp/index.d.ts +54 -22
  128. package/dist/mcp/index.js +218 -178
  129. package/dist/nest/index.d.ts +26 -31
  130. package/dist/nest/index.js +75 -84
  131. package/dist/next/client.d.ts +7 -8
  132. package/dist/next/client.js +11 -9
  133. package/dist/next/index.d.ts +30 -47
  134. package/dist/next/index.js +45 -60
  135. package/dist/next/plugin.d.ts +1 -1
  136. package/dist/next/plugin.js +32 -1
  137. package/dist/node/index.d.ts +9 -28
  138. package/dist/node/index.js +11 -43
  139. package/dist/openai/index.d.ts +6 -15
  140. package/dist/openai/index.js +7 -20
  141. package/dist/openapi/index.d.ts +87 -4
  142. package/dist/openapi/index.js +3 -3
  143. package/dist/{openapi-CwePaF7C.js → openapi-Bbg4wGVL.js} +3 -3
  144. package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
  145. package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
  146. package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
  147. package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
  148. package/dist/orpc/index.d.ts +15 -28
  149. package/dist/orpc/index.js +74 -117
  150. package/dist/otel/index.d.ts +2 -2
  151. package/dist/parse-BuyjxhZV.js +53 -0
  152. package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
  153. package/dist/parse-local-manifest-BrMozJCo.js +36 -0
  154. package/dist/pdp/index.d.ts +2 -2
  155. package/dist/pdp/index.js +14 -127
  156. package/dist/{permdock-yoZ7EjxX.js → permdock-CzqXjCpU.js} +641 -126
  157. package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
  158. package/dist/{permissions-CofRqesP.js → permissions-CpZrivYv.js} +3 -3
  159. package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
  160. package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
  161. package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
  162. package/dist/{policy-CInmNGkM.d.ts → policy-CFZAr_Al.d.ts} +330 -37
  163. package/dist/{policy-Cq2fB8Q5.d.ts → policy-D8UFyERw.d.ts} +2 -2
  164. package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
  165. package/dist/powersync-A8x_Yyvh.js +2 -0
  166. package/dist/powersync-C7kLglqX.js +540 -0
  167. package/dist/powersync-yW1UUFzp.js +62 -0
  168. package/dist/prisma/index.d.ts +3 -2
  169. package/dist/prisma/index.js +45 -20
  170. package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
  171. package/dist/problem-details-CkL50EEf.d.ts +7 -0
  172. package/dist/problem-details-_AMOYz-w.js +144 -0
  173. package/dist/{protected-BuPAycJT.d.ts → protected-CNsMzrVd.d.ts} +5 -4
  174. package/dist/protected-Cs6kTaHo.js +100 -0
  175. package/dist/protected-bZs6rbT1.d.ts +40 -0
  176. package/dist/{provider-wTAUda2v.d.ts → provider-Cjr62YMV.d.ts} +1 -1
  177. package/dist/provider-DLzpb2Xz.js +52 -0
  178. package/dist/provider-store-DNyC1y48.js +43 -0
  179. package/dist/react/index.d.ts +7 -5
  180. package/dist/react/index.js +5 -4
  181. package/dist/react/provider-client.d.ts +1 -1
  182. package/dist/react/provider-client.js +1 -1
  183. package/dist/react-native/index.d.ts +166 -10
  184. package/dist/react-native/index.js +607 -85
  185. package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
  186. package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
  187. package/dist/replay-BsOyTrdV.js +28 -0
  188. package/dist/replay-sqBGMnNs.d.ts +5 -0
  189. package/dist/resource-ref-CaS9yVPi.js +20 -0
  190. package/dist/revocations-Bhr0aMIC.js +27 -0
  191. package/dist/rls-BMNydpHk.js +2521 -0
  192. package/dist/{rls-BOFU3chG.js → rls-CEvs64Kj.js} +8 -3
  193. package/dist/rls-fields-BMasREhR.js +3502 -0
  194. package/dist/{rls-graph-DxQ39PJj.js → rls-graph-pc9fuXYm.js} +100 -36
  195. package/dist/{rls-import-CXV6LBlS.js → rls-import-D8F7j35Q.js} +7 -6
  196. package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-7wikfrVI.js} +6 -5
  197. package/dist/rls-ownership-B5Lkq62W.js +843 -0
  198. package/dist/rls-shared-aOQ4hGTO.js +493 -0
  199. package/dist/rls-verify-D8B7dOTh.js +745 -0
  200. package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
  201. package/dist/rpc-DOK54_CS.js +89 -0
  202. package/dist/{run-CJ6UvS3a.js → run-YXCJDNYk.js} +31 -12
  203. package/dist/runtime-CB8gQFvS.js +11 -0
  204. package/dist/{saas-BRrZzJkM.js → saas-Bj_FFkjN.js} +17 -7
  205. package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
  206. package/dist/scim/index.d.ts +1 -1
  207. package/dist/scim/index.js +1 -1
  208. package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
  209. package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
  210. package/dist/server/index.d.ts +22 -11
  211. package/dist/server/index.js +11 -8
  212. package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
  213. package/dist/shared-DRu8VFVM.js +123 -0
  214. package/dist/{sink-Cfr9-7YC.d.ts → sink-Gs6TTVa-.d.ts} +1 -1
  215. package/dist/skills-Biq5uup3.js +192 -0
  216. package/dist/{skills-C_lpV4Jx.js → skills-JaymNCdK.js} +10 -4
  217. package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
  218. package/dist/snapshot-cache-D6jLelln.js +44 -0
  219. package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
  220. package/dist/solid/index.d.ts +39 -9
  221. package/dist/solid/index.js +76 -85
  222. package/dist/sources-B0UvrJ21.js +534 -0
  223. package/dist/sources-BcJgw0lt.d.ts +192 -0
  224. package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
  225. package/dist/{src-CTNT-PBW.js → src-CSbUiozF.js} +149 -11
  226. package/dist/ssf/index.d.ts +3 -2
  227. package/dist/ssf/index.js +3 -29
  228. package/dist/store-DMAWwAJV.js +371 -0
  229. package/dist/{store-Bq90395i.d.ts → store-D_pjn91-.d.ts} +13 -4
  230. package/dist/store-options-yO0V6gRn.js +716 -0
  231. package/dist/{stores-CkG2HrSg.js → stores-4_sqiOA1.js} +10 -63
  232. package/dist/{stores-CvOnu_2T.d.ts → stores-DVR5NHLE.d.ts} +20 -9
  233. package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
  234. package/dist/{stream-BhMfZOwr.d.ts → stream-DlvG2hs-.d.ts} +2 -2
  235. package/dist/subject-settings-BwBmCdTR.js +128 -0
  236. package/dist/supabase/index.d.ts +122 -6
  237. package/dist/supabase/index.js +4 -3
  238. package/dist/supabase/middleware.d.ts +32 -27
  239. package/dist/supabase/middleware.js +56 -22
  240. package/dist/{supabase-D8UlBA7Z.js → supabase-CwafwxxF.js} +3 -3
  241. package/dist/{supabase-DTxGtYdi.js → supabase-DTBaC20O.js} +345 -367
  242. package/dist/supabase-config-Bs44dare.js +472 -0
  243. package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-BuxLQLpU.js} +994 -708
  244. package/dist/supabase-hook-D5qVd_D8.js +2 -0
  245. package/dist/supautils-DYZnzRWV.js +91 -0
  246. package/dist/svelte/PermissionBoundary.svelte +37 -0
  247. package/dist/svelte/Protected.svelte +8 -2
  248. package/dist/svelte/index.d.ts +9 -6
  249. package/dist/svelte/index.js +61 -7
  250. package/dist/svelte/runtime.d.ts +4 -3
  251. package/dist/svelte/runtime.js +4 -3
  252. package/dist/svelte/source.d.ts +9 -6
  253. package/dist/svelte/source.js +7 -4
  254. package/dist/terminal/index.d.ts +6 -14
  255. package/dist/terminal/index.js +44 -32
  256. package/dist/testing/index.d.ts +105 -16
  257. package/dist/testing/index.js +504 -40
  258. package/dist/testing/saas/index.d.ts +4 -4
  259. package/dist/testing/saas/index.js +2 -2
  260. package/dist/testing/saas/permissions.d.ts +1 -1
  261. package/dist/testing/saas/permissions.js +1 -1
  262. package/dist/token-CIWxJOCh.js +50 -0
  263. package/dist/trpc/index.d.ts +7 -26
  264. package/dist/trpc/index.js +17 -100
  265. package/dist/types-9AWO9EGt.d.ts +197 -0
  266. package/dist/{types-D6Z6-rKJ.d.ts → types-BPxgszlT.d.ts} +260 -22
  267. package/dist/{types-BvBk1wgn.d.ts → types-BVyImy5I.d.ts} +5 -3
  268. package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
  269. package/dist/types-C3s9xVJG.d.ts +48 -0
  270. package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
  271. package/dist/types-kxznc7cn.d.ts +52 -0
  272. package/dist/{types-B8w5PFtS.d.ts → types-vKyAMtcX.d.ts} +17 -1
  273. package/dist/{types-B9dmiiab.d.ts → types-vNSDF7Dq.d.ts} +1 -1
  274. package/dist/{sources-DOpW5Ila.d.ts → types-yF5LmQVD.d.ts} +86 -127
  275. package/dist/unplugin/index.d.ts +1 -1
  276. package/dist/unplugin/index.js +10 -9
  277. package/dist/{usage-1ozMubLY.js → usage-D07N9QJ3.js} +2 -2
  278. package/dist/usage-D82l1CwK.js +2 -0
  279. package/dist/{usage-CUnK6Ou9.js → usage-DG1oeCca.js} +225 -62
  280. package/dist/validation-error-CnjZ4t92.js +33 -0
  281. package/dist/validation-error-CtF23SrC.d.ts +26 -0
  282. package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
  283. package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
  284. package/dist/version-BvacVTZR.js +17 -0
  285. package/dist/views-Soe7bGSC.js +95 -0
  286. package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
  287. package/dist/vue/index.d.ts +35 -13
  288. package/dist/vue/index.js +86 -93
  289. package/dist/watch-Etoa_Mvr.js +2 -0
  290. package/dist/watch-UihESpsJ.js +128 -0
  291. package/dist/webmcp/index.d.ts +2 -2
  292. package/dist/webmcp/index.js +7 -13
  293. package/package.json +62 -36
  294. package/schemas/approval-request-v1.json +175 -0
  295. package/schemas/catalog-v1.json +29 -1
  296. package/schemas/supabase-claims-v1.json +6 -1
  297. package/schemas/supabase-manifest-v1.json +150 -6
  298. package/skills/permdock/SKILL.md +7 -7
  299. package/skills/permdock-agents/SKILL.md +5 -5
  300. package/skills/permdock-agents/references/runtimes.md +12 -10
  301. package/skills/permdock-approvals/SKILL.md +4 -4
  302. package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
  303. package/skills/permdock-audit/SKILL.md +3 -3
  304. package/skills/permdock-credentials/SKILL.md +4 -4
  305. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  306. package/skills/permdock-data/SKILL.md +4 -4
  307. package/skills/permdock-data/references/queries-and-rls.md +14 -6
  308. package/skills/permdock-data/references/relationships.md +5 -3
  309. package/skills/permdock-tenancy/SKILL.md +9 -6
  310. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
  311. package/skills/permdock-wire/SKILL.md +4 -4
  312. package/skills/permdock-wire/references/adapters.md +42 -30
  313. package/skills/permdock-wire/references/policy-options.md +5 -3
  314. package/dist/approvers-aH0PJkmf.js +0 -20
  315. package/dist/catalog-idsHc0vo.js +0 -2
  316. package/dist/collect-B7_TIfmg.js +0 -49
  317. package/dist/collect-fRPAQIWb.js +0 -2
  318. package/dist/compile-CQbvyIBr.d.ts +0 -30
  319. package/dist/config-BPYmjTOp.js +0 -26
  320. package/dist/context-gtAwAILx.js +0 -6
  321. package/dist/create-BKF3dgFk.d.ts +0 -162
  322. package/dist/create-CSkhDU9T.js +0 -222
  323. package/dist/doctor-BGle8Gqi.js +0 -1314
  324. package/dist/helpers-DnSOrhB9.js +0 -682
  325. package/dist/index-fG6NSXlc.d.ts +0 -9
  326. package/dist/kernel-YOGCWNLf.js +0 -211
  327. package/dist/load-QOOm1z70.js +0 -2
  328. package/dist/manifest-DDQbC6K0.d.ts +0 -118
  329. package/dist/map-error-RJ3ZsUyA.js +0 -16
  330. package/dist/may-use-CnFEjVEp.js +0 -37
  331. package/dist/pg-4GJWDUxG.js +0 -953
  332. package/dist/plugin-4gr7IxFJ.js +0 -65
  333. package/dist/protected-B4K3BKoX.js +0 -138
  334. package/dist/protected-wY7nXhY9.d.ts +0 -23
  335. package/dist/provider-_wx46HpB.js +0 -48
  336. package/dist/rls-CJVja9Ww.js +0 -2119
  337. package/dist/rls-helpers-BxRuif0l.js +0 -1346
  338. package/dist/runtime-DP9ttFh1.js +0 -27
  339. package/dist/skills-Dx3QLnMY.js +0 -110
  340. package/dist/source-DoBBYJi2.js +0 -6
  341. package/dist/sources-DVHM3Mwq.js +0 -284
  342. package/dist/store-C6hFW6ta.js +0 -508
  343. package/dist/subject-settings-xt7V845g.js +0 -82
  344. package/dist/supabase-hook-DW-xP4hU.js +0 -2
  345. package/dist/types-DbWdEfcm.d.ts +0 -87
  346. package/dist/types-bva3i4Gf.d.ts +0 -98
  347. package/dist/types-i4BAOvdb.d.ts +0 -97
  348. package/dist/usage-PyEor6GA.js +0 -2
  349. package/dist/version-CnSh33Fj.js +0 -16
@@ -1,53 +1,28 @@
1
1
  import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { t as createPermDock$1 } from "../permdock-yoZ7EjxX.js";
3
- import { t as emptySnapshot } from "../from-snapshot-BMGnhmgv.js";
4
- import { n as createEvaluationsHandler } from "../evaluations-DsAU9ppl.js";
2
+ import { t as createPermDock$1 } from "../permdock-CzqXjCpU.js";
3
+ import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-D6jLelln.js";
4
+ import { c as NO_GRANT, n as createEvaluationsHandler } from "../evaluations-tz6D9A2G.js";
5
+ import { t as instanceOptions } from "../instance-options-Dhhcnm3y.js";
5
6
  import { cache } from "react";
6
7
  import { jsx } from "react/jsx-runtime";
7
- import { io } from "next/cache";
8
- import { forbidden, unauthorized, unstable_rethrow } from "next/navigation";
9
- import { after } from "next/server";
8
+ import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
9
+ import { cacheLife, cacheTag, io } from "next/cache.js";
10
+ import { after } from "next/server.js";
10
11
  import { PermDockProvider } from "../react/provider-client.js";
11
- //#region src/next/cache-life.ts
12
- /**
13
- * `{ stale }` for `cacheLife()` inside an app-owned `'use cache: private'` function: `max` when the
14
- * value never expires, otherwise the seconds left, clamped to `[min, max]`. A value with less than
15
- * `min` seconds left gets its real remainder, so Next.js leaves it out of prefetches instead of
16
- * serving it past `expiresAt`.
17
- */
18
- function cacheLifeFor(value, options = {}) {
19
- const min = options.min ?? 30;
20
- const max = Math.max(options.max ?? 300, min);
21
- const expiresAt = value?.expiresAt;
22
- if (expiresAt === void 0 || expiresAt === null) return { stale: max };
23
- const issuedAt = value?.issuedAt !== void 0 && value.issuedAt > 0 ? value.issuedAt : void 0;
24
- const now = options.now ?? issuedAt ?? Math.floor(Date.now() / 1e3);
25
- const remaining = Math.floor(expiresAt - now);
26
- if (remaining < min) return { stale: Math.max(0, remaining) };
27
- return { stale: Math.min(max, remaining) };
28
- }
29
- //#endregion
30
12
  //#region src/next/provider.tsx
31
13
  function renderClientProvider(options) {
32
14
  return /* @__PURE__ */ jsx(PermDockProvider, {
33
15
  ...compact({
34
16
  snapshotPromise: options.snapshotPromise,
35
17
  endpoint: options.endpoint,
36
- tenant: options.tenant
18
+ tenant: options.tenant,
19
+ suspend: options.suspend
37
20
  }),
38
21
  children: options.children
39
22
  });
40
23
  }
41
24
  //#endregion
42
25
  //#region src/next/create.ts
43
- const DENIED = {
44
- outcome: "denied",
45
- denials: [{
46
- role: null,
47
- reason: "no-grant"
48
- }],
49
- alternatives: []
50
- };
51
26
  function assertServerOnly() {
52
27
  if (globalThis.document !== void 0) throw new TypeError("permdock/next is server-only. Import hooks and Protected from permdock/react.");
53
28
  }
@@ -90,14 +65,21 @@ function afterResponse(sink) {
90
65
  }
91
66
  function wrapInstance(permdock, onDenied) {
92
67
  if (onDenied === void 0) return permdock;
68
+ const wrap = (next) => wrapInstance(next, onDenied);
93
69
  const assert = ((permission, data, options) => permdock.assert(permission, data, compact({
94
70
  ...options,
95
71
  onDenied: options?.onDenied ?? onDenied
96
72
  })));
97
- return {
73
+ return Object.freeze({
98
74
  ...permdock,
99
- assert
100
- };
75
+ assert,
76
+ tenant: (id) => wrap(permdock.tenant(id)),
77
+ team: (id) => wrap(permdock.team(id)),
78
+ derive: (options) => {
79
+ const derived = permdock.derive(options);
80
+ return derived instanceof Promise ? derived.then(wrap) : wrap(derived);
81
+ }
82
+ });
101
83
  }
102
84
  function createPermDock(policy, options) {
103
85
  assertServerOnly();
@@ -117,13 +99,8 @@ function createPermDock(policy, options) {
117
99
  await io();
118
100
  const built = await createPermDock$1(policy, user, compact({
119
101
  tenant,
120
- memberships: options.memberships,
121
- relations: options.relations,
122
- entitlements: options.entitlements,
123
- customRoles: options.customRoles,
124
- policies: options.policies,
125
- sink,
126
- limits: options.limits
102
+ ...instanceOptions(options),
103
+ sink
127
104
  }));
128
105
  return wrapInstance(options.otel === void 0 ? built : options.otel(built), options.onDenied);
129
106
  });
@@ -131,22 +108,38 @@ function createPermDock(policy, options) {
131
108
  const tenant = query?.tenant ?? await resolveFallbackTenant();
132
109
  return instantiate(tenant ?? "");
133
110
  };
134
- const getPermission = async (permission, data) => {
111
+ const getPermission = async (permission, data, query) => {
135
112
  try {
136
- const decision = (await getPermDock()).decide(permission, data);
113
+ const decision = (await getPermDock(query)).decide(permission, data);
137
114
  return {
138
115
  allowed: decision.outcome === "granted",
139
116
  status: "ready",
140
117
  decision
141
118
  };
142
- } catch {
119
+ } catch (error) {
120
+ unstable_rethrow(error);
143
121
  return {
144
122
  allowed: false,
145
123
  status: "ready",
146
- decision: DENIED
124
+ decision: NO_GRANT
147
125
  };
148
126
  }
149
127
  };
128
+ const getSnapshot = async (query = {}) => {
129
+ const permdock = await getPermDock(compact({ tenant: query.tenant }));
130
+ const snapshot = permdock.snapshot(compact({
131
+ include: query.include,
132
+ tenants: query.tenants
133
+ }));
134
+ try {
135
+ cacheLife(cacheLifeFor(snapshot));
136
+ cacheTag(snapshotTag(permdock.subject.principal?.id), ...query.tags ?? []);
137
+ } catch (error) {
138
+ unstable_rethrow(error);
139
+ throw new Error("PermDock: getSnapshot() sets cacheLife() and cacheTag(), so call it inside a 'use cache: private' function with cacheComponents enabled.", { cause: error });
140
+ }
141
+ return snapshot;
142
+ };
150
143
  const requireAccess = async (input) => {
151
144
  const permdock = await getPermDock(input.tenant === void 0 ? void 0 : { tenant: input.tenant });
152
145
  const assert = permdock.assert;
@@ -160,11 +153,12 @@ function createPermDock(policy, options) {
160
153
  const snapshotPromise = getPermDock(props.tenant === void 0 ? void 0 : { tenant: props.tenant }).then((permdock) => permdock.snapshot(compact({
161
154
  include: props.include,
162
155
  tenants: props.tenants
163
- }))).catch(() => emptySnapshot());
156
+ })));
164
157
  return renderClientProvider(compact({
165
158
  snapshotPromise,
166
159
  endpoint: props.endpoint ?? options.endpoint ?? "/api/permdock",
167
160
  tenant: props.tenant,
161
+ suspend: props.suspend,
168
162
  children: props.children
169
163
  }));
170
164
  };
@@ -176,20 +170,11 @@ function createPermDock(policy, options) {
176
170
  return {
177
171
  getPermDock,
178
172
  getPermission,
173
+ getSnapshot,
179
174
  requireAccess,
180
175
  PermDockProvider,
181
176
  permdockHandler
182
177
  };
183
178
  }
184
179
  //#endregion
185
- //#region src/next/snapshot-tag.ts
186
- /**
187
- * The `cacheTag` for one subject's cached snapshots: `permdock:<sub>`, or `permdock:anon`
188
- * without a subject. Tag the private cache with it and pass it to `updateTag` or
189
- * `revalidateTag` on every write that changes the subject's snapshot.
190
- */
191
- function snapshotTag(sub) {
192
- return `permdock:${sub === void 0 || sub === null || sub === "" ? "anon" : sub}`;
193
- }
194
- //#endregion
195
- export { cacheLifeFor, createPermDock, snapshotTag };
180
+ export { cacheLifeFor, createPermDock, snapshotHeaders, snapshotTag };
@@ -1,4 +1,4 @@
1
- import { a as PermDockPluginOptions } from "../types-D6Z6-rKJ.js";
1
+ import { a as PermDockPluginOptions } from "../types-BPxgszlT.js";
2
2
  //#region src/cli/plugin.d.ts
3
3
  /** Any object: Next's `NextConfig` is an interface, so no index signature. */
4
4
  type NextConfigLike = object;
@@ -1,2 +1,33 @@
1
- import { t as createPermDockPlugin } from "../plugin-4gr7IxFJ.js";
1
+ import { i as describeError } from "../errors-CWfoNg9N.js";
2
+ import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-UihESpsJ.js";
3
+ //#region src/cli/plugin.ts
4
+ const PHASE_BUILD = "phase-production-build";
5
+ const PHASE_DEV = "phase-development-server";
6
+ function createPermDockPlugin(options) {
7
+ const schedulers = /* @__PURE__ */ new Map();
8
+ return function permdockPlugin(nextConfig) {
9
+ return async (phase, context) => {
10
+ const resolved = typeof nextConfig === "function" ? await nextConfig(phase, context) : nextConfig;
11
+ const cwd = process.cwd();
12
+ if (phase === PHASE_BUILD) {
13
+ const check = process.env["PERMDOCK_COLLECT"] !== "write";
14
+ report(await runPluginCollect(cwd, options, check));
15
+ } else if (phase === PHASE_DEV) {
16
+ const scheduler = schedulers.get(cwd) ?? createCollectScheduler(cwd, options);
17
+ schedulers.set(cwd, scheduler);
18
+ try {
19
+ report(await scheduler.run(false));
20
+ } catch (error) {
21
+ report(describeError(error));
22
+ }
23
+ scheduler.watch();
24
+ }
25
+ return resolved;
26
+ };
27
+ };
28
+ }
29
+ async function runPluginCollect(cwd, options, check) {
30
+ return (await collectOnce(cwd, options, check, false)).message;
31
+ }
32
+ //#endregion
2
33
  export { createPermDockPlugin };
@@ -1,37 +1,18 @@
1
- import { $ as DecisionSink, C as Policy, E as PolicyVocabulary, Zt as PermDock, at as LimitStore, ct as MembershipSource, ft as RelationSource, mr as Principal, pt as RoleSource, sn as PolicySource, tt as EntitlementSource, xt as SnapshotSource } from "../policy-CInmNGkM.js";
2
- import { d as Permission } from "../permissions-B4apnahQ.js";
3
- import { f as ApprovalStore } from "../types-B8w5PFtS.js";
4
- import { o as OtelWrap } from "../types-B9dmiiab.js";
5
- import { r as PdpFactory } from "../types-BvBk1wgn.js";
6
- import { g as discoverViaSignatureAgent, h as WebBotAuthVerifier, n as OpenApiHooks, o as TenantOption, r as ProtectOptions, t as Guard, u as InvalidSignatureError, y as verifyWebBotAuth } from "../create-BKF3dgFk.js";
1
+ import { C as Policy, D as PolicyVocabulary, Nr as Principal, ln as PermDock } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission } from "../permissions-DttnqqxC.js";
3
+ import { a as ScopeGuard, h as InvalidSignatureError, i as ProtectOptions, n as OpenApiHooks, t as Guard, w as verifyWebBotAuth, x as discoverViaSignatureAgent } from "../create-BWyx3jua.js";
4
+ import { t as ServerAdapterOptions } from "../bind-CVy3Espv.js";
7
5
  import { a as toRequest, i as sendResponse, n as fromResponse, r as isServerResponse, t as NodeRequest } from "../http-DPuDaChb.js";
8
6
  import { IncomingMessage, ServerResponse } from "node:http";
9
7
  //#region src/node/create.d.ts
10
- type NodePermDockOptions<TUser = unknown> = {
11
- readonly subject: (req: NodeRequest) => TUser | Promise<TUser>;
12
- readonly tenant?: TenantOption<NodeRequest>;
13
- readonly memberships?: MembershipSource | readonly MembershipSource[];
14
- /** The object graph for relation grants that walk a parent chain; without it they deny. */
15
- readonly relations?: RelationSource;
16
- readonly entitlements?: EntitlementSource;
17
- readonly customRoles?: RoleSource;
18
- /** Hosted grants, read once per instance; see `PolicySource`. */
19
- readonly policies?: PolicySource;
20
- readonly store?: ApprovalStore;
21
- readonly sink?: DecisionSink;
22
- readonly limits?: LimitStore;
23
- /** `createPermDock` from `permdock/pdp`; `protect` then decides delegated permissions remotely. */
24
- readonly pdp?: PdpFactory;
25
- /** Accepted for adapter parity; not read by this adapter. */
26
- readonly snapshots?: SnapshotSource;
27
- /** `(permdock) => withOtel(permdock, options)` from `permdock/otel`. */
28
- readonly otel?: OtelWrap;
29
- /** `(request) => verifyWebBotAuth(request, options)`; a verified bot becomes the actor. */
30
- readonly webBotAuth?: WebBotAuthVerifier;
8
+ type NodePermDockOptions<TUser = unknown> = ServerAdapterOptions<NodeRequest, TUser>;
9
+ type NodeProtect = {
10
+ (permission: Permission, loadData?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<Guard>;
11
+ (permission: null, loadData?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<ScopeGuard>;
31
12
  };
32
13
  type NodePermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
33
14
  readonly permdock: (req: IncomingMessage) => Promise<PermDock<V>>;
34
- readonly protect: (permission: Permission, loadData?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions) => (req: IncomingMessage) => Promise<Guard>;
15
+ readonly protect: NodeProtect;
35
16
  readonly send: typeof sendResponse;
36
17
  readonly permdockHandler: () => (req: IncomingMessage, res: ServerResponse) => Promise<void>;
37
18
  readonly toRequest: typeof toRequest;
@@ -1,55 +1,23 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-DsAU9ppl.js";
3
- import { r as tenantScope, t as createKernel } from "../create-CSkhDU9T.js";
4
- import { i as toRequest, n as isServerResponse, r as sendResponse, t as fromResponse } from "../http-GgVApX1k.js";
1
+ import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-tz6D9A2G.js";
2
+ import { r as bindKernel } from "../bind-VnYn2HKq.js";
3
+ import { i as toRequest, n as isServerResponse, r as sendResponse, t as fromResponse } from "../http-BIhmLfCc.js";
5
4
  //#region src/node/create.ts
5
+ const nodeRequest = (req) => req;
6
6
  function createPermDock(policy, options) {
7
- const contexts = /* @__PURE__ */ new WeakMap();
8
- const bound = /* @__PURE__ */ new WeakMap();
9
- const kernel = createKernel(policy, compact({
10
- subject: (request) => {
11
- const req = contexts.get(request);
12
- return req === void 0 ? null : options.subject(req);
13
- },
14
- memberships: options.memberships,
15
- relations: options.relations,
16
- entitlements: options.entitlements,
17
- customRoles: options.customRoles,
18
- policies: options.policies,
19
- store: options.store,
20
- sink: options.sink,
21
- limits: options.limits,
22
- pdp: options.pdp,
23
- webBotAuth: options.webBotAuth,
24
- adapter: "node",
25
- wrap: options.otel
26
- }));
27
- const bind = (req) => {
28
- const hit = bound.get(req);
29
- if (hit !== void 0) return hit;
30
- const nodeReq = req;
31
- const request = toRequest(nodeReq);
32
- bound.set(req, request);
33
- contexts.set(request, nodeReq);
34
- return request;
35
- };
36
- const scopeOf = (req) => tenantScope(options.tenant, req);
7
+ const bound = bindKernel(policy, options, "node", toRequest);
8
+ const { kernel, handlerScope } = bound;
9
+ const bind = (req) => bound.bind(nodeRequest(req));
10
+ const scopeOf = (req) => bound.scopeOf(nodeRequest(req));
37
11
  const permdock = async (req) => kernel.permdock(bind(req), await scopeOf(req));
38
- const protect = (permission, loadData, protectOptions) => async (req) => kernel.protect(permission, loadData === void 0 ? void 0 : () => loadData(req), protectOptions)(bind(req), await scopeOf(req));
12
+ const protect = ((permission, loadData, protectOptions) => async (req) => kernel.protect(permission, loadData === void 0 ? void 0 : () => loadData(nodeRequest(req)), protectOptions)(bind(req), await scopeOf(req)));
39
13
  const permdockHandler = () => {
40
- const { POST, GET } = kernel.permdockHandler((request) => {
41
- const req = contexts.get(request);
42
- return req === void 0 ? { tenant: void 0 } : scopeOf(req);
43
- });
14
+ const { POST, GET } = kernel.permdockHandler(handlerScope);
44
15
  return async (req, res) => {
45
16
  if (req.method === "GET" || req.method === "HEAD") {
46
17
  await sendResponse(res, await GET(bind(req)));
47
18
  return;
48
19
  }
49
- const nodeReq = req;
50
- const request = toRequest(nodeReq);
51
- contexts.set(request, nodeReq);
52
- await sendResponse(res, await POST(request));
20
+ await sendResponse(res, await POST(bound.rebind(nodeRequest(req))));
53
21
  };
54
22
  };
55
23
  return {
@@ -1,7 +1,8 @@
1
- import { $ as DecisionSink, C as Policy, E as PolicyVocabulary, Zt as PermDock, at as LimitStore, ct as MembershipSource, ft as RelationSource, mr as Principal, pt as RoleSource, sn as PolicySource, tt as EntitlementSource, ur as Delegation, xt as SnapshotSource } from "../policy-CInmNGkM.js";
2
- import { d as Permission } from "../permissions-B4apnahQ.js";
3
- import { c as ApprovalRequest, f as ApprovalStore } from "../types-B8w5PFtS.js";
4
- import { t as ToolMap } from "../types-CxquUByI.js";
1
+ import { C as Policy, D as PolicyVocabulary, Nr as Principal, kr as Delegation, ln as PermDock } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission } from "../permissions-DttnqqxC.js";
3
+ import { c as ApprovalRequest, f as ApprovalStore } from "../types-vKyAMtcX.js";
4
+ import { t as InstanceOptions } from "../instance-options-BK_rNOSC.js";
5
+ import { t as ToolMap } from "../types-Bvc4oWT6.js";
5
6
  //#region src/openai/create.d.ts
6
7
  /** The app context passed to `run(agent, input, { context })`. */
7
8
  type OpenAiContext = {
@@ -14,23 +15,13 @@ type OpenAiContext = {
14
15
  type OpenAiRunContext = {
15
16
  readonly context?: unknown;
16
17
  };
17
- type OpenAiPermDockOptions<TUser = unknown> = {
18
+ type OpenAiPermDockOptions<TUser = unknown> = InstanceOptions & {
18
19
  readonly subject: (context: OpenAiContext) => TUser | Promise<TUser>;
19
20
  readonly actor?: (context: OpenAiContext) => unknown;
20
21
  readonly delegation?: (context: OpenAiContext) => Delegation | undefined | Promise<Delegation | undefined>;
21
22
  readonly tenant?: string | ((context: OpenAiContext) => string | undefined | Promise<string | undefined>);
22
23
  readonly tools: ToolMap;
23
- readonly memberships?: MembershipSource | readonly MembershipSource[];
24
- /** The object graph for relation grants that walk a parent chain; without it they deny. */
25
- readonly relations?: RelationSource;
26
- readonly entitlements?: EntitlementSource;
27
- readonly customRoles?: RoleSource;
28
- /** Hosted grants, read once per instance; see `PolicySource`. */
29
- readonly policies?: PolicySource;
30
24
  readonly store?: ApprovalStore;
31
- readonly sink?: DecisionSink;
32
- readonly limits?: LimitStore;
33
- readonly snapshots?: SnapshotSource;
34
25
  };
35
26
  type OpenAiTool = {
36
27
  readonly name: string;
@@ -1,6 +1,7 @@
1
1
  import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { p as memoryApprovalStore } from "../helpers-DnSOrhB9.js";
3
- import { n as createAgentKernel, t as approvalTokenOf } from "../kernel-YOGCWNLf.js";
2
+ import { r as memoryApprovalStore } from "../store-DMAWwAJV.js";
3
+ import { t as instanceOptions } from "../instance-options-Dhhcnm3y.js";
4
+ import { n as createAgentKernel, t as approvalTokenOf } from "../kernel-GSQnMz3O.js";
4
5
  //#region src/openai/create.ts
5
6
  function appContext(runContext) {
6
7
  const context = runContext?.context;
@@ -31,16 +32,9 @@ function createPermDock(policy, options) {
31
32
  ...compact({
32
33
  actor: options.actor,
33
34
  delegation: options.delegation,
34
- tenant: options.tenant,
35
- memberships: options.memberships,
36
- relations: options.relations,
37
- entitlements: options.entitlements,
38
- customRoles: options.customRoles,
39
- policies: options.policies,
40
- sink: options.sink,
41
- limits: options.limits,
42
- snapshots: options.snapshots
35
+ tenant: options.tenant
43
36
  }),
37
+ ...instanceOptions(options),
44
38
  subject: options.subject,
45
39
  tools: options.tools,
46
40
  store,
@@ -54,15 +48,8 @@ function createPermDock(policy, options) {
54
48
  const context = appContext(runContext);
55
49
  const binding = options.tools[toolName];
56
50
  if (binding === void 0) return true;
57
- try {
58
- const can = (await kernel.instance(context)).can;
59
- if (binding.data === void 0) return !can(permission);
60
- const data = await binding.data(input);
61
- if (data === null || data === void 0) return true;
62
- return !can(permission, data);
63
- } catch {
64
- return true;
65
- }
51
+ const checked = await kernel.check(binding, input, context, { simulate: true });
52
+ return !checked.ok || checked.raw.outcome !== "granted";
66
53
  };
67
54
  const guardTools = async (tools, context) => {
68
55
  const allowed = await kernel.allowedToolNames(context);
@@ -1,5 +1,7 @@
1
- import { C as Policy, _r as Condition, mr as Principal } from "../policy-CInmNGkM.js";
2
- import { d as Permission } from "../permissions-B4apnahQ.js";
1
+ import { C as Policy, Ir as Condition, Nr as Principal } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission, m as PermissionTree } from "../permissions-DttnqqxC.js";
3
+ import { a as ProblemDetails } from "../errors-DAqevpNk.js";
4
+ import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
3
5
  //#region src/openapi/types.d.ts
4
6
  type OpenApiTarget = "3.1" | "3.2" | "3.3";
5
7
  type OverlayVersion = "1.1" | "1.2";
@@ -83,11 +85,92 @@ export declare const DRAFT_PINS: {
83
85
  export declare const PROFILE_NAMES: {
84
86
  readonly fapi2: "fapi-20-security-profile";
85
87
  };
86
- export declare const GNAP_RESERVED = "scheme.type 'gnap' is reserved and emits nothing. See https://permdock.dev/docs/standards/watch-list#gnap";
88
+ export declare const GNAP_RESERVED = "scheme.type 'gnap' is reserved and emits nothing. See https://permdock.com/docs/standards/watch-list#gnap";
87
89
  //#endregion
88
90
  //#region src/openapi/emit.d.ts
89
91
  export declare function securitySchemesOf(policy: Policy, options: OpenApiPermDockOptions): Record<string, unknown>;
90
92
  export declare function catalogOf(options: OpenApiPermDockOptions, extraDrafts?: Readonly<Record<string, string>>): Record<string, unknown>;
91
93
  export declare function openapiVersion(target: OpenApiTarget): string;
92
94
  //#endregion
93
- export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OverlayOperation, OverlayVersion, SchemeType, SecurityProfileName };
95
+ //#region src/openapi/operations.d.ts
96
+ /**
97
+ * One declared operation: a permission, or a permission with the operation id
98
+ * a tool name uses and the OAuth scopes that reach it, or only OAuth scopes
99
+ * for a route that checks no permission (`protect(null)`).
100
+ */
101
+ type OperationEntry = Permission | {
102
+ readonly permission: Permission;
103
+ readonly operationId?: string;
104
+ readonly oauthScopes?: readonly string[];
105
+ } | {
106
+ readonly permission?: undefined;
107
+ readonly operationId?: string;
108
+ readonly oauthScopes: readonly string[];
109
+ };
110
+ /**
111
+ * The permission of each operation of an API, declared once and read by the
112
+ * HTTP gate and by `permdock/mcp`'s `permissionFor`, so a REST route and the
113
+ * MCP tool that calls it can never disagree.
114
+ */
115
+ type OperationPermissions = {
116
+ /**
117
+ * The permission of a request: the declared operation whose method and
118
+ * path template match, a literal segment winning over a `{param}`.
119
+ * `undefined` for an undeclared operation, which a gate denies, and for an
120
+ * operation that declares only OAuth scopes. A `HEAD` request matches the
121
+ * `GET` entry of its path when no `HEAD` entry matches.
122
+ */
123
+ forRequest(method: string, path: string): Permission | undefined;
124
+ /** The permission of an operation id; pass it as `permissionFor` when tool names are operation ids. */
125
+ forOperation(id: string): Permission | undefined;
126
+ oauthScopesForRequest(method: string, path: string): readonly string[] | undefined;
127
+ oauthScopesForOperation(id: string): readonly string[] | undefined;
128
+ };
129
+ /**
130
+ * Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to
131
+ * a permission. `base` is a prefix requests carry and the keys do not
132
+ * (`/api/v1`). A key that is not a method and a path throws.
133
+ */
134
+ export declare function operationPermissions(operations: Readonly<Record<string, OperationEntry>>, options?: {
135
+ readonly base?: string;
136
+ }): OperationPermissions;
137
+ /**
138
+ * The operation permissions an OpenAPI document declares: every operation
139
+ * whose `x-permdock-permissions` names exactly one permission of `tree`, keyed
140
+ * by its method, path and `operationId`. An operation naming none, several or
141
+ * an unknown key is left out, so a gate denies it.
142
+ */
143
+ export declare function operationPermissionsFromOpenApi(document: unknown, tree: PermissionTree, options?: {
144
+ readonly base?: string;
145
+ }): OperationPermissions;
146
+ //#endregion
147
+ //#region src/openapi/problem-details.d.ts
148
+ /**
149
+ * The Problem Details body the adapters send on a denial, as a Standard
150
+ * Schema with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
151
+ * Extension members pass through: RFC 9457 lets a problem type add them.
152
+ */
153
+ export declare const problemDetails: StandardSchemaV1<ProblemDetails> & StandardJSONSchemaV1<ProblemDetails>;
154
+ //#endregion
155
+ //#region src/openapi/security.d.ts
156
+ type SecurityForOptions = {
157
+ /** The security scheme name; defaults to `oauth2`, the name the adapters' `openapi.securitySchemes()` declares. */
158
+ readonly scheme?: string;
159
+ /** Any one of the permissions suffices: one requirement per scope instead of one with every scope. */
160
+ readonly anyOf?: boolean;
161
+ };
162
+ type SecurityFor = {
163
+ readonly security: readonly OpenApiSecurityRequirement[];
164
+ readonly "x-permdock-permissions": readonly string[];
165
+ };
166
+ /** The `x-permdock-permissions` value: the permission keys an operation enforces. */
167
+ export declare function permissionsExtension(permissions: Permission | readonly Permission[]): readonly string[];
168
+ /**
169
+ * An operation's `security` and `x-permdock-permissions`, from permission
170
+ * references alone. Needs no policy, so a contract package can import it.
171
+ * Unlike `permdock openapi emit`, it never drops `security` for a public
172
+ * permission: that needs the policy.
173
+ */
174
+ export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions): SecurityFor;
175
+ //#endregion
176
+ export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityFor, SecurityForOptions, SecurityProfileName };
@@ -1,3 +1,3 @@
1
- import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-CqE1jZuF.js";
2
- import { i as securitySchemesOf, n as catalogOf, r as openapiVersion, t as createPermDock } from "../openapi-DcqM8nU7.js";
3
- export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, securitySchemesOf };
1
+ import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-8ILTftC9.js";
2
+ import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-BqRBvAng.js";
3
+ export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };
@@ -1,4 +1,4 @@
1
- import { a as listArg, i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-BMh_Etm2.js";
1
+ import { a as listArg, i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-DWOrSQic.js";
2
2
  import { defineCommand } from "citty";
3
3
  //#region src/cli/commands/openapi.ts
4
4
  function openapi(ctx) {
@@ -122,7 +122,7 @@ function openapi(ctx) {
122
122
  const doc = listArg(rawArgs, "doc")[0];
123
123
  if (parsed._[0] === "import") {
124
124
  if (doc === void 0) throw new Error("openapi --doc is required");
125
- const { runOpenapiImport } = await import("./openapi-import-BWRUNNeW.js");
125
+ const { runOpenapiImport } = await import("./openapi-import-cmwetbzw.js");
126
126
  ctx.report(await runOpenapiImport({
127
127
  cwd: ctx.cwd,
128
128
  doc,
@@ -134,7 +134,7 @@ function openapi(ctx) {
134
134
  }));
135
135
  return;
136
136
  }
137
- const result = await (await import("./openapi-DWD0Uc_4.js")).runOpenapi({
137
+ const result = await (await import("./openapi-CqqEbHsL.js")).runOpenapi({
138
138
  cwd: ctx.cwd,
139
139
  config: ctx.config,
140
140
  rest: parsed._,