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,19 +1,22 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { r as approverLeaves } from "./approvers-CqPOLD-o.js";
4
- import { t as describe } from "./describe-BybMRY7A.js";
5
- import { i as getRegistry, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
- import { t as assertAppData } from "./app-data-MuyzVqX8.js";
7
- import { a as durationOf, i as dateAt, u as isoAt } from "./time-DkWjdL98.js";
8
- import { r as relationReader, t as pendingRelations } from "./relations-BnCWnJGI.js";
9
- import { n as resolveRelated } from "./relation-walk-3OyDBF0S.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { r as approverLeaves } from "./approvers-B4r0N_Uz.js";
4
+ import { n as describe } from "./describe-Bb4hGK5d.js";
5
+ import { i as getRegistry, n as findPermission } from "./permission-registry-B8tYxPIt.js";
6
+ import { t as assertAppData } from "./app-data-UNNm07jV.js";
7
+ import { a as durationOf, i as dateAt, u as isoAt } from "./time-nR1JesoH.js";
8
+ import { r as relationReader, t as pendingRelations } from "./relations-BxvRvDHK.js";
9
+ import { n as resolveRelated } from "./relation-walk-DK_gkgL7.js";
10
10
  import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
- import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
12
- import { c as listAllApprovals, n as assertApprover } from "./store-BDutJkDL.js";
13
- import { n as parseApprovalHeader } from "./approval-header-CJACtHkv.js";
11
+ import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-CcUXciSj.js";
12
+ import { n as assertApprover, u as listAllApprovals } from "./store-RNFvaJJv.js";
13
+ import { n as parseApprovalHeader } from "./approval-header-8QV6MU4H.js";
14
14
  //#region src/approvals/relations.ts
15
15
  const DEFAULT_PARENT_DEPTH = 16;
16
- /** Every approver a request names: `by`, each stage and its escalation, and `escalation.to`, inside `anyOf` groups too. */
16
+ /**
17
+ * Every approver a request names: `by`, each stage and its escalation, and
18
+ * `escalation.to`, inside `anyOf` groups too.
19
+ */
17
20
  function requestApprovers(approvers) {
18
21
  return [
19
22
  ...approverLeaves(approvers.by),
@@ -31,7 +34,10 @@ async function settled(read, unread, cache) {
31
34
  await Promise.all(pending);
32
35
  }
33
36
  }
34
- /** The id of `item.resource` the walk starts from, after following `through` links. */
37
+ /**
38
+ * The id of `item.resource` the walk starts from, after following `through`
39
+ * links.
40
+ */
35
41
  async function startOf(item, resource, id, reader, cache, registry) {
36
42
  if (!Array.isArray(item.through)) return resource === item.resource ? id : void 0;
37
43
  let current = resource;
@@ -61,8 +67,8 @@ function depthOf(item) {
61
67
  /**
62
68
  * The relation approvers of `request` that `subject` holds on its resource,
63
69
  * keyed by `approverRelationKey`, for `ApprovalVerdict.relations`. Reads go
64
- * through `relations` by the request's resource id; a request without an id,
65
- * a missing source or a read that fails holds nothing.
70
+ * through `relations` by the request's resource id; a request without an id, a
71
+ * missing source or a read that fails holds nothing.
66
72
  */
67
73
  async function approverRelations(request, subject, options) {
68
74
  const approvers = request.approvers;
@@ -118,7 +124,10 @@ function approverPermissions(request, approver) {
118
124
  }
119
125
  });
120
126
  }
121
- /** The permission approvers `subject` holds on `request`, read through `permdockFor`. */
127
+ /**
128
+ * The permission approvers `subject` holds on `request`, read through
129
+ * `permdockFor`.
130
+ */
122
131
  async function heldPermissions(request, subject, permdockFor) {
123
132
  if (permdockFor === void 0 || request.approvers === void 0) return [];
124
133
  try {
@@ -156,9 +165,9 @@ function summarizeSubject(subject) {
156
165
  });
157
166
  }
158
167
  /**
159
- * The window (`meta.ttl`, else the store's `ttl`, else the default) capped by the grant's
160
- * `approval.ttl`: a grant shortens how long a request stays open, never
161
- * extends it.
168
+ * The window (`meta.ttl`, else the store's `ttl`, else the default) capped by
169
+ * the grant's `approval.ttl`: a grant shortens how long a request stays open,
170
+ * never extends it.
162
171
  */
163
172
  function approvalTtl(storeTtl, approval) {
164
173
  if (storeTtl !== void 0 && durationOf(storeTtl) === void 0) throw new RangeError(`PermDock: approval ttl must be a whole number of seconds above 0, got ${String(storeTtl)}`);
@@ -391,7 +400,10 @@ async function cancelApprovals(store, filter, meta) {
391
400
  }
392
401
  }))).filter(Boolean).length;
