permdock 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -1,6 +1,7 @@
1
1
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
2
2
  import { i as readJsonFile } from "./files-D_JIzUrP.js";
3
- import { t as packageRoot } from "./package-root-DtNnpmUd.js";
3
+ import { t as packageRoot } from "./package-root-Dk_ETdkp.js";
4
+ import { t as didYouMean } from "./args-IIolxxKA.js";
4
5
  import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, writeFileSync } from "node:fs";
5
6
  import { basename, dirname, join, relative, resolve } from "node:path";
6
7
  import { createRequire } from "node:module";
@@ -20,13 +21,22 @@ const AGENT_FOLDERS = {
20
21
  claude: ".claude/skills",
21
22
  cursor: ".cursor/skills"
22
23
  };
23
- /** The `--agent` names `skills install` knows, with the folder each writes. */
24
+ /** The `--for` names `skills install` knows, with the folder each writes. */
24
25
  const SKILL_AGENTS = AGENT_FOLDERS;
25
26
  /** Agents whose config folder (`.claude`, `.cursor`, `.agents`) the project already has. */
26
27
  function detectedAgents(cwd) {
27
28
  return Object.entries(AGENT_FOLDERS).filter(([, folder]) => existsSync(join(cwd, dirname(folder)))).map(([agent]) => agent);
28
29
  }
