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,11 +1,11 @@
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 } from "./paths-DXSHAMIa.js";
4
- import { l as isRfc3339 } from "./time-DkWjdL98.js";
5
- import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
6
- import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
7
- import { C as EVENT_SCHEMA_IDS, T as SINK_EVENT_SCHEMAS, i as RESERVED_CLOUD_EVENT_TYPES, l as isAbsoluteUri, r as CLOUD_EVENT_TYPES, s as cloudEventType, u as isTraceparent, v as CATALOG_EVENT_SCHEMA } from "./sink-BEZSlMS_.js";
8
- import { n as copyJson, t as checkSchema } from "./json-schema-B-vAwlde.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { n as isForbiddenKey } from "./paths-CUvURzHp.js";
4
+ import { l as isRfc3339 } from "./time-nR1JesoH.js";
5
+ import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
6
+ import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
7
+ import { C as EVENT_SCHEMA_IDS, T as SINK_EVENT_SCHEMAS, i as RESERVED_CLOUD_EVENT_TYPES, l as isAbsoluteUri, r as CLOUD_EVENT_TYPES, s as cloudEventType, u as isTraceparent, v as CATALOG_EVENT_SCHEMA } from "./sink-D9_vh372.js";
8
+ import { n as copyJson, t as checkSchema } from "./json-schema-BPGa-RjQ.js";
9
9
  //#region src/core/parse-sink-events.ts
10
10
  function hasUnsafeKey(value) {
11
11
  if (Array.isArray(value)) return value.some(hasUnsafeKey);
@@ -32,8 +32,8 @@ function rulesHold(event) {
32
32
  return true;
33
33
  }
34
34
  /**
35
- * Validates one untrusted sink event against its family's schema and returns
36
- * a frozen copy, or `null` for anything else. Never throws.
35
+ * Validates one untrusted sink event against its family's schema and returns a
36
+ * frozen copy, or `null` for anything else. Never throws.
37
37
  */
38
38
  function parseSinkEvent(value) {
39
39
  if (!isRecord(value)) return null;
@@ -46,8 +46,8 @@ function parseSinkEvent(value) {
46
46
  }
47
47
  /**
48
48
  * Validates an untrusted list of sink events, such as a request body a sink
49
- * receiver read. Each event that fails its schema is dropped, and a value
50
- * that is not an array yields no events. Never throws.
49
+ * receiver read. Each event that fails its schema is dropped, and a value that
50
+ * is not an array yields no events. Never throws.
51
51
  */
52
52
  function parseSinkEvents(value) {
53
53
  if (!Array.isArray(value)) return Object.freeze([]);
@@ -56,7 +56,10 @@ function parseSinkEvents(value) {
56
56
  return event === null ? [] : [event];
57
57
  }));
58
58
  }