393
402
  }
394
- /** The token of a `PermDock-Approval` field: one RFC 9651 sf-token Item with no parameters, else `undefined`. */
403
+ /**
404
+ * The token of a `PermDock-Approval` field: one RFC 9651 sf-token Item with no
405
+ * parameters, else `undefined`.
406
+ */
395
407
  function readApprovalHeader(headers) {
396
408
  return parseApprovalHeader(headers.get(APPROVAL_HEADER));
397
409
  }
@@ -405,14 +417,14 @@ function resumeFromHeader(store, headers, now) {
405
417
  }
406
418
  /**
407
419
  * The token to resume `decision` with when the caller carries none: the
408
- * decision's own token when the store holds an approved or rejected request
409
- * for it, so `resumeDecision` resumes (or denies) the call without the
410
- * caller passing the token back. The token already binds permission,
411
- * resource (or the call's data when there is no row id), subject and actor.
412
- * A pending request counts only with `denyPending: true`, which makes the
413
- * call deny with `approval-pending` instead of asking again. `undefined` when
414
- * the decision needs no approval, there is no store, or the store has no
415
- * unexpired request for the token; a store that throws counts as none.
420
+ * decision's own token when the store holds an approved or rejected request for
421
+ * it, so `resumeDecision` resumes (or denies) the call without the caller
422
+ * passing the token back. The token already binds permission, resource (or the
423
+ * call's data when there is no row id), subject and actor. A pending request
424
+ * counts only with `denyPending: true`, which makes the call deny with
425
+ * `approval-pending` instead of asking again. `undefined` when the decision
426
+ * needs no approval, there is no store, or the store has no unexpired request
427
+ * for the token; a store that throws counts as none.
416
428
  */
417
429
  async function storedApprovalToken(store, decision, options = {}) {
418
430
  if (store === void 0 || decision.outcome !== "approval-required") return;
@@ -1,9 +1,9 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
- import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
4
+ import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CIlpSA2G.js";
6
+ import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
7
7
  import { Context, Hono, MiddlewareHandler } from "hono";
8
8
  import { SSEMessage, SSEStreamingApi } from "hono/streaming";
9
9
  import { WSEvents } from "hono/ws";
@@ -20,19 +20,25 @@ type HonoPermDockEnv<TData = unknown, V extends PolicyVocabulary = PolicyVocabul
20
20
  };
21
21
  };
22
22
  type HonoPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
23
- /** The `PermDock` for one request, for code the middleware does not run before. */
23
+ /**
24
+ * The `PermDock` for one request, for code the middleware does not run
25
+ * before.
26
+ */
24
27
  readonly getPermDock: (c: Context) => Promise<PermDock<V>>;
25
28
  readonly middleware: () => MiddlewareHandler<HonoPermDockEnv<unknown, V>>;
26
29
  readonly protect: <TData = unknown>(permission: Permission | null, data?: (c: Context) => TData | Promise<TData>, protectOptions?: ProtectOptions) => MiddlewareHandler<HonoPermDockEnv<NonNullable<TData>, V>>;
27
30
  /** A long-lived connection for the request behind `c`. */
28
31
  readonly connection: (c: Context, connectionOptions?: ConnectionOptions) => Promise<Connection>;
29
- /** `upgradeWebSocket` events that close with `1008` when the connection aborts. */
32
+ /**
33
+ * `upgradeWebSocket` events that close with `1008` when the connection
34
+ * aborts.
35
+ */
30
36
  readonly socket: <T = unknown>(connection: Connection, events: WSEvents<T>) => WSEvents<T>;
