permdock 0.6.0 → 0.8.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 (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,17 +1,21 @@
1
1
  import { n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { a as ownRecord } from "./paths-DXSHAMIa.js";
4
- import { a as isId, r as idList } from "./expiry-D4_YKRKD.js";
5
- import { n as internalsOf } from "./internals-Dk8A8fX3.js";
6
- import { c as listPermissions, h as formerKeys } from "./permission-registry-Br4jSNVi.js";
7
- import { g as secondsOf, l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
8
- import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
9
- import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
10
- import { n as coveredByDelegation } from "./delegation-j6-rc37o.js";
11
- import { o as flattenGrantee } from "./grantee-hxrUsbpM.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { a as ownRecord } from "./paths-CUvURzHp.js";
4
+ import { a as isId, r as idList } from "./expiry-6XByK0dm.js";
5
+ import { n as internalsOf } from "./internals-B3IgHrvo.js";
6
+ import { c as listPermissions, h as formerKeys } from "./permission-registry-B8tYxPIt.js";
7
+ import { g as secondsOf, l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-nR1JesoH.js";
8
+ import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
9
+ import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
10
+ import { n as coveredByDelegation } from "./delegation-CDB6_keF.js";
11
+ import { o as flattenGrantee } from "./grantee-Dke-9rd1.js";
12
12
  import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
13
13
  //#region src/core/credential.ts
14
- /** A feed id: lowercase, so a mail system that lowercases a local part still matches. At most 16 characters, so `pdfeed_<id>_<secret>` fits an email local part. */
14
+ /**
15
+ * A feed id: lowercase, so a mail system that lowercases a local part still
16
+ * matches. At most 16 characters, so `pdfeed_<id>_<secret>` fits an email local
17
+ * part.
18
+ */
15
19
  function isFeedId(value) {
16
20
  return /^[a-z0-9-]{1,16}$/u.test(value);
17
21
  }
@@ -53,10 +57,10 @@ function parsePermissions(value) {
53
57
  return out;
54
58
  }
55
59
  /**
56
- * Validates an untrusted credential record and returns a frozen copy with
57
- * only the v1 fields, or `undefined`. Unknown fields are dropped; a wrong
58
- * type in a known field, a service credential without `tenant` and `roles`,
59
- * or a user credential with `roles`, rejects the whole record.
60
+ * Validates an untrusted credential record and returns a frozen copy with only
61
+ * the v1 fields, or `undefined`. Unknown fields are dropped; a wrong type in a
62
+ * known field, a service credential without `tenant` and `roles`, or a user
63
+ * credential with `roles`, rejects the whole record.
60
64
  */
61
65
  function parseCredential(input) {
62
66
  const value = ownRecord(input);
@@ -111,9 +115,9 @@ function leafByKey(tree) {
111
115
  }
112
116
  /**
113
117
  * The delegation a credential narrows its principal to: OAuth scopes for
114
- * permissions on every instance, one RFC 9396 entry per id otherwise. A key
115
- * the definitions no longer declare is dropped, so a credential whose every
116
- * key is gone delegates nothing and every check is denied.
118
+ * permissions on every instance, one RFC 9396 entry per id otherwise. A key the
119
+ * definitions no longer declare is dropped, so a credential whose every key is
120
+ * gone delegates nothing and every check is denied.
117
121
  */
118
122
  function credentialDelegation(credential, permissions) {
119
123
  const leaves = leafByKey(permissions);
@@ -138,14 +142,14 @@ function credentialDelegation(credential, permissions) {
138
142
  });
139
143
  }
140
144
  /**
141
- * The subject a verified credential acts as. A `user` credential is its
142
- * owner, passed live as `owner` (roles and memberships as of this request),
143
- * with the credential's delegation: every check is the owner's rights
144
- * intersected with the key's. One that names a `tenant` makes it the active
145
- * tenant, and `getPermDock` then keeps only the owner's memberships
146
- * inside it and no global role. A `service` credential is a `service`
147
- * principal whose only membership is `roles` in `tenant`. An owner whose id
148
- * is not the credential's `principal`, or who is not a user, is anonymous.
145
+ * The subject a verified credential acts as. A `user` credential is its owner,
146
+ * passed live as `owner` (roles and memberships as of this request), with the
147
+ * credential's delegation: every check is the owner's rights intersected with
148
+ * the key's. One that names a `tenant` makes it the active tenant, and
149
+ * `getPermDock` then keeps only the owner's memberships inside it and no global
150
+ * role. A `service` credential is a `service` principal whose only membership
151
+ * is `roles` in `tenant`. An owner whose id is not the credential's
152
+ * `principal`, or who is not a user, is anonymous.
149
153
  */
150
154
  function credentialSubject(credential, options) {
151
155
  const delegation = credentialDelegation(credential, options.permissions);
@@ -361,25 +365,24 @@ function credentialTenant(credential, active) {
361
365
  }
362
366
  /**
363
367
  * Decides whether the subject of `permdock` may create the credential in
364
- * `request`. The creator must be a signed-in user or service that is not
365
- * itself a link or a credential; a delegated creator hands out only what its
366
- * delegation covers. A key's tenant must be one the creator is a member of;
367
- * a service key's roles among the creator's `assignableRoles` there and its
368
+ * `request`. The creator must be a signed-in user or service that is not itself
369
+ * a link or a credential; a delegated creator hands out only what its
370
+ * delegation covers. A key's tenant must be one the creator is a member of; a
371
+ * service key's roles among the creator's `assignableRoles` there and its
368
372
  * permissions within `assignablePermissions` there (`exceeds-creator`). The
369
- * `credentials` policy of the key's tenant (its own, or for a user key
370
- * without one the creator's active tenant) then applies (`credential-policy`; a
373
+ * `credentials` policy of the key's tenant (its own, or for a user key without
374
+ * one the creator's active tenant) then applies (`credential-policy`; a
371
375
  * settings source that throws denies with `rule: 'unavailable'`), and
372
- * `approval` makes the result `approval-required` until `approved` carries
373
- * its token. PermDock never stores the credential; the application does,
374
- * after a `granted` result.
376
+ * `approval` makes the result `approval-required` until `approved` carries its
377
+ * token. PermDock never stores the credential; the application does, after a
378
+ * `granted` result.
375
379
  */
376
380
  /**
377
381
  * Decides whether the subject of `permdock` may create the credential in
378
382
  * `request`: the creator's own reach, the `credentials` policy of the key's
379
- * tenant (the call's `settings`, else the instance's), and `approval`.
380
- * PermDock never stores the credential; the application does, after a
381
- * `granted` result. An instance built from a snapshot denies with
382
- * `unsupported`.
383
+ * tenant (the call's `settings`, else the instance's), and `approval`. PermDock
384
+ * never stores the credential; the application does, after a `granted` result.
385
+ * An instance built from a snapshot denies with `unsupported`.
383
386
  */
384
387
  function decideCredential(permdock, request, options = {}) {
385
388
  const internals = internalsOf(permdock);
@@ -1,4 +1,4 @@
1
- import { n as CliError } from "./errors-CWTY6uih.js";
1
+ import { n as CliError } from "./errors-Vpu6rKHl.js";
2
2
  //#region src/cli/core/io.ts
3
3
  const FRAMES = [
4
4
  "⠋",
@@ -14,8 +14,8 @@ const FRAMES = [
14
14
  ];
15
15
  const FRAME_MS = 80;
16
16
  /**
17
- * A spinner on a terminal stderr; a plain line elsewhere, so logs and CI
18
- * output stay readable. `done` replaces the spinner with a final line.
17
+ * A spinner on a terminal stderr; a plain line elsewhere, so logs and CI output
18
+ * stay readable. `done` replaces the spinner with a final line.
19
19
  */
20
20
  function progressReporter(input) {
21
21
  return (message) => {
@@ -50,13 +50,13 @@ async function readSecret(readStdin) {
50
50
  const URL_PASSWORD = /\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)([^\s@/]+)@/giu;
51
51
  /** `text` with every registered secret and every URL password masked. */
52
52
  function redact(text, secrets) {
53
- let out = text.replace(URL_PASSWORD, "$1***@");
53
+ let out = text.replaceAll(URL_PASSWORD, "$1***@");
54
54
  for (const secret of secrets) if (secret.length >= 4) out = out.replaceAll(secret, "***");
55
55
  return out;
56
56
  }
57
57
  /**
58
- * The secret piped in for `--<flag>-stdin`, when it was passed, registered
59
- * for redaction.
58
+ * The secret piped in for `--<flag>-stdin`, when it was passed, registered for
59
+ * redaction.
60
60
  */
61
61
  async function secretInput(ctx, input) {
62
62
  let value;
@@ -1,3 +1,4 @@
1
+ import { t as membershipSourcesOf } from "./sources-qoIJQrJv.js";
1
2
  //#region src/cli/sql/statements.ts
2
3
  function blankComments(sql) {
3
4
  return sql.replaceAll(/--[^\n]*/gu, (comment) => " ".repeat(comment.length)).replaceAll(/\/\*[\s\S]*?\*\//gu, (comment) => comment.replaceAll(/[^\n]/gu, " "));
@@ -86,9 +87,11 @@ function tableKey(name) {
86
87
  * membership (user, scope, id, `within`, role, `via`, expiry), and the id and
87
88
  * value columns of a table a role or user column references, keyed by
88
89
  * {@link tableKey}. A client that can write one can give itself a membership.
90
+ * The hook's sources count even when `rls.membershipSources` replaces them for
91
+ * the helpers: the token's claims still come from them.
89
92
  */
90
93
  function membershipColumns(config) {
91
- const sources = config.supabase?.hook?.memberships ?? config.rls?.membershipSources ?? [];
94
+ const sources = /* @__PURE__ */ new Set([...membershipSourcesOf(config), ...config.supabase?.hook?.memberships ?? []]);
92
95
  const byTable = /* @__PURE__ */ new Map();
93
96
  for (const source of sources) {
94
97
  const table = tableKey(source.sql.table);
@@ -110,13 +113,21 @@ function membershipColumns(config) {
110
113
  * Every `schema.table.column` a claim or a membership is computed from: the
111
114
  * membership columns and the `attrs` table columns. Sorted.
112
115
  */
113
- function decidingColumns(config, attrs) {
116
+ function decidingColumns(config, attrs, teams) {
114
117
  const entries = /* @__PURE__ */ new Set();
115
118
  for (const [table, columns] of membershipColumns(config)) for (const column of columns) entries.add(`${table}.${column}`);
116
119
  if (attrs?.table !== void 0) {
117
120
  const table = tableKey(attrs.table);
118
121
  for (const column of attrs.columns) entries.add(`${table}.${column}`);
119
122
  }
123
+ if (teams !== void 0) {
124
+ const table = tableKey(teams.table);
125
+ for (const column of [
126
+ teams.user,
127
+ teams.team,
128
+ teams.tenant
129
+ ]) if (column !== void 0) entries.add(`${table}.${column}`);
130
+ }
120
131
  return [...entries].toSorted();
121
132
  }
122
133
  //#endregion
@@ -1,14 +1,14 @@
1
1
  import { n as isReadonlyArray } from "./compact-CAf557ZB.js";
2
- import { r as ownGet } from "./paths-DXSHAMIa.js";
3
- import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-K6eWUJ0H.js";
4
- import { o as sameId, t as expiredAt } from "./expiry-D4_YKRKD.js";
5
- import { g as formerScopes, m as annotationsFor, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
- import { o as epochSeconds } from "./time-DkWjdL98.js";
7
- import { d as scopeList, m as tenantOf, o as resolveScope, p as subjectMemberships } from "./scopes-CUPSjo9q.js";
8
- import { t as isoInstant } from "./instant-BluqDvyS.js";
9
- import { o as flattenGrantee } from "./grantee-hxrUsbpM.js";
10
- import { t as isActive } from "./validity-CZ7-y0Cj.js";
11
- import { n as matchGrantee } from "./grantee-match-DbENBHLB.js";
2
+ import { r as ownGet } from "./paths-CUvURzHp.js";
3
+ import { a as resolveConditionRef, c as isConditionDate, d as parentHop, l as isConditionRef } from "./refs-C8BKxc_e.js";
4
+ import { o as sameId, t as expiredAt } from "./expiry-6XByK0dm.js";
5
+ import { g as formerScopes, m as annotationsFor, n as findPermission } from "./permission-registry-B8tYxPIt.js";
6
+ import { o as epochSeconds } from "./time-nR1JesoH.js";
7
+ import { f as scopeList, h as tenantOf, m as subjectMemberships, s as resolveScope } from "./scopes-0Up_UA2t.js";
8
+ import { t as isoInstant } from "./instant-DK3Iz83e.js";
9
+ import { o as flattenGrantee } from "./grantee-Dke-9rd1.js";
10
+ import { t as isActive } from "./validity-Buc7w8E9.js";
11
+ import { n as matchGrantee } from "./grantee-match-7RZZvoT_.js";
12
12
  //#region src/conditions/evaluate.ts
13
13
  function resolveRef(ref, subject) {
14
14
  return resolveConditionRef(ref, subject);
@@ -145,9 +145,9 @@ function isRowPair(value) {
145
145
  return value !== null && typeof value === "object" && "current" in value && "next" in value;
146
146
  }
147
147
  /**
148
- * The row a `where` reads and the row a `check` reads. An instance check
149
- * takes a `{ current, next }` pair or one row for both; a collection check
150
- * has no current row, only the input it creates.
148
+ * The row a `where` reads and the row a `check` reads. An instance check takes
149
+ * a `{ current, next }` pair or one row for both; a collection check has no
150
+ * current row, only the input it creates.
151
151
  */
152
152
  function rowValues(permission, data) {
153
153
  if (permission.kind === "collection") return {
@@ -163,7 +163,10 @@ function rowValues(permission, data) {
163
163
  next: data
164
164
  };
165
165
  }
166
- /** The row's id under `field` as a string, or `*` when the row has no string or number there. */
166
+ /**
167
+ * The row's id under `field` as a string, or `*` when the row has no string or
168
+ * number there.
169
+ */
167
170
  function rowIdOf(row, field = "id") {
168
171
  if (row === null || typeof row !== "object" || !Object.hasOwn(row, field)) return "*";
169
172
  const id = Reflect.get(row, field);
@@ -171,14 +174,17 @@ function rowIdOf(row, field = "id") {
171
174
  }
172
175
  //#endregion
173
176
  //#region src/core/delegation.ts
174
- /** The permission's scope and any scope it was renamed from: tokens issued before a rename keep working. */
177
+ /**
178
+ * The permission's scope and any scope it was renamed from: tokens issued
179
+ * before a rename keep working.
180
+ */
175
181
  function scopeNames(permission) {
176
182
  return [permission.scope, ...formerScopes(permission)];
177
183
  }
178
184
  /**
179
185
  * Whether a delegated caller may use a permission its principal holds, through
180
- * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
181
- * `undefined` means covered; otherwise the denial reason `decide` would add.
186
+ * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`. `undefined`
187
+ * means covered; otherwise the denial reason `decide` would add.
182
188
  */
183
189
  function coveredByDelegation(permission, delegation, resourceId, hasActor = false) {
184
190
  const unscoped = hasActor ? "no-delegation" : void 0;
@@ -206,7 +212,10 @@ function coveredByDelegation(permission, delegation, resourceId, hasActor = fals
206
212
  if (scopeOk || detailOk || accessOk) return;
207
213
  return "not-delegated";
208
214
  }
209
- /** A `readOnly` actor never uses a permission without `readOnlyHint`, delegated or not. */
215
+ /**
216
+ * A `readOnly` actor never uses a permission without `readOnlyHint`, delegated
217
+ * or not.
218
+ */
210
219
  function readOnlyActorRefuses(actor, permission) {
211
220
  return actor?.readOnly === true && !annotationsFor(permission).readOnlyHint;
212
221
  }
@@ -266,10 +275,10 @@ function handsOver(delegation, subject, heldRoles, now) {
266
275
  /**
267
276
  * The permission keys the policy's delegations let `subject.actor` use for
268
277
  * `subject.principal` right now: the union over every active delegation whose
269
- * `to` matches the actor and whose `from` the principal holds. `undefined`
270
- * when none applies, so the call falls back to the token delegation alone.
271
- * An actor with `readOnly: true` gets only each delegation's read-only keys.
272
- * Attenuation only: a key here still needs a matching allow and no deny.
278
+ * `to` matches the actor and whose `from` the principal holds. `undefined` when
279
+ * none applies, so the call falls back to the token delegation alone. An actor
280
+ * with `readOnly: true` gets only each delegation's read-only keys. Attenuation
281
+ * only: a key here still needs a matching allow and no deny.
273
282
  */
274
283
  function delegatedPermissions(delegations, subject, heldRoles, now) {
275
284
  const actor = subject.actor;
@@ -1,5 +1,5 @@
1
- import { $t as DeliveryFailureCause, Zt as DeliveryChannel, tn as EmailCategory } from "../policy-types-n0uRTsW8.js";
2
- import { i as approvalUrlFor, n as ApprovalUrl, r as approvalPrompt, t as ApprovalPrompt } from "../approval-prompt-DvSSPQJX.js";
3
- import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, d as EmailTransport, f as EmailUnsubscribe, g as TransportMessages, h as TransportItem, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, n as ChatTransport, o as DeliveryResult, p as OutgoingEmail, r as DeliverOptions, s as DeliveryTarget, t as ChatMessage, u as EmailMessage, v as WebhookMessage, y as WebhookTransport } from "../types-BtHtcKMr.js";
4
- import { a as DeliveryPermDock, c as MemoryDelivery, d as memoryDeliveryTransport, f as Audience, g as subscribersFor, h as audience, i as isDeliveryTarget, l as MemoryDeliveryTransport, m as SubscriberEvent, n as webhookTransport, o as DeliveryPermDockOptions, p as AudienceOptions, r as isAddrSpec, s as createPermDock, t as WebhookTransportOptions, u as MemoryDeliveryTransportOptions } from "../index-CueFnxQc.js";
5
- export { type ApprovalPrompt, type ApprovalUrl, type Audience, type AudienceOptions, type ChatMessage, type ChatTransport, type DeliverOptions, type DeliveryChannel, type DeliveryFailureCause, type DeliveryMessages, type DeliveryPermDock, type DeliveryPermDockOptions, type DeliveryReport, type DeliveryResult, type DeliveryTarget, type DeliveryTransport, type DeliveryTransports, type EmailCategory, type EmailMessage, type EmailTransport, type EmailUnsubscribe, type MemoryDelivery, type MemoryDeliveryTransport, type MemoryDeliveryTransportOptions, type OutgoingEmail, type Recipient, type SubscriberEvent, type TransportItem, type TransportMessages, type TransportOptions, type WebhookMessage, type WebhookTransport, type WebhookTransportOptions, approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, subscribersFor, webhookTransport };
1
+ import { an as EmailCategory, rn as DeliveryFailureCause, tn as DeliveryChannel } from "../policy-types-CCiDRZBH.js";
2
+ import { i as approvalUrlFor, n as ApprovalUrl, r as approvalPrompt, t as ApprovalPrompt } from "../approval-prompt-PYagyQUj.js";
3
+ import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, d as EmailTransport, f as EmailUnsubscribe, g as TransportMessages, h as TransportItem, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, n as ChatTransport, o as DeliveryResult, p as OutgoingEmail, r as DeliverOptions, s as DeliveryTarget, t as ChatMessage, u as EmailMessage, v as WebhookMessage, y as WebhookTransport } from "../types-yUuPR5Hy.js";
4
+ import { C as audience, S as SubscriberEvent, _ as ParseConnectorResult, a as DeliveryPermDock, b as Audience, c as MemoryDelivery, d as memoryDeliveryTransport, f as CONNECTOR_SCHEMA, g as ConnectorKind, h as ConnectorIssue, i as isDeliveryTarget, l as MemoryDeliveryTransport, m as Connector, n as webhookTransport, o as DeliveryPermDockOptions, p as CONNECTOR_KINDS, r as isAddrSpec, s as createPermDock, t as WebhookTransportOptions, u as MemoryDeliveryTransportOptions, v as SiemDestination, w as subscribersFor, x as AudienceOptions, y as parseConnector } from "../index-Bv5iXPqU.js";
5
+ export { type ApprovalPrompt, type ApprovalUrl, type Audience, type AudienceOptions, CONNECTOR_KINDS, CONNECTOR_SCHEMA, type ChatMessage, type ChatTransport, type Connector, type ConnectorIssue, type ConnectorKind, type DeliverOptions, type DeliveryChannel, type DeliveryFailureCause, type DeliveryMessages, type DeliveryPermDock, type DeliveryPermDockOptions, type DeliveryReport, type DeliveryResult, type DeliveryTarget, type DeliveryTransport, type DeliveryTransports, type EmailCategory, type EmailMessage, type EmailTransport, type EmailUnsubscribe, type MemoryDelivery, type MemoryDeliveryTransport, type MemoryDeliveryTransportOptions, type OutgoingEmail, type ParseConnectorResult, type Recipient, type SiemDestination, type SubscriberEvent, type TransportItem, type TransportMessages, type TransportOptions, type WebhookMessage, type WebhookTransport, type WebhookTransportOptions, approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, parseConnector, subscribersFor, webhookTransport };
@@ -1,5 +1,6 @@
1
- import { n as approvalUrlFor, t as approvalPrompt } from "../approval-prompt-Dg5LeAcT.js";
2
- import { n as subscribersFor, t as audience } from "../audience-DabClFLQ.js";
3
- import { i as isDeliveryTarget, n as isAddrSpec } from "../target-Bw37TFNA.js";
4
- import { n as createPermDock, r as memoryDeliveryTransport, t as webhookTransport } from "../delivery-DCAgNyCn.js";
5
- export { approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, subscribersFor, webhookTransport };
1
+ import { n as approvalUrlFor, t as approvalPrompt } from "../approval-prompt-B8hQY69x.js";
2
+ import { n as subscribersFor, t as audience } from "../audience-BAkBDMqn.js";
3
+ import { t as CONNECTOR_SCHEMA } from "../connector-schema-CYLQNMYq.js";
4
+ import { a as parseConnector, i as CONNECTOR_KINDS, n as createPermDock, r as memoryDeliveryTransport, t as webhookTransport } from "../delivery-BupfvJIV.js";
5
+ import { i as isDeliveryTarget, n as isAddrSpec } from "../target-qdEAnnhU.js";
6
+ export { CONNECTOR_KINDS, CONNECTOR_SCHEMA, approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, parseConnector, subscribersFor, webhookTransport };
@@ -1,12 +1,64 @@
1
- import { t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { a as ownRecord } from "./paths-DXSHAMIa.js";
4
- import { n as loadPrincipalByIdentity } from "./principal-source-pHneukrx.js";
5
- import { t as deliveryEvent } from "./delivery-event-xX4obB8F.js";
6
- import { n as CLOUDEVENTS_CONTENT_TYPE } from "./sink-BEZSlMS_.js";
7
- import { a as isWebhookAddress, i as isDeliveryTarget, n as isAddrSpec, r as isChatAddress, t as idempotencyKeyFor } from "./target-Bw37TFNA.js";
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { a as ownRecord } from "./paths-CUvURzHp.js";
4
+ import { n as loadPrincipalByIdentity } from "./principal-source-C6N60GtM.js";
5
+ import { t as deliveryEvent } from "./delivery-event-JioK5YbS.js";
6
+ import { n as CLOUDEVENTS_CONTENT_TYPE } from "./sink-D9_vh372.js";
7
+ import { n as copyJson, r as forbiddenKeyPath, t as checkSchema } from "./json-schema-BPGa-RjQ.js";
8
+ import { t as CONNECTOR_SCHEMA } from "./connector-schema-CYLQNMYq.js";
9
+ import { a as isWebhookAddress, i as isDeliveryTarget, n as isAddrSpec, r as isChatAddress, t as idempotencyKeyFor } from "./target-qdEAnnhU.js";
10
+ //#region src/delivery/connector.ts
11
+ const BRANCHES = new Map((CONNECTOR_SCHEMA.oneOf ?? []).map((branch) => [branch.properties?.["kind"]?.const, branch]));
12
+ /** The kinds `connector-v1` lists, in schema order. */
13
+ const CONNECTOR_KINDS = Object.freeze([...BRANCHES.keys()]);
14
+ function pointer(path) {
15
+ return path.map((part) => `/${String(part).replaceAll("~", "~0").replaceAll("/", "~1")}`).join("");
16
+ }
17
+ function fail$1(issues) {
18
+ return {
19
+ ok: false,
20
+ issues: issues.map((item) => ({
21
+ path: pointer((item.path ?? []).map((part) => typeof part === "object" ? part.key : part)),
22
+ message: item.message
23
+ }))
24
+ };
25
+ }
26
+ /**
27
+ * Checks `input` against `connector-v1.json` and answers a frozen copy, or
28
+ * every issue with a JSON pointer. The branch is chosen by `kind`, so an issue
29
+ * names the field rather than "no branch matched".
30
+ */
31
+ function parseConnector(input) {
32
+ const issues = [];
33
+ const value = copyJson(input, [], issues, /* @__PURE__ */ new Set());
34
+ if (issues.length > 0) return fail$1(issues);
35
+ const forbidden = forbiddenKeyPath(value);
36
+ if (forbidden !== void 0) return fail$1([{
37
+ path: forbidden,
38
+ message: "Forbidden key"
39
+ }]);
40
+ if (!isRecord(value)) return fail$1([{
41
+ path: [],
42
+ message: "Expected object"
43
+ }]);
44
+ const branch = BRANCHES.get(value["kind"]);
45
+ if (branch === void 0) return fail$1([{
46
+ path: ["kind"],
47
+ message: `Expected one of ${CONNECTOR_KINDS.map((kind) => JSON.stringify(kind)).join(", ")}`
48
+ }]);
49
+ checkSchema(branch, value, [], issues, CONNECTOR_SCHEMA);
50
+ if (issues.length > 0) return fail$1(issues);
51
+ return {
52
+ ok: true,
53
+ connector: freezeDeep(value)
54
+ };
55
+ }
56
+ //#endregion
8
57
  //#region src/delivery/memory-transport.ts
9
- /** An in-process transport for tests and examples: it records what it would have sent. */
58
+ /**
59
+ * An in-process transport for tests and examples: it records what it would have
60
+ * sent.
61
+ */
10
62
  function memoryDeliveryTransport(channel, options = {}) {
11
63
  const deliveries = [];
12
64
  return Object.freeze({
@@ -40,7 +92,10 @@ const ROUTER_FIELDS = /* @__PURE__ */ new Set([
40
92
  "list-unsubscribe",
41
93
  "list-unsubscribe-post"
42
94
  ]);
43
- /** Fields that would add recipients or rewrite the envelope past the recipient check. */
95
+ /**
96
+ * Fields that would add recipients or rewrite the envelope past the recipient
97
+ * check.
98
+ */
44
99
  const ENVELOPE_FIELDS = /* @__PURE__ */ new Set([
45
100
  "to",
46
101
  "cc",
@@ -94,8 +149,8 @@ function unsubscribeHeaders(unsubscribe) {
94
149
  /**
95
150
  * The email a transport sends to `target`: `from` resolved, the caller's
96
151
  * headers checked, `Auto-Submitted: auto-generated` (RFC 3834) on every
97
- * message, and the RFC 2369 / RFC 8058 unsubscribe pair on `notification`
98
- * only. A message that cannot be sent as given returns the reason.
152
+ * message, and the RFC 2369 / RFC 8058 unsubscribe pair on `notification` only.
153
+ * A message that cannot be sent as given returns the reason.
99
154
  */
100
155
  function outgoingEmail(message, target, defaultFrom) {
101
156
  const from = message.from ?? defaultFrom;
@@ -139,7 +194,10 @@ function optionalString(value) {
139
194
  if (value === void 0) return;
140
195
  return typeof value === "string" && value !== "" ? value : null;
141
196
  }
142
- /** The recipient in the form its channel compares, or `null` when it is malformed. */
197
+ /**
198
+ * The recipient in the form its channel compares, or `null` when it is
199
+ * malformed.
200
+ */
143
201
  function checkRecipient(value) {
144
202
  const record = ownRecord(value);
145
203
  const channel = record?.["channel"];
@@ -232,9 +290,9 @@ async function sendBatch(transport, batch) {
232
290
  }));
233
291
  }
234
292
  /**
235
- * Sends every ready item: one batch call per `batchSize` items for a
236
- * transport with `deliverBatch`, one `deliver` call each otherwise. Events
237
- * keep recipient order.
293
+ * Sends every ready item: one batch call per `batchSize` items for a transport
294
+ * with `deliverBatch`, one `deliver` call each otherwise. Events keep recipient
295
+ * order.
238
296
  */
239
297
  async function send(prepared) {
240
298
  const events = prepared.map((entry) => "transport" in entry ? void 0 : entry);
@@ -261,7 +319,10 @@ async function send(prepared) {
261
319
  }));
262
320
  return events;
263
321
  }
264
- /** Routes checked recipients to channel transports and records a delivery event for each. */
322
+ /**
323
+ * Routes checked recipients to channel transports and records a delivery event
324
+ * for each.
325
+ */
265
326
  function createPermDock(_policy, options) {
266
327
  const source = options.source ?? "permdock";
267
328
  const decideRecipient = async (permdock, checked, permission, row) => {
@@ -448,9 +509,9 @@ function fromStatus(status) {
448
509
  }
449
510
  /**
450
511
  * Posts each CloudEvent to the target's https endpoint as
451
- * `application/cloudevents+json`, signed with the Standard Webhooks
452
- * headers. `webhook-id` is the idempotency key, so a retry repeats it and
453
- * the receiver drops the duplicate. Redirects are not followed.
512
+ * `application/cloudevents+json`, signed with the Standard Webhooks headers.
513
+ * `webhook-id` is the idempotency key, so a retry repeats it and the receiver
514
+ * drops the duplicate. Redirects are not followed.
454
515
  */
455
516
  function webhookTransport(signer, options = {}) {
456
517
  const timeout = options.timeout ?? 1e4;
@@ -496,4 +557,4 @@ function webhookTransport(signer, options = {}) {
496
557
  });
497
558
  }
498
559
  //#endregion
499
- export { createPermDock as n, memoryDeliveryTransport as r, webhookTransport as t };
560
+ export { parseConnector as a, CONNECTOR_KINDS as i, createPermDock as n, memoryDeliveryTransport as r, webhookTransport as t };
@@ -1,12 +1,12 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { t as assertAppData } from "./app-data-MuyzVqX8.js";
3
- import { d as isoNow } from "./time-DkWjdL98.js";
4
- import { n as requireEventInstant } from "./event-time-CsegxXxB.js";
2
+ import { t as assertAppData } from "./app-data-UNNm07jV.js";
3
+ import { d as isoNow } from "./time-nR1JesoH.js";
4
+ import { n as requireEventInstant } from "./event-time-BGy48400.js";
5
5
  //#region src/core/delivery-event.ts
6
6
  /**
7
- * A `delivery` sink event. Throws a `TypeError` when `cause` or `retryable`
8
- * is set on an operation other than `failed`, and a `RangeError` for a
9
- * malformed `at`.
7
+ * A `delivery` sink event. Throws a `TypeError` when `cause` or `retryable` is
8
+ * set on an operation other than `failed`, and a `RangeError` for a malformed
9
+ * `at`.
10
10
  */
11
11
  function checkedX(x) {
12
12
  assertAppData(x, "x of a delivery event");
@@ -0,0 +1,22 @@
1
+ import { Ln as Decision } from "./policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "./permission-types-CAY-GU7e.js";
3
+ //#region src/agent/denied-text.d.ts
4
+ /**
5
+ * What an agent adapter's `deniedText` receives: the refusal and the text
6
+ * PermDock wrote for it.
7
+ */
8
+ type DeniedTextEvent = {
9
+ readonly decision: Exclude<Decision, {
10
+ readonly outcome: "granted";
11
+ }> | null;
12
+ readonly permission: Permission | undefined;
13
+ readonly text: string;
14
+ };
15
+ /**
16
+ * Replaces the human-readable text of a refusal, and nothing else: the outcome,
17
+ * `isError`, the structured content and the approval token stay. `undefined`
18
+ * keeps PermDock's text.
19
+ */
20
+ type DeniedText = (event: DeniedTextEvent) => string | undefined;
21
+ //#endregion
22
+ export { DeniedTextEvent as n, DeniedText as t };
@@ -1,9 +1,10 @@
1
- import { i as flattenApprovers } from "./approvers-CqPOLD-o.js";
2
- import { r as requiredPlans } from "./problem-details-cn5X30gZ.js";
1
+ import { i as flattenApprovers } from "./approvers-B4r0N_Uz.js";
2
+ import { r as requiredPlans } from "./problem-details-CLDgX1KV.js";
3
3
  //#region src/core/describe.ts
4
4
  const TENANT_REASONS = /* @__PURE__ */ new Set([
5
5
  "tenant-mismatch",
6
6
  "no-membership",
7
+ "no-tenant",
7
8
  "expired-membership",
8
9
  "scope"
9
10
  ]);
@@ -30,7 +31,7 @@ function labelGrantee(grantee) {
30
31
  default: return grantee;
31
32
  }
32
33
  }
33
- const TITLES = {
34
+ const DESCRIBE_TITLES = {
34
35
  granted: "Granted",
35
36
  denied: "Denied",
36
37
  approval: "Approval required",
@@ -56,7 +57,7 @@ function approvalDetail(permission, labels) {
56
57
  function describe(decision, options) {
57
58
  const messages = options?.messages;
58
59
  const labelOf = (key) => options?.permission?.key === key ? options.permission.meta?.title ?? key : key;
59
- const titleOf = (kind) => messages?.titles?.[kind] ?? TITLES[kind];
60
+ const titleOf = (kind) => messages?.titles?.[kind] ?? DESCRIBE_TITLES[kind];
60
61
  if (decision.outcome === "granted") {
61
62
  const permission = labelOf(decision.matched.permission);
62
63
  return {
@@ -96,4 +97,4 @@ function describe(decision, options) {
96
97
  };
97
98
  }
98
99
  //#endregion
99
- export { describe as t };
100
+ export { describe as n, DESCRIBE_TITLES as t };
@@ -1,5 +1,5 @@
1
- import { In as DenialReason, Ln as DeniedDecision, Nn as Decision } from "./policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "./vocabulary-CN8H_9UF.js";
1
+ import { Bn as DenialReason, Ln as Decision, Vn as DeniedDecision } from "./policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "./permission-types-CAY-GU7e.js";
3
3
  //#region src/core/describe.d.ts
4
4
  type DecisionDescription = {
5
5
  readonly kind: "granted" | "denied" | "approval" | "tenant" | "delegation" | "server-only" | "upgrade";
@@ -16,9 +16,9 @@ type DecisionDescription = {
16
16
  type DescribeMessages = {
17
17
  readonly titles?: Partial<Record<DecisionDescription["kind"], string>>;
18
18
  /**
19
- * Text per denial reason; a denied detail joins the texts of its reasons
20
- * with `separator`. The function form also sees the decision; `undefined`
21
- * keeps the reason code, as a missing record entry does.
19
+ * Text per denial reason; a denied detail joins the texts of its reasons with
20
+ * `separator`. The function form also sees the decision; `undefined` keeps
21
+ * the reason code, as a missing record entry does.
22
22
  */
23
23
  readonly reasons?: Partial<Record<DenialReason, string>> | ((reason: DenialReason, decision: DeniedDecision) => string | undefined);
24
24
  /** Joins denial reason texts. Default `', '`. */
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { h as secondsAt } from "./time-DkWjdL98.js";
3
- import { n as readBodyText } from "./body-text-QcXok_SI.js";
2
+ import { h as secondsAt } from "./time-nR1JesoH.js";
3
+ import { n as readBodyText } from "./body-text-DQhcmqdY.js";
4
4
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
5
5
  //#region src/terminal/device.ts
6
6
  /** Milliseconds an authorization server request may take. */
@@ -15,7 +15,10 @@ async function readJson(response) {
15
15
  return null;
16
16
  }
17
17
  }
18
- /** POSTs a form and reads a JSON object back; any network or parse failure is `null`. */
18
+ /**
19
+ * POSTs a form and reads a JSON object back; any network or parse failure is
20
+ * `null`.
21
+ */
19
22
  async function postForm(runtime, url, fields) {
20
23
  const fetchImpl = runtime.fetch ?? fetch;
21
24
  try {
@@ -33,9 +36,9 @@ function withoutTrailingSlash(url) {
33
36
  return url.replace(/\/+$/u, "");
34
37
  }
35
38
  /**
36
- * Where RFC 8414 metadata may live: the well-known segment inserted before
37
- * the issuer's path (section 3.1), then appended after it for servers that
38
- * predate the rule. An issuer without a path has one location.
39
+ * Where RFC 8414 metadata may live: the well-known segment inserted before the
40
+ * issuer's path (section 3.1), then appended after it for servers that predate
41
+ * the rule. An issuer without a path has one location.
39
42
  */
40
43
  function metadataUrls(issuer) {
41
44
  const parsed = new URL(issuer);
@@ -44,8 +47,8 @@ function metadataUrls(issuer) {
44
47
  return path === "" ? [inserted] : [inserted, `${withoutTrailingSlash(issuer)}/.well-known/oauth-authorization-server`];
45
48
  }
46
49
  /**
47
- * The issuer's RFC 8414 metadata, or `null`. Metadata whose `issuer` is not
48
- * the configured issuer is refused (section 3.3), so a mix-up never routes a
50
+ * The issuer's RFC 8414 metadata, or `null`. Metadata whose `issuer` is not the
51
+ * configured issuer is refused (section 3.3), so a mix-up never routes a
49
52
  * credential to another server.
50
53
  */
51
54
  async function discoverAuthorizationServer(issuer, runtime) {
@@ -1,5 +1,5 @@
1
1
  import { t as defineLeaf } from "./command-L8EstFNm.js";
2
- import { c as given } from "./flags-C3DktBDY.js";
2
+ import { c as given } from "./flags-DXjoTVbS.js";
3
3
  //#region src/cli/commands/diff.ts
4
4
  const diff = defineLeaf({
5
5
  positionals: [{
@@ -21,7 +21,7 @@ const diff = defineLeaf({
21
21
  }
22
22
  },
23
23
  async run(ctx, { flags, args }) {
24
- return (await import("./diff-3jbx6Rm4.js")).runDiff({
24
+ return (await import("./diff-iZWV65nC.js")).runDiff({
25
25
  cwd: ctx.cwd,
26
26
  config: ctx.config,
27
27
  sources: [args["before"], args["after"]].filter((value) => value !== void 0),