59
- /** Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it does not match. */
59
+ /**
60
+ * Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it
61
+ * does not match.
62
+ */
60
63
  function parseCatalogEventData(value) {
61
64
  const copy = jsonMatching(value, CATALOG_EVENT_SCHEMA);
62
65
  return copy === null ? null : freezeDeep(copy);
@@ -141,9 +144,10 @@ function fingerprintInput(catalog) {
141
144
  return out;
142
145
  }
143
146
  /**
144
- * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON without `generatedAt`, `generator`, `fingerprint`
145
- * and every `permissions[].usages`, so neither the CLI version, the clock nor
146
- * call sites change it.
147
+ * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
148
+ * without `generatedAt`, `generator`, `fingerprint` and every
149
+ * `permissions[].usages`, so neither the CLI version, the clock nor call sites
150
+ * change it.
147
151
  */
148
152
  function catalogFingerprint(catalog) {
149
153
  if (!isRecord(catalog)) throw new TypeError("PermDock: a catalog must be an object");
@@ -0,0 +1 @@
1
+ export { t as catalogFile, n as runCatalog } from "./catalog-BFpz2EmT.js";
@@ -0,0 +1,60 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { k as isOperationEffect } from "./src-DZ0l9UAg.js";
3
+ import { o as isPermission } from "./permission-registry-B8tYxPIt.js";
4
+ import { r as isOperationRisk } from "./permissions-CVXmRILq.js";
5
+ import { i as configError } from "./errors-Vpu6rKHl.js";
6
+ import { a as rel } from "./files-BSjrtIHw.js";
7
+ import { a as loadModule, s as pickNamed } from "./load-DjSU5KXO.js";
8
+ import { existsSync } from "node:fs";
9
+ import { resolve } from "node:path";
10
+ //#region src/cli/catalog-operations.ts
11
+ function metaOf(name, value) {
12
+ const fail = (field) => {
13
+ throw configError(`PermDock CLI: operations.${name}.meta${field} is invalid`);
14
+ };
15
+ if (!isRecord(value)) return fail("");
16
+ const { risk, effects, title } = value;
17
+ if (risk !== void 0 && !isOperationRisk(risk)) return fail(".risk");
18
+ if (effects !== void 0 && (!Array.isArray(effects) || !effects.every(isOperationEffect))) return fail(".effects");
19
+ if (title !== void 0 && typeof title !== "string") return fail(".title");
20
+ return {
21
+ ...risk === void 0 ? {} : { risk },
22
+ ...effects === void 0 ? {} : { effects },
23
+ ...title === void 0 ? {} : { title }
24
+ };
25
+ }
26
+ /**
27
+ * The catalog entries of a `defineOperations` map, in definition order. Throws
28
+ * for a value that is not one, such as a module that exports the definitions
29
+ * object instead of the map.
30
+ */
31
+ function catalogOperations(value) {
32
+ if (!isRecord(value)) throw configError("PermDock CLI: operations export is not an operation map");
33
+ const out = [];
34
+ for (const name of Object.keys(value)) {
35
+ const operation = value[name];
36
+ if (!isRecord(operation) || operation["name"] !== name || !isPermission(operation["permission"])) throw configError(`PermDock CLI: operations.${name} is not an operation; export the defineOperations result`);
37
+ const results = operation["results"];
38
+ if (results !== void 0 && !isPermission(results)) throw configError(`PermDock CLI: operations.${name}.results is not a permission`);
39
+ out.push({
40
+ name,
41
+ permission: operation["permission"].key,
42
+ ...results === void 0 ? {} : { results: results.key },
43
+ meta: metaOf(name, operation["meta"])
44
+ });
45
+ }
46
+ return out;
47
+ }
48
+ /**
49
+ * The configured operations module's catalog entries; `undefined` without one.
50
+ * Throws when it is missing or does not load.
51
+ */
52
+ async function loadConfiguredOperations(cwd, path, options) {
53
+ if (path === void 0) return;
54
+ const abs = resolve(cwd, path);
55
+ if (!existsSync(abs)) throw configError(`PermDock CLI: operations module not found: ${rel(cwd, abs)}`);
56
+ const mod = await loadModule(abs, options);
57
+ return catalogOperations(pickNamed(mod, ["operations"]));
58
+ }
59
+ //#endregion
60
+ export { loadConfiguredOperations as t };
@@ -1,17 +1,24 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { i as dateAt, p as nowSeconds } from "./time-DkWjdL98.js";
4
- import { s as policyDocumentFromClaims } from "./hosted-B46-5LYE.js";
5
- import { l as isApprovalErrorCode, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
6
- import { h as toCloudEvent, l as isAbsoluteUri } from "./sink-BEZSlMS_.js";
7
- import { n as parseCatalogEventData, t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
8
- import { t as parseApprovalRequest } from "./parse-request-D_tUXG6M.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { i as dateAt, p as nowSeconds } from "./time-nR1JesoH.js";
4
+ import { u as policyDocumentFromClaims } from "./hosted-D0IzESu_.js";
5
+ import { l as isApprovalErrorCode, s as ApprovalError, t as APPROVAL_HEADER } from "./types-CcUXciSj.js";
6
+ import { h as toCloudEvent, l as isAbsoluteUri } from "./sink-D9_vh372.js";
7
+ import { n as parseCatalogEventData, t as catalogFingerprint } from "./catalog-fingerprint-e6aCWosn.js";
8
+ import { t as parseApprovalRequest } from "./parse-request-CwCZpyjV.js";
9
9
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
10
+ import { t as CLOUD_BASE_URL } from "./base-url-BQbddZO5.js";
10
11
  //#region src/cloud/approver.ts
11
12
  const APPROVER_HEADER = "PermDock-Approver";
12
- /** The RFC 9396 `authorization_details` type that binds an approver token to one verdict. */
13
+ /**
14
+ * The RFC 9396 `authorization_details` type that binds an approver token to one
15
+ * verdict.
16
+ */
13
17
  const APPROVAL_DETAIL_TYPE = "permdock_approval";
14
- /** Seconds an approver token lives: it proves one resolve call, and the Cloud refuses a replayed `jti`. */
18
+ /**
19
+ * Seconds an approver token lives: it proves one resolve call, and the Cloud
20
+ * refuses a replayed `jti`.
21
+ */
15
22
  const APPROVER_TTL = 60;
16
23
  async function facts(read, request, verdict, fallback) {
17
24
  if (read === void 0) return fallback ?? [];
@@ -24,7 +31,10 @@ async function facts(read, request, verdict, fallback) {
24
31
  function unauthenticated(detail) {
25
32
  return new ApprovalError("approver-unauthenticated", detail);
26
33
  }
27
- /** A rejection only denies, so the Cloud takes a `system` one without an approver token. */
34
+ /**
35
+ * A rejection only denies, so the Cloud takes a `system` one without an
36
+ * approver token.
37
+ */
28
38
  function isSystemRejection(verdict) {
29
39
  return verdict.status === "rejected" && verdict.by.actor?.kind === "system";
30
40
  }
@@ -35,10 +45,10 @@ function isSystemRejection(verdict) {
35
45
  * the request id, the verdict status, `vouched`, and the approver's
36
46
  * `permissions` and `relations`. With the `roles`, `memberships` and `tenant`
37
47
  * claims they are the only facts the Cloud checks a request's `approvers`
38
- * against in bring-your-own mode. `target` runs only after the
39
- * approver checks pass. Throws an `ApprovalError` before any resolve when the
40
- * approver cannot be proven: no signer, no principal, an actor, a failed
41
- * lookup or a signer failure.
48
+ * against in bring-your-own mode. `target` runs only after the approver checks
49
+ * pass. Throws an `ApprovalError` before any resolve when the approver cannot
50
+ * be proven: no signer, no principal, an actor, a failed lookup or a signer
51
+ * failure.
42
52
  */
43
53
  async function approverHeaders(verdict, options, issuer, target) {
44
54
  if (isSystemRejection(verdict)) return {};
@@ -79,7 +89,10 @@ async function approverHeaders(verdict, options, issuer, target) {
79
89
  }
80
90
  //#endregion
81
91
  //#region src/cloud/request.ts
82
- /** Milliseconds a PermDock Cloud request may take; a slower one fails like an unreachable Cloud. */
92
+ /**
93
+ * Milliseconds a PermDock Cloud request may take; a slower one fails like an
94
+ * unreachable Cloud.
95
+ */
83
96
  const CLOUD_TIMEOUT_MS = 1e4;
84
97
  function readEnv(name) {
85
98
  const value = globalThis.process?.env?.[name];
@@ -92,44 +105,99 @@ function firstNonEmpty(...values) {
92
105
  function trimSlash(value) {
93
106
  return value.endsWith("/") ? value.slice(0, -1) : value;
94
107
  }
95
- /**
96
- * The environment URL and JWK Set URL `cloud()` uses, resolved with the same
97
- * fallbacks (`PERMDOCK_CLOUD_URL`; `PERMDOCK_CLOUD_ENV`, `VERCEL_ENV`, `production`).
98
- */
99
- function cloudEndpoints(options = {}) {
100
- const url = trimSlash(firstNonEmpty(options.url, readEnv("PERMDOCK_CLOUD_URL")));
101
- if (url === "") throw new Error("PermDock: cloud() requires url and key.");
102
- const environment = firstNonEmpty(options.environment, readEnv("PERMDOCK_CLOUD_ENV"), readEnv("VERCEL_ENV"), "production");
108
+ function cloudUrl(options) {
109
+ return trimSlash(firstNonEmpty(options.url, readEnv("PERMDOCK_CLOUD_URL"), CLOUD_BASE_URL));
110
+ }
111
+ function endpointsOf(url, environment) {
103
112
  const issuer = `${url}/v1/environments/${encodeURIComponent(environment)}`;
104
113
  return Object.freeze({
105
114
  issuer,
106
115
  jwks: `${issuer}/.well-known/jwks.json`
107
116
  });
108
117
  }
109
- /** The authenticated connection every `permdock/cloud` client shares. Throws without a URL or key. */
118
+ /**
119
+ * `options.environment`, else `PERMDOCK_CLOUD_ENV`, else `""` for the key-bound
120
+ * lookup.
121
+ */
122
+ function configuredEnvironment(options) {
123
+ return firstNonEmpty(options.environment, readEnv("PERMDOCK_CLOUD_ENV"));
124
+ }
125
+ /**
126
+ * The environment URL and JWK Set URL `cloud()` uses when the environment is
127
+ * configured: `environment`, else `PERMDOCK_CLOUD_ENV`. Throws when neither is
128
+ * set; `resolveCloudEndpoints` then asks the Cloud which environment the key
129
+ * belongs to.
130
+ */
131
+ function cloudEndpoints(options = {}) {
132
+ const url = cloudUrl(options);
133
+ const environment = configuredEnvironment(options);
134
+ if (environment === "") throw new Error("PermDock: cloudEndpoints() requires environment or PERMDOCK_CLOUD_ENV; resolveCloudEndpoints() asks the Cloud for the key's environment.");
135
+ return endpointsOf(url, environment);
136
+ }
137
+ async function keyEnvironment(url, key, fetchFn) {
138
+ const response = await fetchFn(`${url}/v1/environment`, {
139
+ headers: {
140
+ authorization: `Bearer ${key}`,
141
+ accept: "application/json"
142
+ },
143
+ signal: timeoutSignal(CLOUD_TIMEOUT_MS)
144
+ });
145
+ if (!response.ok) throw new Error(`PermDock Cloud did not name the key's environment: HTTP ${String(response.status)}`);
146
+ const body = await response.json();
147
+ if (!isRecord(body) || typeof body["environment"] !== "string") throw new Error("PermDock Cloud answered GET /v1/environment in an unknown shape");
148
+ const endpoints = endpointsOf(url, body["environment"]);
149
+ if (body["issuer"] !== endpoints.issuer) throw new Error(`PermDock Cloud named issuer ${String(body["issuer"])}, not ${endpoints.issuer}`);
150
+ return endpoints;
151
+ }
152
+ /**
153
+ * The authenticated connection every `permdock/cloud` client shares. Throws
154
+ * without a key.
155
+ */
110
156
  function cloudConnection(options) {
111
157
  const key = firstNonEmpty(options.key, readEnv("PERMDOCK_CLOUD_KEY"));
112
- if (key === "") throw new Error("PermDock: cloud() requires url and key.");
113
- const endpoints = cloudEndpoints(options);
158
+ const url = cloudUrl(options);
159
+ if (key === "") throw new Error("PermDock: cloud() requires a key (PERMDOCK_CLOUD_KEY).");
160
+ const environment = configuredEnvironment(options);
161
+ const known = environment === "" ? void 0 : endpointsOf(url, environment);
114
162
  const fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
115
- const request = (path, init = {}, accept, contentType) => {
163
+ let pending;
164
+ const endpoints = () => {
165
+ if (known !== void 0) return Promise.resolve(known);
166
+ pending ??= keyEnvironment(url, key, fetchFn).catch((error) => {
167
+ pending = void 0;
168
+ throw error;
169
+ });
170
+ return pending;
171
+ };
172
+ const request = async (path, init = {}, accept, contentType) => {
173
+ const { issuer } = await endpoints();
116
174
  const headers = new Headers();
117
175
  headers.set("authorization", `Bearer ${key}`);
118
176
  headers.set("content-type", "application/json");
119
177
  for (const [name, value] of new Headers(init.headers)) headers.set(name, value);
120
178
  if (accept !== void 0) headers.set("accept", accept);
121
179
  if (contentType !== void 0) headers.set("content-type", contentType);
122
- return fetchFn(`${endpoints.issuer}${path}`, {
180
+ return fetchFn(`${issuer}${path}`, {
123
181
  ...init,
124
182
  headers,
125
183
  signal: timeoutSignal(CLOUD_TIMEOUT_MS, init.signal)
126
184
  });
127
185
  };
128
186
  return Object.freeze({
129
- ...endpoints,
187
+ known,
188
+ endpoints,
130
189
  request
131
190
  });
132
191
  }
192
+ /**
193
+ * The environment URL and JWK Set URL for a key: `cloudEndpoints(options)` when
194
+ * the environment is configured, else the environment `GET /v1/environment`
195
+ * names for `key` (`PERMDOCK_CLOUD_KEY`). Rejects when the Cloud does not
196
+ * answer or answers another issuer.
197
+ */
198
+ async function resolveCloudEndpoints(options = {}) {
199
+ return await cloudConnection(options).endpoints();
200
+ }
133
201
  /** `true` for a compact JWS: three dot-separated parts, not JSON. */
134
202
  function isCompactJws(value) {
135
203
  return !value.startsWith("{") && value.split(".").length === 3;
@@ -162,7 +230,10 @@ function asApproval(value) {
162
230
  if (!isRecord(value) || value["v"] !== 1 || typeof value["token"] !== "string") return null;
163
231
  return value;
164
232
  }
165
- /** The refusal PermDock Cloud names in its body, else the one its status implies. */
233
+ /**
234
+ * The refusal PermDock Cloud names in its body, else the one its status
235
+ * implies.
236
+ */
166
237
  async function approvalErrorFrom(response) {
167
238
  let body;
168
239
  try {
@@ -182,7 +253,7 @@ function approvalErrorFromStatus(status) {
182
253
  return new ApprovalError("approval-not-found", "approval was not found");
183
254
  }
184
255
  function cloud(options = {}) {
185
- const { issuer: root, jwks, request } = cloudConnection(options);
256
+ const { known, endpoints, request } = cloudConnection(options);
186
257
  const flushAt = options.flushAt ?? 32;
187
258
  const waitUntil = options.waitUntil;
188
259
  const approvals = {
@@ -211,7 +282,7 @@ function cloud(options = {}) {
211
282
  }
212
283
  },
213
284
  async resolve(token, verdict) {
214
- const approver = await approverHeaders(verdict, options.approver, root, async () => {
285
+ const approver = await approverHeaders(verdict, options.approver, (await endpoints()).issuer, async () => {
215
286
  const response = await request("/approvals/by-token", { headers: { [APPROVAL_HEADER]: token } });
216
287
  if (!response.ok) throw await approvalErrorFrom(response);
217
288
  const found = parseApprovalRequest(await response.json());
@@ -306,8 +377,7 @@ function cloud(options = {}) {
306
377
  }
307
378
  };
308
379
  const capacity = options.capacity ?? 1e4;
309
- const source = options.source ?? root;
310
- if (!isAbsoluteUri(source)) throw new TypeError("PermDock: cloud() source is an absolute URI");
380
+ if (options.source !== void 0 && !isAbsoluteUri(options.source)) throw new TypeError("PermDock: cloud() source is an absolute URI");
311
381
  const pending = [];
312
382
  const bound = () => {
313
383
  if (pending.length > capacity) pending.splice(0, pending.length - capacity);
@@ -316,6 +386,7 @@ function cloud(options = {}) {
316
386
  if (pending.length === 0) return;
317
387
  const events = pending.splice(0);
318
388
  try {
389
+ const source = options.source ?? (await endpoints()).issuer;
319
390
  if (!(await request("/decisions", {
320
391
  method: "POST",
321
392
  body: JSON.stringify(events.map((event) => toCloudEvent(event, { source })))
@@ -342,6 +413,13 @@ function cloud(options = {}) {
342
413
  return text;
343
414
  } });
344
415
  let document = null;
416
+ let built;
417
+ const policyVerifier = (resolved) => {
418
+ const verifier = options.verifier;
419
+ if (typeof verifier !== "function") return verifier;
420
+ built ??= verifier(resolved);
421
+ return built;
422
+ };
345
423
  return freezeDeep({
346
424
  approvals,
347
425
  sink,
@@ -351,10 +429,15 @@ function cloud(options = {}) {
351
429
  return document;
352
430
  },
353
431
  async refresh() {
354
- const verifier = options.verifier;
355
- if (verifier === void 0) return;
432
+ if (options.verifier === void 0) return;
356
433
  let response;
434
+ let root;
435
+ let verifier;
357
436
  try {
437
+ const resolved = await endpoints();
438
+ root = resolved.issuer;
439
+ verifier = policyVerifier(resolved);
440
+ if (verifier === void 0) return;
358
441
  response = await request("/policy");
359
442
  } catch {
360
443
  return;
@@ -395,9 +478,44 @@ function cloud(options = {}) {
395
478
  if (parsed === null) throw new Error("PermDock Cloud answered the catalog push in an unknown shape");
396
479
  return parsed;
397
480
  } },
398
- issuer: root,
399
- jwks
481
+ endpoints,
482
+ ...known
400
483
  });
401
484
  }
402
485
  //#endregion
403
- export { approverHeaders as a, isCompactJws as i, cloudConnection as n, cloudEndpoints as r, cloud as t };
486
+ //#region src/cloud/challenge.ts
487
+ const SCHEME = /^[\s,]*([!#$%&'*+.^_`|~0-9A-Za-z-]+)(?=[\s,]|$)/u;
488
+ const PARAM = /^\s*([!#$%&'*+.^_`|~0-9A-Za-z-]+)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([!#$%&'*+.^_`|~0-9A-Za-z-]+))\s*(?:,|$)/u;
489
+ const TOKEN68 = /^\s*[A-Za-z0-9._~+/-]+=*\s*(?:,|$)/u;
490
+ /**
491
+ * The first `Bearer` challenge in `header` (RFC 9110 section 11.6.1 syntax), or
492
+ * `null`. Other schemes in the same field are skipped.
493
+ */
494
+ function bearerChallenge(header) {
495
+ if (header === null) return null;
496
+ let rest = header;
497
+ while (rest.trim() !== "") {
498
+ const scheme = SCHEME.exec(rest);
499
+ if (scheme === null) return null;
500
+ rest = rest.slice(scheme[0].length);
501
+ const entries = [];
502
+ let param = PARAM.exec(rest);
503
+ if (param === null) {
504
+ const token68 = TOKEN68.exec(rest);
505
+ rest = token68 === null ? rest : rest.slice(token68[0].length);
506
+ }
507
+ while (param !== null) {
508
+ const quoted = param[2];
509
+ entries.push([(param[1] ?? "").toLowerCase(), quoted === void 0 ? param[3] ?? "" : quoted.replaceAll(/\\(.)/gu, "$1")]);
510
+ rest = rest.slice(param[0].length);
511
+ param = PARAM.exec(rest);
512
+ }
513
+ if ((scheme[1] ?? "").toLowerCase() === "bearer") return Object.freeze({
514
+ scheme: "bearer",
515
+ params: Object.freeze(Object.fromEntries(entries))
516
+ });
517
+ }
518
+ return null;
519
+ }
520
+ //#endregion
521
+ export { isCompactJws as a, cloudEndpoints as i, cloud as n, resolveCloudEndpoints as o, cloudConnection as r, approverHeaders as s, bearerChallenge as t };
@@ -1,2 +1,2 @@
1
- import { a as ChatCommandResult, c as createPermDock, d as SubjectFromChatOptions, f as isChatAuthor, i as ChatCommandContext, l as ChatAuthor, n as ChatActionResult, o as ChatPermDock, p as subjectFromChat, r as ChatCommand, s as ChatPermDockOptions, t as ChatAction, u as ChatPrincipal } from "../create-B30OMUOJ.js";
1
+ import { a as ChatCommandResult, c as createPermDock, d as SubjectFromChatOptions, f as isChatAuthor, i as ChatCommandContext, l as ChatAuthor, n as ChatActionResult, o as ChatPermDock, p as subjectFromChat, r as ChatCommand, s as ChatPermDockOptions, t as ChatAction, u as ChatPrincipal } from "../create-BVq1lNQE.js";
2
2
  export { type ChatAction, type ChatActionResult, type ChatAuthor, type ChatCommand, type ChatCommandContext, type ChatCommandResult, type ChatPermDock, type ChatPermDockOptions, type ChatPrincipal, type SubjectFromChatOptions, createPermDock, isChatAuthor, subjectFromChat };
@@ -1,11 +1,11 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
- import { n as loadPrincipalByIdentity } from "../principal-source-pHneukrx.js";
4
- import { f as nowMillis } from "../time-DkWjdL98.js";
5
- import { c as withApp, t as getPermDock } from "../permdock-BrAscV28.js";
6
- import { c as isApprovalError } from "../types-DqzsnlSA.js";
7
- import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-CBYVMjwh.js";
8
- import { t as approvalPrompt } from "../approval-prompt-Dg5LeAcT.js";
2
+ import { n as freezeDeep } from "../freeze-jjan0lCv.js";
3
+ import { n as loadPrincipalByIdentity } from "../principal-source-C6N60GtM.js";
4
+ import { f as nowMillis } from "../time-nR1JesoH.js";
5
+ import { l as withApp, t as getPermDock } from "../permdock-L-_I_3zP.js";
6
+ import { c as isApprovalError } from "../types-CcUXciSj.js";
7
+ import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-DJicaG6f.js";
8
+ import { t as approvalPrompt } from "../approval-prompt-B8hQY69x.js";
9
9
  //#region src/chat/subject.ts
10
10
  function nonEmpty(value) {
11
11
  return typeof value === "string" && value !== "";
@@ -17,7 +17,10 @@ function isChatAuthor(value) {
17
17
  const workspace = Reflect.get(value, "workspace");
18
18
  return nonEmpty(provider) && nonEmpty(userId) && (workspace === void 0 || nonEmpty(workspace));
19
19
  }
20
- /** The principal linked to `author`, or `null` for an unlinked or malformed author. Never throws. */
20
+ /**
21
+ * The principal linked to `author`, or `null` for an unlinked or malformed
22
+ * author. Never throws.
23
+ */
21
24
  function principalFromChat(author, principals) {
22
25
  if (!isChatAuthor(author)) return Promise.resolve(null);
23
26
  return loadPrincipalByIdentity(principals, compact({
@@ -28,8 +31,8 @@ function principalFromChat(author, principals) {
28
31
  }));
29
32
  }
30
33
  /**
31
- * The subject a chat author acts as: the principal its identity link
32
- * names, or anonymous when there is no link. Never throws.
34
+ * The subject a chat author acts as: the principal its identity link names, or
35
+ * anonymous when there is no link. Never throws.
33
36
  */
34
37
  async function subjectFromChat(author, options) {
35
38
  return {
@@ -1,17 +1,20 @@
1
- import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-DvSSPQJX.js";
2
- import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-B30OMUOJ.js";
3
- import { n as ChatTransport } from "../types-BtHtcKMr.js";
1
+ import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-PYagyQUj.js";
2
+ import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-BVq1lNQE.js";
3
+ import { n as ChatTransport } from "../types-yUuPR5Hy.js";
4
4
  import { ActionEvent, Author, CardElement } from "chat";
5
5
  //#region src/chat-sdk/author.d.ts
6
6
  type ChatSdkAuthorOptions = {
7
- /** The platform workspace the bot is installed in, matched against identity links. */
7
+ /**
8
+ * The platform workspace the bot is installed in, matched against identity
9
+ * links.
10
+ */
8
11
  readonly workspace?: string;
9
12
  };
10
13
  /**
11
14
  * The `ChatAuthor` of a Chat SDK message or action, named by its adapter
12
- * (`adapter.name`, such as `slack`). `null` for a bot, this bot, the
13
- * platform itself or an empty id. Reads only `userId`: the email and display
14
- * name never identify anyone.
15
+ * (`adapter.name`, such as `slack`). `null` for a bot, this bot, the platform
16
+ * itself or an empty id. Reads only `userId`: the email and display name never
17
+ * identify anyone.
15
18
  */
16
19
  export declare function chatSdkAuthor(user: Pick<Author, "userId" | "isBot" | "isMe" | "isSystem">, adapter: {
17
20
  readonly name: string;
@@ -23,17 +26,23 @@ export declare const APPROVE_ACTION = "permdock:approve";
23
26
  /** The `actionId` of the card's reject button; its `value` is the request id. */
24
27
  export declare const REJECT_ACTION = "permdock:reject";
25
28
  type ApprovalCardOptions = {
26
- /** The app's approval page: a base URL the request id is appended to, or a function of the prompt. Must be https. */
29
+ /**
30
+ * The app's approval page: a base URL the request id is appended to, or a
31
+ * function of the prompt. Must be https.
32
+ */
27
33
  readonly approvalUrl: ApprovalUrl;
28
- /** `false` leaves out the approve and reject buttons, so the page is the only place to decide. Defaults to `true`. */
34
+ /**
35
+ * `false` leaves out the approve and reject buttons, so the page is the only
36
+ * place to decide. Defaults to `true`.
37
+ */
29
38
  readonly buttons?: boolean;
30
39
  };
31
40
  /**
32
- * A Chat SDK card for an approval prompt: the detail, who asked, the
33
- * permission and the expiry, a link to the approval page, and approve and
34
- * reject buttons that carry the request id, never its token. A click is
35
- * applied by `approvalActions` as the verified clicking user. Throws a
36
- * `TypeError` for an approval page that is not https.
41
+ * A Chat SDK card for an approval prompt: the detail, who asked, the permission
42
+ * and the expiry, a link to the approval page, and approve and reject buttons
43
+ * that carry the request id, never its token. A click is applied by
44
+ * `approvalActions` as the verified clicking user. Throws a `TypeError` for an
45
+ * approval page that is not https.
37
46
  */
38
47
  export declare function approvalCard(prompt: ApprovalPrompt, options: ApprovalCardOptions): CardElement;
39
48
  //#endregion
@@ -46,31 +55,40 @@ type ApprovalActionsOptions = ChatSdkAuthorOptions & {
46
55
  readonly onResult?: (result: ChatActionResult, event: ActionEvent) => void | Promise<void>;
47
56
  };
48
57
  type ApprovalActions = {
49
- /** The action ids to register: `chat.onAction(actions.actionIds, actions.onAction)`. */
58
+ /**
59
+ * The action ids to register: `chat.onAction(actions.actionIds,
60
+ * actions.onAction)`.
61
+ */
50
62
  readonly actionIds: readonly [typeof APPROVE_ACTION, typeof REJECT_ACTION];
51
63
  readonly onAction: (event: ActionEvent) => Promise<void>;
52
64
  };
53
65
  /**
54
- * Applies the approve and reject buttons of `approvalCard`. The clicking
55
- * user, as the Chat SDK adapter verified them, is resolved through
56
- * `ChatPermDock.resolveAction`; the button value names the request by id.
57
- * A click from an unlinked user, the requester or a bot records nothing.
66
+ * Applies the approve and reject buttons of `approvalCard`. The clicking user,
67
+ * as the Chat SDK adapter verified them, is resolved through
68
+ * `ChatPermDock.resolveAction`; the button value names the request by id. A
69
+ * click from an unlinked user, the requester or a bot records nothing.
58
70
  */
59
71
  export declare function approvalActions(permdock: ChatPermDock, options?: ApprovalActionsOptions): ApprovalActions;
60
72
  //#endregion
61
73
  //#region src/chat-sdk/transport.d.ts
62
74
  /** The part of a Chat SDK `Chat` the transport calls; a `new Chat(...)` fits. */
63
75
  type ChatSdkClient = {
64
- openDM(user: string): Promise<{
65
- post(message: string | CardElement): Promise<{
76
+ openDM: (user: string) => Promise<{
77
+ post: (message: string | CardElement) => Promise<{
66
78
  readonly id: string;
67
79
  }>;
68
80
  }>;
69
81
  };
70
82
  type ChatSdkTransportOptions = {
71
- /** The adapter name recipients are on (`slack`, `teams`, …); a target for another provider is rejected. */
83
+ /**
84
+ * The adapter name recipients are on (`slack`, `teams`, …); a target for
85
+ * another provider is rejected.
86
+ */
72
87
  readonly provider: string;
73
- /** The workspace the bot is installed in; a target for another workspace is rejected. */
88
+ /**
89
+ * The workspace the bot is installed in; a target for another workspace is
90
+ * rejected.
91
+ */
74
92
  readonly workspace?: string;
75
93
  /** Keys this transport remembers to skip a repeat post. Defaults to 1000. */
76
94
  readonly remember?: number;
@@ -78,9 +96,9 @@ type ChatSdkTransportOptions = {
78
96
  /**
79
97
  * The chat channel of `permdock/delivery` over the Chat SDK: opens a direct
80
98
  * message with the target's platform user id and posts the text, or the
81
- * approval card when the message carries an approval prompt. The Chat SDK
82
- * takes no idempotency key, so the transport skips a key it already sent,
83
- * per instance and in memory only.
99
+ * approval card when the message carries an approval prompt. The Chat SDK takes
100
+ * no idempotency key, so the transport skips a key it already sent, per
101
+ * instance and in memory only.
84
102
  */
85
103
  export declare function chatSdkTransport(chat: ChatSdkClient, options: ChatSdkTransportOptions): ChatTransport;
86
104
  //#endregion