31
37
  /**
32
38
  * Writes `source` to a `streamSSE` stream, dropping items the subscriber
33
39
  * cannot read, and resolves when it ends: after an `event: permdock` frame
34
- * when the connection aborts, when the client disconnects, or when the
35
- * source is done. Await it as the last statement of the callback.
40
+ * when the connection aborts, when the client disconnects, or when the source
41
+ * is done. Await it as the last statement of the callback.
36
42
  */
37
43
  readonly sse: <T>(connection: Connection, stream: SSEStreamingApi, source: AsyncIterable<T>, options?: SseOptions<T>) => Promise<void>;
38
44
  readonly permdockHandler: () => Hono;
@@ -1,9 +1,9 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { r as PermDockRevokedError } from "../errors-BKy0EfhN.js";
3
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
4
- import { t as problemFromError } from "../map-error-Dr70oA_3.js";
5
- import { r as bindKernel } from "../bind-CAvgUuKs.js";
6
- import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
2
+ import { r as PermDockRevokedError } from "../errors-B6R_lg2a.js";
3
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
4
+ import { t as problemFromError } from "../map-error-pasIGqMT.js";
5
+ import { r as bindKernel } from "../bind-D_sZSVA3.js";
6
+ import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CDvF0sJm.js";
7
7
  import { Hono } from "hono";
8
8
  //#region src/hono/create.ts