29
30
  function runSkills(input) {
31
+ const names = /* @__PURE__ */ new Set([...Object.keys(AGENT_FOLDERS), "agent"]);
32
+ const unknown = input.agents.find((agent) => !names.has(agent));
33
+ if (unknown !== void 0) {
34
+ const suggestion = didYouMean(unknown, Object.keys(AGENT_FOLDERS));
35
+ return {
36
+ code: 2,
37
+ output: `skills: unknown --for '${unknown}'.${suggestion === void 0 ? "" : ` Did you mean ${suggestion}?`} Use ${Object.keys(AGENT_FOLDERS).join(", ")}.`
38
+ };
39
+ }
30
40
  switch (input.action) {
31
41
  case void 0:
32
42
  case "install":
@@ -169,10 +179,7 @@ function listSkills(cwd) {
169
179
  }
170
180
  function resolveTargets(agents) {
171
181
  if (agents.length === 0) return Object.values(AGENT_FOLDERS);
172
- return agents.map((agent) => {
173
- const key = agent === "agent" ? "agents" : agent;
174
- return AGENT_FOLDERS[key] ?? `.${key}/skills`;
175
- });
182
+ return agents.map((agent) => AGENT_FOLDERS[agent === "agent" ? "agents" : agent] ?? ".agents/skills");
176
183
  }
177
184
  function resolveSkillsRoot(cwd, bundled) {
178
185
  try {
@@ -0,0 +1,51 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { t as checkFlag } from "./flags-C3DktBDY.js";
3
+ import { r as pick, t as CANCELLED } from "./prompt-DfZLJLIn.js";
4
+ import { n as detectedAgents, r as runSkills, t as SKILL_AGENTS } from "./skills-B6lVdD_W.js";
5
+ //#region src/cli/commands/skills.ts
6
+ const forFlag = { for: {
7
+ type: "string",
8
+ repeatable: true,
9
+ description: "Agent folders to write: agents, claude or cursor",
10
+ valueHint: "name",
11
+ complete: () => Object.keys(SKILL_AGENTS)
12
+ } };
13
+ async function installTo(ctx, action, clients, check) {
14
+ let agents = clients;
15
+ if (ctx.interactive && !ctx.yes && !check && agents.length === 0) {
16
+ const detected = detectedAgents(ctx.cwd);
17
+ const picked = await pick("Which agents should get the PermDock skills?", Object.entries(SKILL_AGENTS).map(([value, hint]) => ({
18
+ value,
19
+ hint
20
+ })), detected.length > 0 ? detected : Object.keys(SKILL_AGENTS));
21
+ if (picked === void 0) return CANCELLED;
22
+ agents = picked;
23
+ }
24
+ return runSkills({
25
+ cwd: ctx.cwd,
26
+ action,
27
+ agents,
28
+ check
29
+ });
30
+ }
31
+ const install = defineLeaf({
32
+ flags: {
33
+ ...forFlag,
34
+ ...checkFlag
35
+ },
36
+ run: (ctx, { flags }) => installTo(ctx, "install", flags.for, flags.check)
37
+ });
38
+ const update = defineLeaf({
39
+ flags: { ...forFlag },
40
+ run: (ctx, { flags }) => installTo(ctx, "update", flags.for, false)
41
+ });
42
+ const list = defineLeaf({
43
+ flags: {},
44
+ run: (ctx) => runSkills({
45
+ cwd: ctx.cwd,
46
+ action: "list",
47
+ agents: []
48
+ })
49
+ });
50
+ //#endregion
51
+ export { install, list, update };
@@ -0,0 +1,269 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
+ import { c as isConditionRef, i as resolveConditionRef } from "./refs-K6eWUJ0H.js";
5
+ import { l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
6
+ import { d as scopeList } from "./scopes-CUPSjo9q.js";
7
+ import { _ as listPlans, v as listRoles } from "./grantee-hxrUsbpM.js";
8
+ import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
9
+ import { m as tenantsOf } from "./tenancy-DN2QAx9z.js";
10
+ import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
+ //#region src/conditions/bind.ts
12
+ function isPrimitive(value) {
13
+ return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
14
+ }
15
+ const ALWAYS = {
16
+ op: "eq",
17
+ field: "_",
18
+ value: true
19
+ };
20
+ const NEVER = {
21
+ op: "or",
22
+ conditions: []
23
+ };
24
+ function bindValue(value, subject, only) {
25
+ if (isConditionRef(value) && only !== void 0 && !only(value.ref)) return value;
26
+ if (isConditionRef(value)) {
27
+ const resolved = resolveConditionRef(value.ref, subject);
28
+ if (Array.isArray(resolved)) return resolved.filter((item) => isPrimitive(item));
29
+ return isPrimitive(resolved) ? resolved : null;
30
+ }
31
+ if (Array.isArray(value)) return value.map((item) => bindValue(item, subject, only));
32
+ return value;
33
+ }
34
+ function bindArg(arg, subject, only) {
35
+ return arg !== null && typeof arg === "object" && "field" in arg && !isConditionRef(arg) ? arg : bindValue(arg, subject, only);
36
+ }
37
+ /**
38
+ * Replaces every `principal.*` / `context.*` ref with the subject's value, and
39
+ * a `liveSession` node with a constant, so a `where()` result compiles the
40
+ * same without the subject. A ref the subject
41
+ * does not hold binds to `null` (or `[]` in a list), which never matches, as
42
+ * in `evaluateCondition`. With `only`, refs it rejects stay refs.
43
+ */
44
+ function bindConditionRefs(condition, subject, only) {
45
+ switch (condition.op) {
46
+ case "and":
47
+ case "or": return {
48
+ op: condition.op,
49
+ conditions: condition.conditions.map((child) => bindConditionRefs(child, subject, only))
50
+ };
51
+ case "not": return {
52
+ op: "not",
53
+ condition: bindConditionRefs(condition.condition, subject, only)
54
+ };
55
+ case "in":
56
+ case "notIn": {
57
+ const value = condition.value;
58
+ if (isConditionRef(value) && only !== void 0 && !only(value.ref)) return condition;
59
+ const bound = bindValue(value, subject, only);
60
+ return {
61
+ ...condition,
62
+ value: Array.isArray(bound) ? bound : []
63
+ };
64
+ }
65
+ case "eq":
66
+ case "ne":
67
+ case "gt":
68
+ case "gte":
69
+ case "lt":
70
+ case "lte":
71
+ case "contains": return {
72
+ ...condition,
73
+ value: bindValue(condition.value, subject, only)
74
+ };
75
+ case "sqlFunction": return {
76
+ ...condition,
77
+ args: condition.args.map((arg) => bindArg(arg, subject, only)),
78
+ twin: bindConditionRefs(condition.twin, subject, only)
79
+ };
80
+ case "liveSession": return subject.liveSession === true ? ALWAYS : NEVER;
81
+ case "isNull":
82
+ case "memberOf":
83
+ case "related":
84
+ case "opaque": return condition;
85
+ default: return condition;
86
+ }
87
+ }
88
+ //#endregion
89
+ //#region src/core/snapshot.ts
90
+ function plainPermission(leaf) {
91
+ return {
92
+ key: leaf.key,
93
+ scope: leaf.scope,
94
+ resource: leaf.resource,
95
+ action: leaf.action,
96
+ meta: leaf.meta,
97
+ kind: leaf.kind
98
+ };
99
+ }
100
+ function plainRole(leaf) {
101
+ return compact({
102
+ key: leaf.key,
103
+ on: leaf.on,
104
+ assignable: leaf.assignable,
105
+ meta: leaf.meta,
106
+ kind: leaf.kind
107
+ });
108
+ }
109
+ function plainPlan(leaf) {
110
+ return {
111
+ key: leaf.key,
112
+ meta: leaf.meta,
113
+ kind: leaf.kind
114
+ };
115
+ }
116
+ function snapshotGrant(grant, membership) {
117
+ const scope = grant.scope === "global" ? void 0 : typeof grant.scope === "string" ? grant.scope : { resource: grant.scope.resource };
118
+ const entry = compact({
119
+ permission: grant.permission.key,
120
+ effect: grant.effect,
121
+ role: grant.role,
122
+ to: grant.to,
123
+ where: grant.portable ? grant.where : void 0,
124
+ check: grant.portable ? grant.check : void 0,
125
+ approval: grant.approval,
126
+ scope,
127
+ membership,
128
+ portable: grant.portable ? void 0 : false,
129
+ fields: grant.fields,
130
+ validity: wireValidity(grant.validity),
131
+ name: grant.name,
132
+ meta: grant.meta,
133
+ obligations: grant.obligations
134
+ });
135
+ return freezeDeep(entry);
136
+ }
137
+ const CARRIED = /* @__PURE__ */ new Set([
138
+ "id",
139
+ "roles",
140
+ "plans",
141
+ "tenant",
142
+ "memberships"
143
+ ]);
144
+ /** Principal refs the snapshot principal does not carry (`claims`, `teamIds`, …) are bound to the subject's values. */
145
+ function isClaimRef(ref) {
146
+ const [root, head] = ref.split(".", 2);
147
+ return root === "principal" && !CARRIED.has(String(head));
148
+ }
149
+ function bindClaims(grant, subject) {
150
+ if (grant.where === void 0 && grant.check === void 0) return grant;
151
+ return freezeDeep(compact({
152
+ ...grant,
153
+ where: grant.where === void 0 ? void 0 : bindConditionRefs(grant.where, subject, isClaimRef),
154
+ check: grant.check === void 0 ? void 0 : bindConditionRefs(grant.check, subject, isClaimRef)
155
+ }));
156
+ }
157
+ function notEntitledOf(items) {
158
+ const seen = /* @__PURE__ */ new Map();
159
+ for (const { grant } of items) {
160
+ const key = `${grant.permission.key}\u0000${grant.role ?? ""}`;
161
+ if (!seen.has(key)) seen.set(key, {
162
+ permission: grant.permission.key,
163
+ role: grant.role,
164
+ to: grant.to
165
+ });
166
+ }
167
+ return seen.size === 0 ? void 0 : [...seen.values()];
168
+ }
169
+ function buildSnapshot(input) {
170
+ const now = input.now ?? nowSeconds();
171
+ const principal = input.subject.principal;
172
+ const allTenants = tenantsOf(principal, scopeList(input.scopes));
173
+ const tenants = input.tenants === "all" ? allTenants : principal?.tenant === void 0 ? [] : [principal.tenant];
174
+ const include = input.include;
175
+ const included = (permission) => include === void 0 || include.length === 0 || include.some((prefix) => permission.key === prefix || permission.key.startsWith(`${prefix}.`) || permission.resource === prefix);
176
+ const grants = input.grants.filter((item) => included(item.grant.permission)).map((item) => bindClaims(snapshotGrant(item.grant, item.membership), input.subject));
177
+ const ids = {};
178
+ for (const item of input.grants) {
179
+ const name = item.grant.permission.resource;
180
+ const field = input.idOf?.(name);
181
+ if (field !== void 0 && field !== "id" && included(item.grant.permission)) ids[name] = field;
182
+ }
183
+ const assignableFor = input.assignable;
184
+ const assignable = assignableFor === void 0 ? [] : tenants.map((tenant) => {
185
+ const entry = assignableFor(tenant);
186
+ const permissions = entry.permissions.filter(included).map(plainPermission);
187
+ if (entry.levels === void 0) return {
188
+ ...entry,
189
+ permissions
190
+ };
191
+ const keys = new Set(permissions.map((leaf) => leaf.key));
192
+ const levels = Object.fromEntries(Object.entries(entry.levels).filter(([key]) => keys.has(key)));
193
+ return compact({
194
+ ...entry,
195
+ permissions,
196
+ levels: Object.keys(levels).length === 0 ? void 0 : levels
197
+ });
198
+ });
199
+ return freezeDeep(compact({
200
+ v: 1,
201
+ issuedAt: rfc3339(now),
202
+ subject: compact({
203
+ principal: principal === null ? null : compact({
204
+ id: principal.id,
205
+ roles: principal.roles ?? [],
206
+ plans: principal.plans,
207
+ tenant: principal.tenant,
208
+ memberships: principal.memberships
209
+ }),
210
+ delegation: toWireDelegation(snapshotDelegation(input.subject, input.delegated !== void 0)),
211
+ context: input.subject.context
212
+ }),
213
+ roles: input.roles,
214
+ audiences: input.audiences,
215
+ grants,
216
+ tenants,
217
+ include,
218
+ simulated: input.simulated === true ? true : void 0,
219
+ expiresAt: input.subject.expiresAt === void 0 ? void 0 : rfc3339(input.subject.expiresAt),
220
+ scopes: input.scopes,
221
+ ids: Object.keys(ids).length === 0 ? void 0 : ids,
222
+ assignable: assignable.length > 0 ? assignable : void 0,
223
+ delegated: input.delegated === void 0 ? void 0 : [...input.delegated].toSorted(),
224
+ notEntitled: notEntitledOf((input.notEntitled ?? []).filter((item) => included(item.grant.permission))),
225
+ vocabulary: input.vocabulary === void 0 ? void 0 : compact({
226
+ roles: listRoles(input.vocabulary.roles).length === 0 ? void 0 : Object.fromEntries(listRoles(input.vocabulary.roles).map((leaf) => [leaf.key, plainRole(leaf)])),
227
+ plans: listPlans(input.vocabulary.plans).length === 0 ? void 0 : Object.fromEntries(listPlans(input.vocabulary.plans).map((leaf) => [leaf.key, plainPlan(leaf)]))
228
+ })
229
+ }));
230
+ }
231
+ /**
232
+ * The token delegation as the client sees it. An actor with no token
233
+ * delegation gets an empty `scopes` list so the client ceiling agrees with
234
+ * `no-delegation`, unless a policy delegation applies (`delegated`), which
235
+ * then is the ceiling.
236
+ */
237
+ function snapshotDelegation(subject, delegated) {
238
+ const delegation = subject.delegation;
239
+ if (subject.actor === void 0 || delegated) return delegation;
240
+ if (delegation?.scopes === void 0 && delegation?.authorizationDetails === void 0 && delegation?.access === void 0) return {
241
+ ...delegation,
242
+ scopes: []
243
+ };
244
+ return delegation;
245
+ }
246
+ function rejectUnsafe(value, path) {
247
+ if (value === null || typeof value !== "object") return;
248
+ if (Array.isArray(value)) {
249
+ for (const [index, item] of value.entries()) rejectUnsafe(item, `${path}[${index}]`);
250
+ return;
251
+ }
252
+ for (const key of Object.keys(value)) {
253
+ if (isForbiddenKey(key)) throw new Error(`PermDock: unsafe snapshot key '${key}' at ${path}`);
254
+ rejectUnsafe(value[key], `${path}.${key}`);
255
+ }
256
+ }
257
+ function parseSnapshot(json) {
258
+ const input = typeof json === "string" ? JSON.parse(json) : json;
259
+ if (input === null || typeof input !== "object" || Array.isArray(input)) throw new Error("PermDock: snapshot must be an object");
260
+ const value = typeof json === "string" || Object.isFrozen(input) ? input : JSON.parse(JSON.stringify(input));
261
+ rejectUnsafe(value, "$");
262
+ const record = value;
263
+ const version = record["v"];
264
+ if (version !== 1) throw new Error(`PermDock: unsupported snapshot version '${String(version)}'`);
265
+ if (!isRfc3339(record["issuedAt"]) || record["expiresAt"] !== void 0 && !isRfc3339(record["expiresAt"])) throw new Error("PermDock: snapshot times must be RFC 3339");
266
+ return freezeDeep(value);
267
+ }
268
+ //#endregion
269
+ export { bindConditionRefs as i, parseSnapshot as n, snapshotGrant as r, buildSnapshot as t };
@@ -1,5 +1,10 @@
1
- import { n as payloadDigest } from "./token-Bx9qy30p.js";
1
+ import { g as secondsOf, p as nowSeconds } from "./time-DkWjdL98.js";
2
+ import { n as payloadDigest } from "./token-BLZcjQgt.js";
2
3
  //#region src/core/snapshot-cache.ts
4
+ /** Seconds since the epoch of a NumericDate or an RFC 3339 instant. */
5
+ function epochSeconds(value) {
6
+ return typeof value === "number" ? value : secondsOf(value);
7
+ }
3
8
  /**
4
9
  * `{ stale }` in seconds: `max` when the value never expires, otherwise the seconds left, clamped
5
10
  * to `[min, max]`. A value with less than `min` seconds left gets its real remainder, so Next.js
@@ -8,10 +13,11 @@ import { n as payloadDigest } from "./token-Bx9qy30p.js";
8
13
  function cacheLifeFor(value, options = {}) {
9
14
  const min = options.min ?? 30;
10
15
  const max = Math.max(options.max ?? 300, min);
11
- const expiresAt = value?.expiresAt;
12
- if (expiresAt === void 0 || expiresAt === null) return { stale: max };
13
- const issuedAt = value?.issuedAt !== void 0 && value.issuedAt > 0 ? value.issuedAt : void 0;
14
- const now = options.now ?? issuedAt ?? Math.floor(Date.now() / 1e3);
16
+ const expiresAt = epochSeconds(value?.expiresAt);
17
+ if (expiresAt === void 0) return { stale: max };
18
+ const issued = epochSeconds(value?.issuedAt);
19
+ const issuedAt = issued !== void 0 && issued > 0 ? issued : void 0;
20
+ const now = options.now === void 0 ? issuedAt ?? nowSeconds() : nowSeconds(options.now);
15
21
  const remaining = Math.floor(expiresAt - now);
16
22
  if (remaining < min) return { stale: Math.max(0, remaining) };
17
23
  return { stale: Math.min(max, remaining) };
@@ -1,12 +1,12 @@
1
- import { an as Snapshot } from "./policy-types-sp9P1iIV.js";
1
+ import { Rt as Instant, Vt as Snapshot } from "./policy-types-n0uRTsW8.js";
2
2
  //#region src/core/snapshot-cache.d.ts
3
3
  type CacheLifeForOptions = {
4
4
  /** Lower bound in seconds. Next.js includes a private entry in per-link prefetches from 30. */
5
5
  readonly min?: number;
6
6
  /** Upper bound in seconds. Next.js keeps a per-session App Shell entry from 300. */
7
7
  readonly max?: number;
8
- /** Seconds since the epoch; defaults to the snapshot's `issuedAt`, then the clock. */
9
- readonly now?: number;
8
+ /** Defaults to the snapshot's `issuedAt`, then the clock. */
9
+ readonly now?: Instant;
10
10
  };
11
11
  /**
12
12
  * `{ stale }` in seconds: `max` when the value never expires, otherwise the seconds left, clamped
@@ -14,8 +14,10 @@ type CacheLifeForOptions = {
14
14
  * leaves it out of prefetches and an HTTP cache does not serve it past `expiresAt`.
15
15
  */
16
16
  declare function cacheLifeFor(value: {
17
- readonly expiresAt?: number | null;
18
- readonly issuedAt?: number;
17
+ /** RFC 3339, or a NumericDate. */
18
+ readonly expiresAt?: number | string | null;
19
+ /** RFC 3339, or a NumericDate. */
20
+ readonly issuedAt?: number | string;
19
21
  } | null, options?: CacheLifeForOptions): {
20
22
  readonly stale: number;
21
23
  };
@@ -1,11 +1,10 @@
1
- import { Dr as Membership, an as Snapshot, ir as Decision, rr as ApprovalRequiredDecision, ur as GrantedDecision, ut as TokenVerifier } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { r as Role } from "../vocabulary-hhEFLFoL.js";
4
- import { n as requiredPlans } from "../problem-details-rIIo8B2C.js";
5
- import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-C3ldA9os.js";
1
+ import { Mn as ApprovalRequiredDecision, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, nr as Membership, zn as GrantedDecision } from "../policy-types-n0uRTsW8.js";
2
+ import { r as Role, w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { n as requiredPlans } from "../problem-details-B45V5d2b.js";
4
+ import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-B5qgDvEW.js";
6
5
  import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
7
- import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
8
- import { a as ClientPermDock, c as PermissionSet, d as SubjectView, f as TenantView, i as ApprovalState, l as PermissionState, o as ClientStatus, p as UseRolesOptions, r as ApprovalHandle, s as FilterResult, u as ProviderOptionsBase } from "../store-9KO4BlkB.js";
6
+ import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
7
+ import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle, u as ProviderOptionsBase } from "../types-B3_ooZgZ.js";
9
8
  import { Accessor, Accessor as Accessor$1, JSX } from "solid-js";
10
9
  //#region src/solid/types.d.ts
11
10
  /** Structural `JSX.Element`: text, a DOM node or a list of children. */
@@ -31,7 +30,7 @@ type PermDockProviderProps = ProviderOptionsBase & {
31
30
  /** Provider-wide content for the `<Protected>` slots a component leaves out. */
32
31
  type PermDockDefaults = {
33
32
  readonly pending?: SolidChild;
34
- readonly fallback?: SolidChild | ((decision: Decision) => SolidChild);
33
+ readonly denied?: SolidChild | ((decision: Decision) => SolidChild);
35
34
  readonly approval?: SolidChild | ((decision: ApprovalRequiredDecision) => SolidChild);
36
35
  };
37
36
  type PermissionBoundaryProps = {
@@ -46,8 +45,8 @@ type ProtectedProps = {
46
45
  readonly data?: unknown;
47
46
  readonly tenant?: string;
48
47
  readonly pending?: SolidChild;
49
- readonly fallback?: SolidChild | ((decision: Decision) => SolidChild);
50
- /** Rendered for an approval-required decision; defaults to `fallback`. */
48
+ readonly denied?: SolidChild | ((decision: Decision) => SolidChild);
49
+ /** Rendered for an approval-required decision; defaults to `denied`. */
51
50
  readonly approval?: SolidChild | ((decision: ApprovalRequiredDecision) => SolidChild);
52
51
  readonly children: SolidChild | ((decision: GrantedDecision) => SolidChild);
53
52
  };
@@ -59,7 +58,7 @@ export declare function usePermissions(permissions: Accessor<readonly Permission
59
58
  export declare function useFilter<T>(permission: Permission<string, T, "instance">, rows: Accessor<readonly T[]>): Accessor<FilterResult<T>>;
60
59
  export declare function useTenant(): Accessor<TenantView>;
61
60
  export declare function useMemberships(): Accessor<readonly Membership[]>;
62
- export declare function useRoles(options?: Accessor<UseRolesOptions>): Accessor<{
61
+ export declare function useRoles(options?: Accessor<RolesOptions>): Accessor<{
63
62
  readonly roles: readonly Role[];
64
63
  }>;
65
64
  export declare function useAssignableRoles(): Accessor<readonly Role[]>;
@@ -90,4 +89,4 @@ export declare function Protected(props: ProtectedProps): JSX.Element;
90
89
  //#region src/solid/provider.d.ts
91
90
  export declare function PermDockProvider(props: PermDockProviderProps): JSX.Element;
92
91
  //#endregion
93
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SolidChild, type SubjectView, type TenantView, type UseRolesOptions, approvalHeaders, describe, requiredPlans };
92
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SolidChild, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans };
@@ -1,11 +1,11 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { r as requiredPlans } from "../problem-details-DECUnXAn.js";
3
- import { t as describe } from "../describe-Cgkp7eP0.js";
4
- import { t as approvalHeaders } from "../headers-BZSDieNT.js";
5
- import { i as isPromiseLike } from "../store-options-CbUHDoSe.js";
6
- import { a as permissionSet, c as scopedTenant, d as tenantView, i as livePermDock, l as slotContent, n as describeWith, o as protectedView, r as filterResult, s as rolesView, t as approvalHandle, u as subjectView } from "../views-CJsrBS1f.js";
2
+ import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
3
+ import { t as describe } from "../describe-BybMRY7A.js";
7
4
  import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
8
- import { n as switchTenant, t as providerStore } from "../provider-store-Ctt-81Ni.js";
5
+ import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
6
+ import { i as isPromiseLike } from "../store-options-u0ycEe8s.js";
7
+ import { n as switchTenant, t as providerStore } from "../provider-store-DM6DNcta.js";
8
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, l as scopedTenant, n as describeWith, o as permissionSet, r as filterResult, s as protectedView, t as approvalHandle, u as slotContent } from "../views-DTIIO-oQ.js";
9
9
  import { ErrorBoundary, createComponent, createComputed, createContext, createMemo, createSignal, getOwner, on, onCleanup, useContext } from "solid-js";
10
10
  //#region src/solid/context.ts
11
11
  const PermDockContext = createContext(void 0);
@@ -138,7 +138,7 @@ function Protected(props) {
138
138
  const current = view();
139
139
  switch (current.slot) {
140
140
  case "pending": return slotContent("pending", props, ui.defaults) ?? null;
141
- case "fallback": return content(slotContent("fallback", props, ui.defaults), current.decision);
141
+ case "denied": return content(slotContent("denied", props, ui.defaults), current.decision);
142
142
  case "approval": return content(slotContent("approval", props, ui.defaults), current.decision);
143
143
  case "default": return typeof props.children === "function" ? props.children(current.decision) : props.children;
144
144
  default: return current;
@@ -0,0 +1,52 @@
1
+ import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
+ import { a as OperationInput, t as Operation } from "../operations-X0VM7F3m.js";
4
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
+ import { a as ProtectTarget, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-Dw0MTS3D.js";
7
+ import { APIEvent, FetchEvent } from "@solidjs/start/server";
8
+ //#region src/solid-start/create.d.ts
9
+ /** The h3 event under every SolidStart request; `subject` and `scope` read it. */
10
+ type SolidStartNativeEvent = FetchEvent["nativeEvent"];
11
+ /** An h3 middleware for `createMiddleware([...])` in `src/middleware.ts`. */
12
+ type SolidStartMiddleware = (event: SolidStartNativeEvent, next: () => unknown) => Promise<unknown>;
13
+ type SolidStartPermDockOptions<TUser = unknown> = FetchAdapterOptions<SolidStartNativeEvent, TUser>;
14
+ /** What the adapter sets on `event.locals`. */
15
+ type SolidStartPermDockLocals<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
16
+ readonly permdock: PermDock<V>;
17
+ readonly permdockData: TData;
18
+ };
19
+ /** The event a wrapped API route receives: its own `APIEvent` with typed `locals`. */
20
+ type SolidStartPermDockEvent<TEvent extends FetchEvent = APIEvent, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TEvent & {
21
+ readonly locals: SolidStartPermDockLocals<TData, V>;
22
+ };
23
+ /** Wraps an API route handler. */
24
+ type SolidStartGuarded<TData, V extends PolicyVocabulary = PolicyVocabulary> = <TEvent extends FetchEvent = APIEvent, R = Response>(handler: (event: SolidStartPermDockEvent<TEvent, TData, V>) => R | Promise<R>) => (event: TEvent) => Promise<R | Response>;
25
+ type SolidStartProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
26
+ <T = unknown>(permission: Permission | null, data?: ContextReader<APIEvent, T | null | undefined>, protectOptions?: ProtectOptions): SolidStartGuarded<NonNullable<T>, V>;
27
+ <TOperation extends Operation>(operation: TOperation, input?: ContextReader<APIEvent, OperationInput<TOperation>>, protectOptions?: ProtectOptions): SolidStartGuarded<unknown, V>;
28
+ };
29
+ /** The decision endpoint, one API route handler per method. */
30
+ type SolidStartPermDockHandlers = {
31
+ readonly GET: (event: FetchEvent) => Promise<Response>;
32
+ readonly POST: (event: FetchEvent) => Promise<Response>;
33
+ };
34
+ type SolidStartPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
35
+ /** Sets `event.context.permdock` on the h3 event; a bad Web Bot Auth signature is a `401`. */
36
+ readonly middleware: () => SolidStartMiddleware;
37
+ /** `export const DELETE = protect(permissions.post.delete, loadPost)(handler)`. */
38
+ readonly protect: SolidStartProtect<V>;
39
+ /** Types `event.locals.permdock` for an API route and answers a thrown PermDock error with Problem Details. */
40
+ readonly withPermDock: SolidStartGuarded<unknown, V>;
41
+ /** The instance for an API route, or a server function through `getRequestEvent()`. */
42
+ readonly getPermDock: (event: FetchEvent) => Promise<PermDock<V>>;
43
+ /** The snapshot a route `query` returns for `permdock/solid`. */
44
+ readonly getSnapshot: (event: FetchEvent, query?: SnapshotQuery) => Promise<Snapshot>;
45
+ readonly connection: (event: FetchEvent, connectionOptions?: ConnectionOptions) => Promise<Connection>;
46
+ /** `export const { GET, POST } = permdockHandler()` in `src/routes/api/permdock.ts`. */
47
+ readonly permdockHandler: () => SolidStartPermDockHandlers;
48
+ readonly openapi: OpenApiHooks;
49
+ };
50
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: SolidStartPermDockOptions<TUser>): SolidStartPermDock<V>;
51
+ //#endregion
52
+ export { type ContextReader, InvalidSignatureError, type ProtectTarget, type SolidStartGuarded, type SolidStartMiddleware, type SolidStartNativeEvent, type SolidStartPermDock, type SolidStartPermDockEvent, type SolidStartPermDockHandlers, type SolidStartPermDockLocals, type SolidStartPermDockOptions, type SolidStartProtect, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,49 @@
1
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
2
+ import { i as decorate } from "../bind-CAvgUuKs.js";
3
+ import { n as guardedRoute, t as fetchAdapter } from "../fetch-adapter-DD_gfmrC.js";
4
+ //#region src/solid-start/create.ts
5
+ /**
6
+ * `event.locals`. Its type, `App.RequestEventLocals`, is declared by
7
+ * `@solidjs/start/env`, which only an app's own `tsconfig` loads.
8
+ */
9
+ function localsOf(event) {
10
+ return Reflect.get(event, "locals");
11
+ }
12
+ const route = {
13
+ context: (event) => event.nativeEvent,
14
+ locals: localsOf
15
+ };
16
+ function createPermDock(policy, options) {
17
+ const adapter = fetchAdapter(policy, options, "solid-start", (event) => event.req);
18
+ const middleware = () => async (event, next) => {
19
+ const attached = await adapter.ensure(event.context, event);
20
+ if (!attached.ok) return attached.response;
21
+ return adapter.mapErrors(event, next);
22
+ };
23
+ const protect = ((target, data, protectOptions) => guardedRoute(adapter, route, target, data, protectOptions));
24
+ const withPermDock = (handler) => async (event) => {
25
+ const attached = await adapter.ensure(event.nativeEvent.context, event.nativeEvent);
26
+ if (!attached.ok) return attached.response;
27
+ decorate(localsOf(event), attached.permdock);
28
+ return adapter.mapErrors(event.nativeEvent, () => handler(event));
29
+ };
30
+ const handlers = () => {
31
+ const { GET, POST } = adapter.handlers();
32
+ return {
33
+ GET: (event) => GET(event.nativeEvent),
34
+ POST: (event) => POST(event.nativeEvent)
35
+ };
36
+ };
37
+ return {
38
+ middleware,
39
+ protect,
40
+ withPermDock,
41
+ getPermDock: (event) => adapter.getPermDock(event.nativeEvent),
42
+ getSnapshot: (event, query) => adapter.getSnapshot(event.nativeEvent, query),
43
+ connection: (event, connectionOptions) => adapter.connection(event.nativeEvent, connectionOptions),
44
+ permdockHandler: handlers,
45
+ openapi: adapter.kernel.openapi
46
+ };
47
+ }
48
+ //#endregion
49
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -1,6 +1,6 @@
1
- import { Z as MembershipSource } from "./policy-types-sp9P1iIV.js";
2
- import { n as RoleThrough, y as SupabaseSuspension } from "./types-CqrjB9o6.js";
3
- import { o as SupabaseManifestMembership } from "./manifest-uDS9y5de.js";
1
+ import { et as MembershipSource } from "./policy-types-n0uRTsW8.js";
2
+ import { n as RoleThrough, y as SupabaseSuspension } from "./types-BzzaHxt3.js";
3
+ import { o as SupabaseManifestMembership } from "./manifest-mx5ghSFM.js";
4
4
  //#region src/supabase/roles.d.ts
5
5
  /** A roles table a role column references, by `schema.table`. */
6
6
  type RoleKeys = {
@@ -163,26 +163,20 @@ type SqlMembershipSource = MembershipSource & {
163
163
  type SupabasePostgres = {
164
164
  readonly queryRaw: (text: string, params?: unknown[]) => Promise<readonly Record<string, unknown>[]>;
165
165
  };
166
- /**
167
- * `ctx.postgres` (from `withPostgresClient`) or `ctx.postgresAdmin` as a
168
- * `SqlQuery` for `fromTable`, `fromJunction` and `supabaseApprovalStore`.
169
- * `ctx.postgres` runs as the caller under RLS, so the membership tables must
170
- * be readable by `authenticated`; `ctx.postgresAdmin` bypasses RLS.
171
- */
172
- declare function fromSupabasePostgres(postgres: SupabasePostgres): SqlQuery;
166
+ declare function supabasePostgresQuery(postgres: SupabasePostgres): SqlQuery;
173
167
  /**
174
168
  * Memberships from one table holding every scope: a row per user, scope,
175
169
  * instance and role (`user_id, scope, scope_id, role`), with optional
176
170
  * `within`, `via`, expiry, owner and seat columns. Rows of the same instance
177
171
  * merge into one membership.
178
172
  */
179
- declare function fromTable(options: MembershipTableOptions): SqlMembershipSource;
173
+ declare function tableMembershipSource(options: MembershipTableOptions): SqlMembershipSource;
180
174
  /**
181
175
  * Memberships from a table of one scope (`customer_contacts`): every row is a
182
176
  * membership of `scope`, with roles from a column or fixed (`['contact']`), a
183
177
  * fixed `via`, and ancestor ids from `within` columns.
184
178
  */
185
- declare function fromJunction(options: MembershipJunctionOptions): SqlMembershipSource;
179
+ declare function junctionMembershipSource(options: MembershipJunctionOptions): SqlMembershipSource;
186
180
  declare const AUTHZ_VERSION_TABLE = "permdock_authz_version";
187
181
  /**
188
182
  * Reads the authorization version `permdock supabase hook generate` keeps in
@@ -193,4 +187,4 @@ declare function authzVersion(options: {
193
187
  readonly schema?: string;
194
188
  }): NonNullable<MembershipSource["version"]>;
195
189
  //#endregion
196
- export { MembershipTableOptions as a, SupabasePostgres as c, fromSupabasePostgres as d, fromTable as f, MembershipSql as i, authzVersion as l, MembershipHolders as n, SqlMembershipSource as o, MembershipJunctionOptions as r, SqlQuery as s, AUTHZ_VERSION_TABLE as t, fromJunction as u };
190
+ export { MembershipTableOptions as a, SupabasePostgres as c, supabasePostgresQuery as d, tableMembershipSource as f, MembershipSql as i, authzVersion as l, MembershipHolders as n, SqlMembershipSource as o, MembershipJunctionOptions as r, SqlQuery as s, AUTHZ_VERSION_TABLE as t, junctionMembershipSource as u };