9
9
  function socket(connection, events) {
@@ -1,6 +1,9 @@
1
- import { T as Policy, a as ApprovalRequirement, bn as Grantee, ur as Condition } from "./policy-types-n0uRTsW8.js";
1
+ import { T as Policy, a as ApprovalRequirement, mr as Condition, wn as Grantee } from "./policy-types-CCiDRZBH.js";
2
2
  //#region src/core/hosted.d.ts
3
- /** One grant authored in PermDock Cloud; its grantee is a declared role, plan or relation. */
3
+ /**
4
+ * One grant authored in PermDock Cloud; its grantee is a declared role, plan or
5
+ * relation.
6
+ */
4
7
  type HostedGrant = {
5
8
  readonly id: string;
6
9
  readonly permission: string;
@@ -12,9 +15,9 @@ type HostedGrant = {
12
15
  readonly fields?: readonly string[];
13
16
  };
14
17
  /**
15
- * PolicyDocument v1. Signed as a `vnd.permdock.policy+jwt`, the `policy`
16
- * claim carries every field but `id` and `issuedAt`, which are the token's
17
- * `jti` and `iat` (`policyDocumentFromClaims`).
18
+ * PolicyDocument v1. Signed as a `vnd.permdock.policy+jwt`, the `policy` claim
19
+ * carries every field but `id` and `issuedAt`, which are the token's `jti` and
20
+ * `iat` (`policyDocumentFromClaims`).
18
21
  */
19
22
  type PolicyDocument = {
20
23
  readonly v: 1;
@@ -27,17 +30,20 @@ type PolicyDocument = {
27
30
  readonly grants: readonly HostedGrant[];
28
31
  };
29
32
  /**
30
- * The channel for hosted grants. `getPermDock` reads `current()` once;
31
- * the application calls `refresh()` on its own schedule, never a check.
33
+ * The channel for hosted grants. `getPermDock` reads `current()` once; the
34
+ * application calls `refresh()` on its own schedule, never a check.
32
35
  */
33
36
  type PolicySource = {
34
37
  /** Names the implementation in errors and events. */
35
38
  readonly name?: string;
36
- current(): PolicyDocument | null;
37
- refresh(): Promise<void>;
39
+ current: () => PolicyDocument | null;
40
+ refresh: () => Promise<void>;
38
41
  };
39
42
  type HostedGrantDropReason = "not-hostable" | "unknown-permission" | "unknown-grantee" | "non-portable" | "weaker-approval" | "invalid";
40
- /** Reported through `on('error')` when a hosted grant is not merged; never thrown. */
43
+ /**
44
+ * Reported through `on('error')` when a hosted grant is not merged; never
45
+ * thrown.
46
+ */
41
47
  type HostedGrantDropped = {
42
48
  readonly kind: "hosted-grant-dropped";
43
49
  readonly document: string;
@@ -47,24 +53,42 @@ type HostedGrantDropped = {
47
53
  declare function memoryPolicySource(document?: PolicyDocument | null): PolicySource;
48
54
  /** Validates the document envelope; per-grant checks happen at merge time. */
49
55
  declare function parsePolicyDocument(json: unknown): PolicyDocument;
50
- /** The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`. */
56
+ /**
57
+ * The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with
58
+ * `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`.
59
+ */
51
60
  declare function policyDocumentFromClaims(claims: Readonly<Record<string, unknown>>): PolicyDocument;
52
- /** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
61
+ /**
62
+ * True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown
63
+ * op.
64
+ */
53
65
  declare function isPortableCondition(value: unknown): value is Condition;
66
+ type HostedGrantCheck = {
67
+ readonly ok: true;
68
+ } | {
69
+ readonly ok: false;
70
+ readonly reason: HostedGrantDropReason;
71
+ };
72
+ /**
73
+ * Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
74
+ * drop reason it would report when not. Needs no `PolicyDocument`, so a grant
75
+ * form can check a grant before it publishes one.
76
+ */
77
+ declare function checkHostedGrant(policy: Policy, grant: unknown): HostedGrantCheck;
54
78
  /**
55
- * The code policy plus the hosted grants that pass every rule. Hosted
56
- * allows OR with code allows and any deny still wins, so a hosted grant can
57
- * never override a code deny; one that fails a rule is dropped, not thrown.
79
+ * The code policy plus the hosted grants that pass every rule. Hosted allows OR
80
+ * with code allows and any deny still wins, so a hosted grant can never
81
+ * override a code deny; one that fails a rule is dropped, not thrown.
58
82
  */
59
83
  declare function mergeHostedGrants(policy: Policy, document: PolicyDocument | null): {
60
84
  readonly policy: Policy;
61
85
  readonly dropped: readonly HostedGrantDropped[];
62
86
  };
63
87
  /**
64
- * Hosted grants as an instance option: `policies: hostedPolicies(source)`.
65
- * The merge code ships only with an app that imports this function.
66
- * `source.current()` is read once per instance; a throw keeps the code
67
- * policy and is reported as an error event.
88
+ * Hosted grants as an instance option: `policies: hostedPolicies(source)`. The
89
+ * merge code ships only with an app that imports this function.
90
+ * `source.current()` is read once per instance; a throw keeps the code policy
91
+ * and is reported as an error event.
68
92
  */
69
93
  type HostedPolicies = {
70
94
  readonly feature: "hosted-policies";
@@ -75,4 +99,4 @@ type HostedPolicies = {
75
99
  };
76
100
  declare function hostedPolicies(source: PolicySource): HostedPolicies;
77
101
  //#endregion
78
- export { PolicyDocument as a, isPortableCondition as c, parsePolicyDocument as d, policyDocumentFromClaims as f, HostedPolicies as i, memoryPolicySource as l, HostedGrantDropReason as n, PolicySource as o, HostedGrantDropped as r, hostedPolicies as s, HostedGrant as t, mergeHostedGrants as u };
102
+ export { HostedPolicies as a, checkHostedGrant as c, memoryPolicySource as d, mergeHostedGrants as f, HostedGrantDropped as i, hostedPolicies as l, policyDocumentFromClaims as m, HostedGrantCheck as n, PolicyDocument as o, parsePolicyDocument as p, HostedGrantDropReason as r, PolicySource as s, HostedGrant as t, isPortableCondition as u };
@@ -1,13 +1,13 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { n as isForbiddenKey, s as splitPath } from "./paths-DXSHAMIa.js";
4
- import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-uWQZ4v84.js";
5
- import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
- import { d as isSelfParented } from "./resource-relations-D_jw0BFx.js";
7
- import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-DkWjdL98.js";
8
- import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
9
- import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-hxrUsbpM.js";
10
- import { i as indexPolicy, t as declaredRoleNames } from "./policy-DbM5YYtV.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { n as isForbiddenKey, s as splitPath } from "./paths-CUvURzHp.js";
4
+ import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-BK2-T6oD.js";
5
+ import { a as getResource, n as findPermission } from "./permission-registry-B8tYxPIt.js";
6
+ import { d as isSelfParented } from "./resource-relations-8-pCScBO.js";
7
+ import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-nR1JesoH.js";
8
+ import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
9
+ import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-Dke-9rd1.js";
10
+ import { a as indexPolicy, n as declaredRoleNames } from "./policy-CLQ8__GF.js";
11
11
  //#region src/core/hosted.ts
12
12
  function memoryPolicySource(document = null) {
13
13
  const current = document === null ? null : parsePolicyDocument(document);
@@ -37,7 +37,10 @@ function parsePolicyDocument(json) {
37
37
  if (typeof copy["id"] !== "string" || typeof copy["fingerprint"] !== "string" || typeof copy["catalog"] !== "string" || !isRfc3339(copy["issuedAt"]) || !Array.isArray(copy["grants"])) throw new TypeError("PermDock: malformed policy document");
38
38
  return freezeDeep(copy);
39
39
  }
40
- /** The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`. */
40
+ /**
41
+ * The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with
42
+ * `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`.
43
+ */
41
44
  function policyDocumentFromClaims(claims) {
42
45
  const claim = claims["policy"];
43
46
  const jti = claims["jti"];
@@ -71,7 +74,10 @@ function portableValue(value) {
71
74
  if (keys[0] === "ref") return safePath(value["ref"]);
72
75
  return keys[0] === "date" && typeof value["date"] === "string";
73
76
  }
74
- /** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
77
+ /**
78
+ * True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown
79
+ * op.
80
+ */
75
81
  function isPortableCondition(value) {
76
82
  if (!isRecord(value) || typeof value["op"] !== "string") return false;
77
83
  const op = value["op"];
@@ -105,7 +111,10 @@ function approvalRank(approval) {
105
111
  escalates: approval.escalation !== void 0
106
112
  };
107
113
  }
108
- /** A hosted approval must meet every approval a code allow requires on the permission. */
114
+ /**
115
+ * A hosted approval must meet every approval a code allow requires on the
116
+ * permission.
117
+ */
109
118
  function approvalAtLeast(hosted, code) {
110
119
  const mine = approvalRank(hosted);
111
120
  for (const required of code) {
@@ -120,10 +129,17 @@ function approvalAtLeast(hosted, code) {
120
129
  }
121
130
  return true;
122
131
  }
123
- /** A grantee kind this build does not know is never declared, so the hosted grant is dropped. */
132
+ /**
133
+ * A grantee kind this build does not know is never declared, so the hosted
134
+ * grant is dropped.
135
+ */
124
136
  function undeclaredKind(_grantee) {
125
137
  return false;
126
138
  }
139
+ /**
140
+ * Whether a hosted grant may name `grantee` on a permission of
141
+ * `permissionResource`.
142
+ */
127
143
  function declaredGrantee(policy, grantee, permissionResource) {
128
144
  switch (grantee.kind) {
129
145
  case "role": return declaredRoleNames(policy).has(grantee.role);
@@ -156,6 +172,13 @@ function granteesAcceptable(policy, raw, permissionResource) {
156
172
  const items = flattenGrantee(raw);
157
173
  return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
158
174
  }
175
+ /**
176
+ * The approvals the code allows on `key` carry; a hosted allow must meet each
177
+ * one.
178
+ */
179
+ function codeApprovals(policy, key) {
180
+ return policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === key).map((grant) => grant.approval);
181
+ }
159
182
  function buildGrant(policy, document, raw) {
160
183
  if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
161
184
  ok: false,
@@ -216,13 +239,10 @@ function buildGrant(policy, document, raw) {
216
239
  reason: "invalid"
217
240
  };
218
241
  }
219
- if (effect === "allow") {
220
- const codeApprovals = policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === permission.key).map((grant) => grant.approval);
221
- if (!approvalAtLeast(built.approval, codeApprovals)) return {
222
- ok: false,
223
- reason: "weaker-approval"
224
- };
225
- }
242
+ if (effect === "allow" && !approvalAtLeast(built.approval, codeApprovals(policy, permission.key))) return {
243
+ ok: false,
244
+ reason: "weaker-approval"
245
+ };
226
246
  return {
227
247
  ok: true,
228
248
  grant: freezeDeep({
@@ -234,7 +254,30 @@ function buildGrant(policy, document, raw) {
234
254
  })
235
255
  };
236
256
  }
237
- /** The grants of `document` that `policy` drops, in document order; `permdock/catalog` turns them into drift findings. */
257
+ const CHECKED_DOCUMENT = Object.freeze({
258
+ v: 1,
259
+ id: "",
260
+ fingerprint: "",
261
+ catalog: "",
262
+ issuedAt: "",
263
+ grants: Object.freeze([])
264
+ });
265
+ /**
266
+ * Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
267
+ * drop reason it would report when not. Needs no `PolicyDocument`, so a grant
268
+ * form can check a grant before it publishes one.
269
+ */
270
+ function checkHostedGrant(policy, grant) {
271
+ const result = buildGrant(policy, CHECKED_DOCUMENT, grant);
272
+ return result.ok ? { ok: true } : {
273
+ ok: false,
274
+ reason: result.reason
275
+ };
276
+ }
277
+ /**
278
+ * The grants of `document` that `policy` drops, in document order;
279
+ * `permdock/catalog` turns them into drift findings.
280
+ */
238
281
  function hostedGrantDrops(policy, document) {
239
282
  return document.grants.flatMap((raw) => {
240
283
  const result = buildGrant(policy, document, raw);
@@ -247,9 +290,9 @@ function hostedGrantDrops(policy, document) {
247
290
  });
248
291
  }
249
292
  /**
250
- * The code policy plus the hosted grants that pass every rule. Hosted
251
- * allows OR with code allows and any deny still wins, so a hosted grant can
252
- * never override a code deny; one that fails a rule is dropped, not thrown.
293
+ * The code policy plus the hosted grants that pass every rule. Hosted allows OR
294
+ * with code allows and any deny still wins, so a hosted grant can never
295
+ * override a code deny; one that fails a rule is dropped, not thrown.
253
296
  */
254
297
  function mergeHostedGrants(policy, document) {
255
298
  if (document === null || document.grants.length === 0) return {
@@ -312,4 +355,4 @@ function hostedPolicies(source) {
312
355
  });
313
356
  }
314
357
  //#endregion
315
- export { mergeHostedGrants as a, memoryPolicySource as i, hostedPolicies as n, parsePolicyDocument as o, isPortableCondition as r, policyDocumentFromClaims as s, hostedGrantDrops as t };
358
+ export { hostedPolicies as a, mergeHostedGrants as c, hostedGrantDrops as i, parsePolicyDocument as l, codeApprovals as n, isPortableCondition as o, declaredGrantee as r, memoryPolicySource as s, checkHostedGrant as t, policyDocumentFromClaims as u };
@@ -1,4 +1,4 @@
1
- import { i as headersFrom, n as firstHeader, t as fetchRequest } from "./http-BBoKefeS.js";
1
+ import { i as headersFrom, n as firstHeader, t as fetchRequest } from "./http-DKLXrFGk.js";
2
2
  //#region src/node/http.ts
3
3
  function toRequest(req, stream = req) {
4
4
  const host = firstHeader(req.headers.host) ?? "localhost";
@@ -9,9 +9,9 @@ function chunkOf(chunk) {
9
9
  return typeof chunk === "string" ? Buffer.from(chunk) : new Uint8Array(chunk);
10
10
  }
11
11
  /**
12
- * Pull-based with `highWaterMark: 0`: nothing is read from `req` until the
13
- * Web body is consumed, so a later body parser (multer, `express.json()`)
14
- * still sees the whole stream.
12
+ * Pull-based with `highWaterMark: 0`: nothing is read from `req` until the Web
13
+ * body is consumed, so a later body parser (multer, `express.json()`) still
14
+ * sees the whole stream.
15
15
  */
16
16
  function incomingBody(req) {
17
17
  return new ReadableStream({ pull(controller) {
@@ -1,5 +1,8 @@
1
1
  //#region src/server/http.ts
2
- /** Node-style headers (`IncomingHttpHeaders`, Fastify's) as Fetch `Headers`; repeated values stay separate. */
2
+ /**
3
+ * Node-style headers (`IncomingHttpHeaders`, Fastify's) as Fetch `Headers`;
4
+ * repeated values stay separate.
5
+ */
3
6
  function headersFrom(source) {
4
7
  const headers = new Headers();
5
8
  for (const [key, value] of Object.entries(source)) {
@@ -16,9 +19,9 @@ function firstHeader(value) {
16
19
  return value?.[0];
17
20
  }
18
21
  /**
19
- * A body a framework already parsed, as the text a Fetch `Request` carries.
20
- * A non-string body is serialised as JSON and, without a `content-type`,
21
- * labelled `application/json` on `headers`.
22
+ * A body a framework already parsed, as the text a Fetch `Request` carries. A
23
+ * non-string body is serialised as JSON and, without a `content-type`, labelled
24
+ * `application/json` on `headers`.
22
25
  */
23
26
  function parsedBody(body, headers) {
24
27
  if (body === void 0) return;
@@ -27,8 +30,8 @@ function parsedBody(body, headers) {
27
30
  return JSON.stringify(body);
28
31
  }
29
32
  /**
30
- * A Fetch `Request` for a framework request. A `GET` or `HEAD` carries no
31
- * body; otherwise the body the framework parsed, or else `stream()`.
33
+ * A Fetch `Request` for a framework request. A `GET` or `HEAD` carries no body;
34
+ * otherwise the body the framework parsed, or else `stream()`.
32
35
  */
33
36
  function fetchRequest(url, method, headers, body, stream) {
34
37
  if (method === "GET" || method === "HEAD") return new Request(url, {
@@ -64,7 +67,10 @@ function requestFromContext(context) {
64
67
  if ("request" in context && context.request instanceof Request) return context.request;
65
68
  if ("req" in context && context.req instanceof Request) return context.req;
66
69
  }
67
- /** Whether the caller sent credentials, which turns a `401` into a `WWW-Authenticate` challenge. */
70
+ /**
71
+ * Whether the caller sent credentials, which turns a `401` into a
72
+ * `WWW-Authenticate` challenge.
73
+ */
68
74
  function hasCredentials(request) {
69
75
  return request instanceof Request ? request.headers.has("authorization") : request.headers.authorization !== void 0;
70
76
  }
@@ -1,15 +1,18 @@
1
1
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
2
- import { a as describeError, n as CliError } from "./errors-CWTY6uih.js";
3
- import { s as cliVersion } from "./version-CEbQ5UeM.js";
4
- import "./device-BARQ8eYG.js";
2
+ import { a as describeError, n as CliError } from "./errors-Vpu6rKHl.js";
3
+ import { s as cliVersion } from "./version-DMQ0dnN5.js";
4
+ import "./device-BwbJNmb2.js";
5
5
  //#region src/cli/core/http.ts
6
- /** `permdock-cli/<version> node/<version> <platform>`, sent on every request the CLI makes. */
6
+ /**
7
+ * `permdock-cli/<version> node/<version> <platform>`, sent on every request the
8
+ * CLI makes.
9
+ */
7
10
  function userAgent() {
8
11
  return `permdock-cli/${cliVersion()} node/${process.versions.node} ${process.platform}`;
9
12
  }
10
13
  /**
11
- * Every outbound request: the user agent, a timeout joined to the run's
12
- * abort signal, and a `network_error` CLI error when nothing answers.
14
+ * Every outbound request: the user agent, a timeout joined to the run's abort
15
+ * signal, and a `network_error` CLI error when nothing answers.
13
16
  */
14
17
  async function httpRequest(io, request) {
15
18
  const fetchImpl = io.fetch ?? globalThis.fetch.bind(globalThis);
@@ -31,8 +34,8 @@ async function httpRequest(io, request) {
31
34
  }
32
35
  }
33
36
  /**
34
- * A 401 or 403 as an `auth_required` action: the credential is missing,
35
- * expired or lacks a scope, and `next` says how to get one.
37
+ * A 401 or 403 as an `auth_required` action: the credential is missing, expired
38
+ * or lacks a scope, and `next` says how to get one.
36
39
  */
37
40
  function authFailure(response, message, next) {
38
41
  if (response.status !== 401 && response.status !== 403) return;