permdock 0.6.0 → 0.7.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 (399) hide show
  1. package/README.md +1 -0
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +5 -5
  4. package/dist/a2a/index.js +4 -4
  5. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-D-feE7BE.js} +1 -1
  6. package/dist/agent/index.d.ts +3 -3
  7. package/dist/agent/index.js +1 -1
  8. package/dist/ai-sdk/index.d.ts +21 -6
  9. package/dist/ai-sdk/index.js +19 -9
  10. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
  11. package/dist/approvals/index.d.ts +4 -4
  12. package/dist/approvals/index.js +4 -4
  13. package/dist/{approvals-p1PGoVjb.js → approvals-CMRfsbBh.js} +74 -48
  14. package/dist/{arazzo-41WuzHou.js → arazzo-ClrF3PVb.js} +2 -2
  15. package/dist/{arazzo-CaUVBn7D.js → arazzo-rdeJ8n1J.js} +4 -4
  16. package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
  17. package/dist/astro/index.d.ts +6 -6
  18. package/dist/astro/index.js +2 -2
  19. package/dist/{audience-DabClFLQ.js → audience-BrMs8c4o.js} +1 -1
  20. package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
  21. package/dist/authzen/index.d.ts +162 -22
  22. package/dist/authzen/index.js +315 -146
  23. package/dist/{automation-BNM3TtDo.d.ts → automation-DOtAFWdy.d.ts} +3 -3
  24. package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
  25. package/dist/base-url-BQbddZO5.js +9 -0
  26. package/dist/better-auth/index.d.ts +2 -2
  27. package/dist/better-auth/index.js +2 -2
  28. package/dist/better-supabase/index.d.ts +50 -8
  29. package/dist/better-supabase/index.js +94 -32
  30. package/dist/{bind-CAvgUuKs.js → bind-D1nO6fiC.js} +5 -5
  31. package/dist/{bind-DOyrv6zi.d.ts → bind-JDuvxjuW.d.ts} +7 -7
  32. package/dist/{build-instance-Bu_eDqYw.js → build-instance-DxE7czo9.js} +1 -1
  33. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  34. package/dist/{capability-Drg-1YhL.d.ts → capability-D4UC9TTW.d.ts} +2 -2
  35. package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
  36. package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
  37. package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
  38. package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
  39. package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
  40. package/dist/catalog/index.d.ts +70 -10
  41. package/dist/catalog/index.js +112 -6
  42. package/dist/catalog-BCCjSAdH.js +1 -0
  43. package/dist/{catalog-DZVbrF-z.js → catalog-BaMQfQ6Y.js} +3 -3
  44. package/dist/{catalog-HD2gf5mY.js → catalog-D69WhFii.js} +43 -13
  45. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-CV9s6B1S.js} +28 -5
  46. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
  47. package/dist/{create-CQWIpUG-.js → challenge-nGWma08S.js} +122 -25
  48. package/dist/chat/index.d.ts +1 -1
  49. package/dist/chat/index.js +2 -2
  50. package/dist/chat-sdk/index.d.ts +3 -3
  51. package/dist/checks-BC_0mPIq.js +37 -0
  52. package/dist/claude-agent/index.d.ts +3 -3
  53. package/dist/claude-agent/index.js +2 -2
  54. package/dist/clerk/index.d.ts +3 -3
  55. package/dist/clerk/index.js +1 -1
  56. package/dist/cli/bin.js +2 -2
  57. package/dist/cli/index.d.ts +3 -3
  58. package/dist/cli/index.js +3 -3
  59. package/dist/cloud/index.d.ts +127 -11
  60. package/dist/cloud/index.js +251 -3
  61. package/dist/{cloud-ytQ3uviA.js → cloud-CO8pYtwr.js} +5 -5
  62. package/dist/{codemod-ua2hHy7w.js → codemod-BP6n8N9L.js} +3 -3
  63. package/dist/{codemod-5mpSpnUY.js → codemod-i4N2BhDc.js} +3 -3
  64. package/dist/{collect-mLTY4nwb.js → collect-BaWeMjwV.js} +17 -8
  65. package/dist/{collect-Ci6akVwH.js → collect-DNm3oKOk.js} +6 -5
  66. package/dist/collect-k_Dulxr5.js +1 -0
  67. package/dist/compile/index.d.ts +1 -1
  68. package/dist/compile/index.js +1 -1
  69. package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
  70. package/dist/{compile-1bsAezL0.d.ts → compile-COM2VKuN.d.ts} +3 -3
  71. package/dist/{completion-BTFrHZhX.js → completion-BNdVf7X2.js} +3 -3
  72. package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
  73. package/dist/{config-Bj2Ixq3d.js → config-DGZzMV1B.js} +2 -2
  74. package/dist/{config-report-DSpsLpCE.js → config-report-Cm7UITNA.js} +3 -3
  75. package/dist/connector-schema-_VCSsdtD.js +433 -0
  76. package/dist/{context-B_u3_bDJ.js → context--uM9V3Ui.js} +2 -2
  77. package/dist/convex/index.d.ts +5 -5
  78. package/dist/convex/index.js +2 -2
  79. package/dist/core-B5-w6Kw9.js +335 -0
  80. package/dist/core-CQkE8Esr.d.ts +179 -0
  81. package/dist/{create-B30OMUOJ.d.ts → create-B2-CQqCI.d.ts} +5 -5
  82. package/dist/{create-CGm28gyI.js → create-Cb86Z8Im.js} +9 -8
  83. package/dist/{create-DCF2SvoT.js → create-DJrlhEp9.js} +5 -5
  84. package/dist/{create-D_NmPOdH.d.ts → create-QHuuPw3q.d.ts} +7 -7
  85. package/dist/{create-CBMmFie-.d.ts → create-UTnUVETj.d.ts} +30 -10
  86. package/dist/{credential-BcoiejpY.js → credential-CIM7wHwA.js} +4 -4
  87. package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
  88. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
  89. package/dist/{delegation-j6-rc37o.js → delegation-C5rOdTp5.js} +5 -5
  90. package/dist/delivery/index.d.ts +5 -5
  91. package/dist/delivery/index.js +4 -3
  92. package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
  93. package/dist/{denied-text-CiFQNuMV.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
  94. package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
  95. package/dist/{describe-B5qgDvEW.d.ts → describe-O0SwYIK8.d.ts} +2 -2
  96. package/dist/{diff-CmuSD3vc.js → diff-Btr1c1Ow.js} +2 -2
  97. package/dist/{diff-3jbx6Rm4.js → diff-DzT-xD13.js} +10 -10
  98. package/dist/{doctor-BdZw53-k.js → doctor-BU1szn63.js} +241 -49
  99. package/dist/{doctor-3ZqNHX_G.js → doctor-BoK_y0KO.js} +4 -4
  100. package/dist/drizzle/index.d.ts +3 -3
  101. package/dist/drizzle/index.js +1 -1
  102. package/dist/elysia/index.d.ts +5 -5
  103. package/dist/elysia/index.js +3 -3
  104. package/dist/{errors-DH5QEGXh.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
  105. package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
  106. package/dist/{evaluate-CNClBvcj.js → evaluate-B_oqFbWC.js} +55 -12
  107. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
  108. package/dist/{evaluations-beAooV0n.js → evaluations-DReoiVBw.js} +4 -4
  109. package/dist/eve/index.d.ts +5 -5
  110. package/dist/eve/index.js +3 -3
  111. package/dist/express/index.d.ts +5 -5
  112. package/dist/express/index.js +3 -3
  113. package/dist/fastify/index.d.ts +5 -5
  114. package/dist/fastify/index.js +3 -3
  115. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
  116. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-De-u6vhJ.js} +3 -3
  117. package/dist/{fields-OYG_JR78.js → fields-ClcQLrVc.js} +48 -13
  118. package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
  119. package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
  120. package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
  121. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-Bz469dIh.js} +17 -10
  122. package/dist/generate-3FNO5P5Q.js +159 -0
  123. package/dist/{grantee-hxrUsbpM.js → grantee-BrRANrpT.js} +1 -1
  124. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
  125. package/dist/{grantee-match-DbENBHLB.js → grantee-match-0RtHWQDx.js} +3 -3
  126. package/dist/h3/index.d.ts +4 -4
  127. package/dist/h3/index.js +3 -3
  128. package/dist/{helpers-CBYVMjwh.js → helpers-DY3vXuGs.js} +3 -3
  129. package/dist/hono/index.d.ts +5 -5
  130. package/dist/hono/index.js +3 -3
  131. package/dist/{hosted-BPk51-kX.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
  132. package/dist/{hosted-B46-5LYE.js → hosted-XBgU6RGT.js} +34 -12
  133. package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
  134. package/dist/{import-wyqXUyjm.js → import-Bz0GefWg.js} +5 -5
  135. package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
  136. package/dist/{index-C-6Letxg.d.ts → index-BE8y3moU.d.ts} +50 -8
  137. package/dist/{index-B8YjkEZ4.d.ts → index-BSfRl0hZ.d.ts} +6 -6
  138. package/dist/{index-DuWxc5dt.d.ts → index-BTkwrK7v.d.ts} +143 -14
  139. package/dist/index-CMiPH2Tv.d.ts +206 -0
  140. package/dist/{index-Ch8LpNDp.d.ts → index-DH9DUDEM.d.ts} +18 -3
  141. package/dist/{index-CueFnxQc.d.ts → index-DLwcuCN_.d.ts} +86 -7
  142. package/dist/index.d.ts +18 -17
  143. package/dist/index.js +27 -25
  144. package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
  145. package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
  146. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
  147. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot-CjcwnEiV.js} +16 -11
  148. package/dist/jwt/index.d.ts +83 -5
  149. package/dist/jwt/index.js +143 -5
  150. package/dist/{kernel-D0NVb1cK.js → kernel-DVExUwkp.js} +138 -12
  151. package/dist/kysely/index.d.ts +3 -3
  152. package/dist/kysely/index.js +1 -1
  153. package/dist/load-DrMHXzgN.js +1 -0
  154. package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
  155. package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
  156. package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
  157. package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
  158. package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
  159. package/dist/{manifest-dvL2XEe1.js → manifest-Dv6q4i5s.js} +54 -35
  160. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
  161. package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
  162. package/dist/{map-error-Dr70oA_3.js → map-error-BQGyDm_M.js} +1 -1
  163. package/dist/mcp/index.d.ts +64 -10
  164. package/dist/mcp/index.js +151 -22
  165. package/dist/{migrate-CIq4-E9F.js → migrate-Dodel0IJ.js} +77 -24
  166. package/dist/nest/index.d.ts +5 -5
  167. package/dist/nest/index.js +3 -3
  168. package/dist/next/index.d.ts +9 -9
  169. package/dist/next/index.js +5 -5
  170. package/dist/next/plugin.d.ts +1 -1
  171. package/dist/next/plugin.js +2 -2
  172. package/dist/node/index.d.ts +5 -5
  173. package/dist/node/index.js +2 -2
  174. package/dist/openai/index.d.ts +5 -5
  175. package/dist/openai/index.js +3 -3
  176. package/dist/openapi/index.d.ts +14 -4
  177. package/dist/openapi/index.js +1 -1
  178. package/dist/{openapi-C4dDTVEd.js → openapi-DMocl1bh.js} +4 -4
  179. package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
  180. package/dist/{openapi-DD1SV-5-.js → openapi-ztVaux6j.js} +8 -8
  181. package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
  182. package/dist/{operations-X0VM7F3m.d.ts → operations-BNLes61x.d.ts} +1 -1
  183. package/dist/orpc/index.d.ts +6 -6
  184. package/dist/orpc/index.js +4 -4
  185. package/dist/otel/index.d.ts +3 -3
  186. package/dist/otel/index.js +1 -1
  187. package/dist/{output-1im__-08.js → output-DgSDLrta.js} +7 -3
  188. package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
  189. package/dist/output-files-DPAY7-GX.js +1 -0
  190. package/dist/{ownership-DqaJNJPn.js → ownership-Z2LpxsGa.js} +443 -40
  191. package/dist/parse-Ddhz2xf4.js +148 -0
  192. package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
  193. package/dist/{parse-local-manifest-5ODwqu8b.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
  194. package/dist/pdp/index.d.ts +3 -3
  195. package/dist/pdp/index.js +7 -3
  196. package/dist/peer-12Q5I_RH.js +976 -0
  197. package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
  198. package/dist/{permdock-BrAscV28.js → permdock-BfWEeMqk.js} +177 -49
  199. package/dist/{permdock-SV8ZINYT.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
  200. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
  201. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-DhNEmoRG.d.ts} +4 -64
  202. package/dist/{permissions-u_KHg-sN.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
  203. package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
  204. package/dist/{permissions-BPxlwVhN.js → permissions-DArULThq.js} +4 -4
  205. package/dist/pkce-5h8NgMQJ.js +21 -0
  206. package/dist/{policies-DP2nqRoF.js → policies-B2lZIurj.js} +3 -3
  207. package/dist/{policy-77FSAq_V.d.ts → policy-B7dg_yzu.d.ts} +2 -2
  208. package/dist/{policy-DbM5YYtV.js → policy-DaJy4nK4.js} +17 -8
  209. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-DFWYkNdu.js} +9 -9
  210. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-B-F-qAZk.d.ts} +83 -4
  211. package/dist/postgres-store-BL9M_CA1.js +1001 -0
  212. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
  213. package/dist/{postgrest-DAjUkF9w.js → postgrest-r5faDIzD.js} +37 -4
  214. package/dist/{powersync-DISt6SUe.js → powersync-13odBwiM.js} +3 -3
  215. package/dist/powersync-53ryOZip.js +1059 -0
  216. package/dist/powersync-CExtTLyA.js +1 -0
  217. package/dist/preset/index.js +1 -1
  218. package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
  219. package/dist/prisma/index.d.ts +2 -2
  220. package/dist/prisma/index.js +1 -1
  221. package/dist/{problem-details-B45V5d2b.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
  222. package/dist/prompt-DwtVemER.js +935 -0
  223. package/dist/{protected-RFGpakN9.d.ts → protected-BwZYL1X_.d.ts} +6 -5
  224. package/dist/{protected-BlF0F6wL.js → protected-DXE3cQYg.js} +2 -2
  225. package/dist/{provider-B1al-AZz.js → provider-BQsTYYy0.js} +2 -2
  226. package/dist/{provider-DILL9oPK.d.ts → provider-Csk-THAn.d.ts} +1 -1
  227. package/dist/{provider-store-DM6DNcta.js → provider-store-IgqQipCO.js} +2 -2
  228. package/dist/{pull-jEwbf80J.js → pull-CN5OLxrF.js} +7 -7
  229. package/dist/pull-Cty6Ovyu.js +1 -0
  230. package/dist/{push-BD4f15co.js → push-tVdG8dUL.js} +54 -14
  231. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
  232. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-CmYeSQqq.js} +1 -1
  233. package/dist/react/index.d.ts +6 -6
  234. package/dist/react/index.js +3 -3
  235. package/dist/react/provider-client.d.ts +1 -1
  236. package/dist/react/provider-client.js +1 -1
  237. package/dist/react-native/index.d.ts +25 -11
  238. package/dist/react-native/index.js +209 -21
  239. package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
  240. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
  241. package/dist/{request-context-C81Pip9n.js → request-context-BykKLmyE.js} +2 -2
  242. package/dist/resend/index.d.ts +4 -4
  243. package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
  244. package/dist/{rls-BAqP4q66.js → rls-Ck_PocSp.js} +32 -8
  245. package/dist/{rls-DTvYd-lI.js → rls-CxBZb4rZ.js} +478 -534
  246. package/dist/{role-builder-uWQZ4v84.js → role-builder-C1VJzvcr.js} +3 -3
  247. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  248. package/dist/{rpc-VSl5ylaQ.js → rpc-Bk1bE-ch.js} +1 -1
  249. package/dist/run-Bz7DXGEv.js +1 -0
  250. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
  251. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
  252. package/dist/{run-CUKuz0A8.js → run-uLD2aWuO.js} +7 -7
  253. package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
  254. package/dist/{saas-BCXRuXca.js → saas-Az_Kz-4D.js} +7 -7
  255. package/dist/{scan-qvOe0hS3.js → scan-DSljDE1Y.js} +1 -1
  256. package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
  257. package/dist/scim/index.d.ts +3 -2
  258. package/dist/scim/index.js +3 -1
  259. package/dist/scim-C7JYhySg.js +44 -0
  260. package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
  261. package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
  262. package/dist/server/index.d.ts +11 -11
  263. package/dist/server/index.js +7 -7
  264. package/dist/{server-C3WXAHZj.js → server-Bnga6I50.js} +3 -3
  265. package/dist/{server-types-CKQiCnON.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
  266. package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
  267. package/dist/{shared-BAK8t4Uo.js → shared-fMKOv8hP.js} +44 -38
  268. package/dist/{sink-4-eQIRWf.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
  269. package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
  270. package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
  271. package/dist/{snapshot-B7DkYg6g.js → snapshot-CbGmYiJx.js} +4 -4
  272. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
  273. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
  274. package/dist/solid/index.d.ts +6 -5
  275. package/dist/solid/index.js +4 -4
  276. package/dist/solid-start/index.d.ts +6 -6
  277. package/dist/solid-start/index.js +3 -3
  278. package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
  279. package/dist/{sources-Xc4zkszI.d.ts → sources-DEEuGb8S.d.ts} +63 -14
  280. package/dist/sources-qoIJQrJv.js +11 -0
  281. package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
  282. package/dist/sql-CDEPCA0g.d.ts +10 -0
  283. package/dist/{src-Cu2m75uo.js → src-DLFrtrrC.js} +140 -48
  284. package/dist/ssf/index.d.ts +4 -4
  285. package/dist/ssf/index.js +640 -211
  286. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
  287. package/dist/{store-BDutJkDL.js → store-DSP9oGvh.js} +15 -7
  288. package/dist/{store-options-u0ycEe8s.js → store-options-B_poyYvg.js} +6 -6
  289. package/dist/{stores-BUGNbJTt.d.ts → stores-BAZwSYZA.d.ts} +6 -5
  290. package/dist/{stores-CGhM8BN_.js → stores-BqEuHC05.js} +2 -2
  291. package/dist/{stream-CeCMJmBB.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
  292. package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
  293. package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
  294. package/dist/supabase/index.d.ts +8 -7
  295. package/dist/supabase/index.js +5 -5
  296. package/dist/supabase/middleware.d.ts +6 -6
  297. package/dist/supabase/middleware.js +6 -6
  298. package/dist/{supabase-x5JtR2tc.js → supabase--0aJdLEd.js} +8 -6
  299. package/dist/{supabase-By_frk3U.js → supabase-Bqp7iIY2.js} +3 -3
  300. package/dist/supabase-hook-DJxC4PoP.js +1 -0
  301. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-Dg0SrQWR.js} +1060 -119
  302. package/dist/supautils-MESd81bF.js +689 -0
  303. package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
  304. package/dist/svelte/index.d.ts +5 -5
  305. package/dist/svelte/index.js +5 -5
  306. package/dist/svelte/runtime.d.ts +3 -3
  307. package/dist/svelte/runtime.js +3 -3
  308. package/dist/svelte/source.d.ts +5 -5
  309. package/dist/svelte/source.js +2 -2
  310. package/dist/sveltekit/index.d.ts +6 -6
  311. package/dist/sveltekit/index.js +2 -2
  312. package/dist/tanstack-start/index.d.ts +6 -6
  313. package/dist/tanstack-start/index.js +2 -2
  314. package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
  315. package/dist/terminal/index.d.ts +6 -6
  316. package/dist/terminal/index.js +3 -3
  317. package/dist/testing/core.d.ts +2 -0
  318. package/dist/testing/core.js +1 -0
  319. package/dist/testing/fixtures/index.d.ts +12 -0
  320. package/dist/testing/fixtures/index.js +770 -0
  321. package/dist/testing/index.d.ts +41 -174
  322. package/dist/testing/index.js +241 -731
  323. package/dist/testing/saas/index.d.ts +5 -5
  324. package/dist/testing/saas/index.js +2 -2
  325. package/dist/testing/saas/permissions.d.ts +1 -1
  326. package/dist/testing/saas/permissions.js +1 -1
  327. package/dist/text-diff-DhITNCnD.js +444 -0
  328. package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
  329. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
  330. package/dist/trpc/index.d.ts +6 -6
  331. package/dist/trpc/index.js +3 -3
  332. package/dist/{types-Dfv0aTER.d.ts → types-BWZybqs9.d.ts} +110 -8
  333. package/dist/{types-Druu9wLM.d.ts → types-BXMYB7BY.d.ts} +2 -2
  334. package/dist/{types-BzzaHxt3.d.ts → types-BfVmNJO5.d.ts} +14 -3
  335. package/dist/{types-lUlG3TVd.d.ts → types-CIeZcG8v.d.ts} +2 -2
  336. package/dist/{types-B3_ooZgZ.d.ts → types-CKV71kKh.d.ts} +4 -4
  337. package/dist/{types-CX7AvRqP.d.ts → types-CQVEQawv.d.ts} +4 -4
  338. package/dist/{types-C863OQiR.d.ts → types-CeIscIKp.d.ts} +4 -4
  339. package/dist/{types-C_IiEs64.d.ts → types-CfiKC5aN.d.ts} +1 -1
  340. package/dist/{types-_WhUP7ud.d.ts → types-D3A19w4A.d.ts} +8 -4
  341. package/dist/{types-8RnwUAvE.d.ts → types-DBHftjgS.d.ts} +15 -8
  342. package/dist/{types-BdtSDbBO.d.ts → types-DC44-hqb.d.ts} +2 -2
  343. package/dist/{types-CVZSNocA.d.ts → types-DXmwu78Z.d.ts} +4 -4
  344. package/dist/{types-C791HFu9.d.ts → types-cTos-H7p.d.ts} +2 -2
  345. package/dist/{types-BtHtcKMr.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
  346. package/dist/unplugin/index.d.ts +1 -1
  347. package/dist/unplugin/index.js +2 -2
  348. package/dist/{usage-SveTRTyr.js → usage-Bybmck7f.js} +7 -7
  349. package/dist/{usage-CRVl9V3t.js → usage-CDaLXCfL.js} +2 -2
  350. package/dist/usage-y-kBNdqs.js +1 -0
  351. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
  352. package/dist/{verify-BaAKx7t6.js → verify-pe8rL_Qw.js} +350 -83
  353. package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
  354. package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
  355. package/dist/vue/index.d.ts +6 -5
  356. package/dist/vue/index.js +4 -4
  357. package/dist/{waiter-B986w1oK.d.ts → waiter-DwEyouan.d.ts} +2 -2
  358. package/dist/watch-Bd9mx3rd.js +1 -0
  359. package/dist/{watch-vea54PRw.js → watch-C-4VmFlL.js} +3 -3
  360. package/dist/webmcp/index.d.ts +2 -2
  361. package/dist/webmcp/index.js +2 -2
  362. package/dist/{where-scope-C9vfEphl.js → where-scope-wq2coopv.js} +41 -21
  363. package/dist/{who-can-DWBAcaCQ.js → who-can-BwNsI_Js.js} +6 -6
  364. package/dist/workflow/index.d.ts +3 -3
  365. package/dist/workflow/index.js +5 -5
  366. package/dist/workflow-sdk/index.d.ts +5 -5
  367. package/dist/{wrap-C5jC6sKI.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
  368. package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
  369. package/package.json +22 -11
  370. package/schemas/cli-result-v1.json +1 -0
  371. package/schemas/cloud-api-v1.json +152 -7
  372. package/schemas/connector-v1.json +8 -0
  373. package/schemas/supabase-claims-v1.json +5 -0
  374. package/schemas/supabase-manifest-v1.json +276 -75
  375. package/skills/permdock/SKILL.md +1 -0
  376. package/skills/permdock-agents/references/runtimes.md +3 -1
  377. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  378. package/skills/permdock-data/references/queries-and-rls.md +4 -1
  379. package/skills/permdock-tenancy/SKILL.md +1 -1
  380. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
  381. package/skills/permdock-wire/references/adapters.md +14 -0
  382. package/skills/permdock-wire/references/policy-options.md +1 -0
  383. package/dist/catalog-BoWglDPI.js +0 -1
  384. package/dist/collect-D7eQDffE.js +0 -1
  385. package/dist/index-Cp_ilKi1.d.ts +0 -91
  386. package/dist/load-BxEtwlBS.js +0 -1
  387. package/dist/output-files-B3IZJksC.js +0 -1
  388. package/dist/parse-Cxq0WxrA.js +0 -53
  389. package/dist/peer-C8swJ2GH.js +0 -50
  390. package/dist/powersync-BkWWCS1K.js +0 -538
  391. package/dist/powersync-MMJ2mI2q.js +0 -1
  392. package/dist/prompt-DfZLJLIn.js +0 -32
  393. package/dist/pull-CvpINcMK.js +0 -1
  394. package/dist/run-DDwUaJDU.js +0 -1
  395. package/dist/supabase-hook-CCw5m35C.js +0 -1
  396. package/dist/supautils-B6HYL9eL.js +0 -91
  397. package/dist/text-diff-BQcUapOb.js +0 -15
  398. package/dist/usage-CZpSQP6L.js +0 -1
  399. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,21 +1,137 @@
1
- import { Jt as AutomationEvent, Kt as AccessEvent, Qt as DeliveryEvent, Rt as Instant, Xt as DecisionEvent, Yt as CredentialEvent, Zt as DeliveryChannel, en as DirectoryEvent, nn as MembershipEvent, ut as TokenSigner } from "../policy-types-n0uRTsW8.js";
2
- import { m as ApprovalStore } from "../types-BdtSDbBO.js";
3
- import { i as CatalogEventData, l as CloudEventType, r as CLOUD_EVENT_TYPES, s as CloudEvent } from "../sink-4-eQIRWf.js";
4
- import { c as DeliveryTransport } from "../types-BtHtcKMr.js";
5
- import { a as CloudConnectionOptions, c as CloudOptions, i as CloudClient, l as CloudSignerOptions, n as CloudCatalog, o as CloudEndpointOptions, r as CloudCatalogPush, s as CloudEndpoints, t as CloudApproverOptions } from "../types-8RnwUAvE.js";
6
- import { n as ApprovalWaiter } from "../waiter-B986w1oK.js";
7
- import { l as ReplayStore } from "../types-C791HFu9.js";
8
- import { f as WebhookVerifier, r as WebhookFailureCause$1, s as WebhookJwks } from "../standard-webhooks-rbD7LS6h.js";
1
+ import { $t as CredentialEvent, Qt as AutomationEvent, Rt as Instant, Xt as AccessEvent, en as DecisionEvent, in as DirectoryEvent, nn as DeliveryEvent, on as MembershipEvent, tn as DeliveryChannel, ut as TokenSigner } from "../policy-types-B-F-qAZk.js";
2
+ import { m as ApprovalStore } from "../types-DC44-hqb.js";
3
+ import { i as CatalogEventData, l as CloudEventType, r as CLOUD_EVENT_TYPES, s as CloudEvent } from "../sink-Cp_Eot9W.js";
4
+ import { c as DeliveryTransport } from "../types-g7Oy6Zg4.js";
5
+ import { a as CloudConnectionOptions, c as CloudOptions, i as CloudClient, l as CloudSignerOptions, n as CloudCatalog, o as CloudEndpointOptions, r as CloudCatalogPush, s as CloudEndpoints, t as CloudApproverOptions } from "../types-DBHftjgS.js";
6
+ import { n as ApprovalWaiter } from "../waiter-DwEyouan.js";
7
+ import { l as ReplayStore } from "../types-cTos-H7p.js";
8
+ import { f as WebhookVerifier, r as WebhookFailureCause$1, s as WebhookJwks } from "../standard-webhooks-B_qRg0ws.js";
9
+ //#region src/cloud/base-url.d.ts
10
+ /**
11
+ * The one base URL of PermDock Cloud. The platform issuer is this URL; its
12
+ * OAuth routes, `/.well-known/oauth-authorization-server` and `/openapi.json`
13
+ * sit at the root, unversioned, and the data routes under `/v1`.
14
+ */
15
+ export declare const CLOUD_BASE_URL = "https://permdock.com/api";
16
+ /** The scopes the platform issuer grants a person's login. */
17
+ type CloudScope = "projects:read" | "policy:read" | "catalog:write" | "evidence:read" | "approvals:read";
18
+ //#endregion
9
19
  //#region src/cloud/request.d.ts
10
20
  /**
11
- * The environment URL and JWK Set URL `cloud()` uses, resolved with the same
12
- * fallbacks (`PERMDOCK_CLOUD_URL`; `PERMDOCK_CLOUD_ENV`, `VERCEL_ENV`, `production`).
21
+ * The environment URL and JWK Set URL `cloud()` uses when the environment is
22
+ * configured: `environment`, else `PERMDOCK_CLOUD_ENV`. Throws when neither
23
+ * is set; `resolveCloudEndpoints` then asks the Cloud which environment the
24
+ * key belongs to.
13
25
  */
14
26
  export declare function cloudEndpoints(options?: CloudEndpointOptions): CloudEndpoints;
27
+ /**
28
+ * The environment URL and JWK Set URL for a key: `cloudEndpoints(options)`
29
+ * when the environment is configured, else the environment `GET
30
+ * /v1/environment` names for `key` (`PERMDOCK_CLOUD_KEY`). Rejects when the
31
+ * Cloud does not answer or answers another issuer.
32
+ */
33
+ export declare function resolveCloudEndpoints(options?: CloudConnectionOptions): Promise<CloudEndpoints>;
15
34
  //#endregion
16
35
  //#region src/cloud/create.d.ts
17
36
  export declare function cloud(options?: CloudOptions): CloudClient;
18
37
  //#endregion
38
+ //#region src/cloud/oauth.d.ts
39
+ type CloudOAuthOptions = {
40
+ /** The client id the dashboard issued, or one from `/oauth/register`. */
41
+ readonly clientId: string;
42
+ /** Registered with the client; the Cloud redirects here with `code` and `state`. */
43
+ readonly redirectUri: string;
44
+ /** A confidential client's secret, sent as `client_secret_basic` (RFC 6749 section 2.3.1). Server-only. */
45
+ readonly clientSecret?: string;
46
+ /** The Cloud base URL and platform issuer; defaults to `CLOUD_BASE_URL`. */
47
+ readonly url?: string;
48
+ /** Requested on `authorizeUrl`; defaults to `projects:read` and `policy:read`. */
49
+ readonly scopes?: readonly CloudScope[];
50
+ readonly fetch?: typeof fetch;
51
+ /** The clock `expires_at` is computed from; defaults to the system clock. */
52
+ readonly now?: () => Instant;
53
+ };
54
+ /** A token response, with RFC 6749 field names; `expires_at` is seconds since the epoch. */
55
+ type CloudCredential = {
56
+ readonly access_token: string;
57
+ readonly token_type?: string;
58
+ readonly expires_at?: number;
59
+ readonly refresh_token?: string;
60
+ readonly scope?: string;
61
+ };
62
+ /** A started authorization. Keep `state` and `codeVerifier` server-side until the callback. */
63
+ type CloudAuthorization = {
64
+ /** Where to send the browser. */
65
+ readonly url: string;
66
+ readonly state: string;
67
+ readonly codeVerifier: string;
68
+ };
69
+ /** `GET /v1/projects` item. A project is one environment: `id` is the `{env}` of `/v1/environments/{env}`. */
70
+ type CloudProject = {
71
+ readonly id: string;
72
+ readonly name: string;
73
+ readonly environment: string;
74
+ readonly slug?: string;
75
+ readonly issuer?: string;
76
+ readonly catalog?: {
77
+ readonly version: number;
78
+ readonly fingerprint: string;
79
+ };
80
+ readonly updatedAt?: string;
81
+ };
82
+ type CloudProjectPage = {
83
+ readonly items: readonly CloudProject[];
84
+ /** Pass back as `cursor` for the next page. */
85
+ readonly next?: string;
86
+ };
87
+ type CloudOAuthClient = {
88
+ /** The platform issuer the client discovers its endpoints from. */
89
+ readonly issuer: string;
90
+ /** An authorization code request with PKCE `S256` and a fresh `state`. */
91
+ readonly authorizeUrl: (options?: {
92
+ readonly scopes?: readonly CloudScope[];
93
+ }) => Promise<CloudAuthorization>;
94
+ /**
95
+ * Redeems the callback URL. Throws `state-mismatch` unless it echoes
96
+ * `pending.state`, `issuer-mismatch` for an RFC 9207 `iss` of another
97
+ * server, and `authorization-denied` for an `error` or a missing `code`.
98
+ */
99
+ readonly exchangeCode: (callback: string | URL, pending: Pick<CloudAuthorization, "state" | "codeVerifier">) => Promise<CloudCredential>;
100
+ readonly refresh: (refreshToken: string) => Promise<CloudCredential>;
101
+ /** `GET /v1/projects` with a login holding `projects:read`. */
102
+ readonly listProjects: (accessToken: string, options?: {
103
+ readonly cursor?: string;
104
+ }) => Promise<CloudProjectPage>;
105
+ };
106
+ /**
107
+ * An OAuth 2.0 client of the PermDock Cloud platform issuer, for an app that
108
+ * signs its users in to PermDock Cloud and reads their projects. Endpoints come
109
+ * from the issuer's RFC 8414 metadata; every call throws a `CloudAuthError`.
110
+ */
111
+ export declare function cloudOAuth(options: CloudOAuthOptions): CloudOAuthClient;
112
+ //#endregion
113
+ //#region src/cloud/oauth-error.d.ts
114
+ type CloudAuthErrorCode = "discovery-failed" | "state-mismatch" | "issuer-mismatch" | "authorization-denied" | "token-refused" | "invalid-token" | "insufficient-scope" | "forbidden" | "rate-limited" | "unreachable" | "unexpected-response";
115
+ type CloudAuthErrorDetails = {
116
+ /** The HTTP status, when the Cloud answered. */
117
+ readonly status?: number;
118
+ /** The RFC 6749 or RFC 6750 `error` the Cloud sent (`invalid_grant`, `insufficient_scope`). */
119
+ readonly error?: string;
120
+ /** The scope an `insufficient_scope` challenge names. */
121
+ readonly scope?: string;
122
+ };
123
+ /** A failed `cloudOAuth` call. `code` tells a dead token (`invalid-token`) from a missing scope (`insufficient-scope`). */
124
+ export declare class CloudAuthError extends Error {
125
+ override readonly name: "CloudAuthError";
126
+ readonly code: CloudAuthErrorCode;
127
+ readonly status: number | undefined;
128
+ readonly error: string | undefined;
129
+ readonly scope: string | undefined;
130
+ constructor(code: CloudAuthErrorCode, message: string, details?: CloudAuthErrorDetails);
131
+ }
132
+ /** Matches by `name` and `code`, so an error from another copy of the module still maps. */
133
+ export declare function isCloudAuthError(value: unknown): value is CloudAuthError;
134
+ //#endregion
19
135
  //#region src/cloud/delivery.d.ts
20
136
  /**
21
137
  * A `DeliveryTransport` for `channel` that hands each checked recipient to
@@ -126,4 +242,4 @@ export declare function approvalTokensOf(events: readonly PermDockCloudEvent[]):
126
242
  */
127
243
  export declare function cloudApprovalWaiter(options: CloudApprovalWaiterOptions): CloudApprovalWaiter;
128
244
  //#endregion
129
- export type { CloudApprovalWaiter, CloudApprovalWaiterOptions, CloudApproverOptions, CloudCatalog, CloudCatalogPush, CloudClient, CloudConnectionOptions, CloudEndpointOptions, CloudEndpoints, CloudOptions, CloudSignerOptions, PermDockCloudEvent, VerifiedWebhook, WebhookFailureCause, WebhookOptions };
245
+ export type { CloudApprovalWaiter, CloudApprovalWaiterOptions, CloudApproverOptions, CloudAuthErrorCode, CloudAuthErrorDetails, CloudAuthorization, CloudCatalog, CloudCatalogPush, CloudClient, CloudConnectionOptions, CloudCredential, CloudEndpointOptions, CloudEndpoints, CloudOAuthClient, CloudOAuthOptions, CloudOptions, CloudProject, CloudProjectPage, CloudScope, CloudSignerOptions, PermDockCloudEvent, VerifiedWebhook, WebhookFailureCause, WebhookOptions };
@@ -1,13 +1,261 @@
1
1
  import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
3
  import { o as statusProblem } from "../problem-details-cn5X30gZ.js";
4
+ import { h as secondsAt } from "../time-DkWjdL98.js";
4
5
  import { r as CLOUD_EVENT_TYPES } from "../sink-BEZSlMS_.js";
5
- import { i as parseCloudEventBatch, r as parseCloudEvent$1 } from "../catalog-fingerprint-CCP0-yQS.js";
6
+ import { i as parseCloudEventBatch, r as parseCloudEvent$1 } from "../catalog-fingerprint-C144oW4M.js";
7
+ import { n as readBodyText } from "../body-text-QcXok_SI.js";
6
8
  import { c as problemResponse } from "../problem-CTviyH5L.js";
9
+ import { t as timeoutSignal } from "../timeout-D51niuQP.js";
7
10
  import { n as webhookVerifier } from "../standard-webhooks-DgFFD-Ga.js";
11
+ import { c as stringField, n as discoverAuthorizationServer, r as parseToken } from "../device-BARQ8eYG.js";
8
12
  import { t as pollingApprovalWaiter } from "../waiter-BGUtGYoU.js";
9
13
  import { i as isDeliveryTarget } from "../target-Bw37TFNA.js";
10
- import { i as isCompactJws, n as cloudConnection, r as cloudEndpoints, t as cloud } from "../create-CQWIpUG-.js";
14
+ import { t as CLOUD_BASE_URL } from "../base-url-BQbddZO5.js";
15
+ import { a as isCompactJws, i as cloudEndpoints, n as cloud, o as resolveCloudEndpoints, r as cloudConnection, t as bearerChallenge } from "../challenge-nGWma08S.js";
16
+ import { n as randomToken, t as pkce } from "../pkce-5h8NgMQJ.js";
17
+ //#region src/cloud/oauth-error.ts
18
+ /** A failed `cloudOAuth` call. `code` tells a dead token (`invalid-token`) from a missing scope (`insufficient-scope`). */
19
+ var CloudAuthError = class extends Error {
20
+ name = "CloudAuthError";
21
+ code;
22
+ status;
23
+ error;
24
+ scope;
25
+ constructor(code, message, details = {}) {
26
+ super(message);
27
+ this.code = code;
28
+ this.status = details.status;
29
+ this.error = details.error;
30
+ this.scope = details.scope;
31
+ }
32
+ };
33
+ const CODES = /* @__PURE__ */ new Set([
34
+ "discovery-failed",
35
+ "state-mismatch",
36
+ "issuer-mismatch",
37
+ "authorization-denied",
38
+ "token-refused",
39
+ "invalid-token",
40
+ "insufficient-scope",
41
+ "forbidden",
42
+ "rate-limited",
43
+ "unreachable",
44
+ "unexpected-response"
45
+ ]);
46
+ /** Matches by `name` and `code`, so an error from another copy of the module still maps. */
47
+ function isCloudAuthError(value) {
48
+ if (!(value instanceof Error) || value.name !== "CloudAuthError") return false;
49
+ const code = Reflect.get(value, "code");
50
+ return typeof code === "string" && CODES.has(code);
51
+ }
52
+ //#endregion
53
+ //#region src/cloud/oauth.ts
54
+ /** Milliseconds a Cloud OAuth or read request may take; a slower one fails with `unreachable`. */
55
+ const OAUTH_TIMEOUT_MS = 1e4;
56
+ const DEFAULT_SCOPES = ["projects:read", "policy:read"];
57
+ function trimSlash(value) {
58
+ return value.replace(/\/+$/u, "");
59
+ }
60
+ /** The form-urlencoding RFC 6749 section 2.3.1 applies to client_secret_basic credentials. */
61
+ function formEncode(value) {
62
+ return encodeURIComponent(value).replaceAll("%20", "+");
63
+ }
64
+ function isLoopback(hostname) {
65
+ return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]";
66
+ }
67
+ /** An endpoint must be `https:`, except on a loopback issuer, which a local Cloud serves over plain HTTP. */
68
+ function secureEndpoint(value, issuer) {
69
+ try {
70
+ const url = new URL(value);
71
+ return url.protocol === "https:" || url.protocol === "http:" && isLoopback(new URL(issuer).hostname);
72
+ } catch {
73
+ return false;
74
+ }
75
+ }
76
+ async function readRecord(response) {
77
+ const text = await readBodyText(response);
78
+ if (!text.ok) return null;
79
+ try {
80
+ const body = JSON.parse(text.text);
81
+ return isRecord(body) ? body : null;
82
+ } catch {
83
+ return null;
84
+ }
85
+ }
86
+ function optionalString(value) {
87
+ return value === void 0 || typeof value === "string";
88
+ }
89
+ function parseProject(value) {
90
+ if (!isRecord(value) || typeof value["id"] !== "string" || value["id"] === "" || typeof value["name"] !== "string" || typeof value["environment"] !== "string" || value["environment"] === "" || !optionalString(value["slug"]) || !optionalString(value["issuer"]) || !optionalString(value["updatedAt"])) return null;
91
+ const catalog = value["catalog"];
92
+ if (catalog !== void 0 && (!isRecord(catalog) || !Number.isInteger(catalog["version"]) || typeof catalog["fingerprint"] !== "string")) return null;
93
+ return compact({
94
+ id: value["id"],
95
+ name: value["name"],
96
+ environment: value["environment"],
97
+ slug: value["slug"],
98
+ issuer: value["issuer"],
99
+ catalog: isRecord(catalog) && typeof catalog["version"] === "number" && typeof catalog["fingerprint"] === "string" ? {
100
+ version: catalog["version"],
101
+ fingerprint: catalog["fingerprint"]
102
+ } : void 0,
103
+ updatedAt: value["updatedAt"]
104
+ });
105
+ }
106
+ function refusal$1(response) {
107
+ const challenge = bearerChallenge(response.headers.get("www-authenticate"));
108
+ const error = challenge?.params["error"];
109
+ const status = response.status;
110
+ if (status === 401) return new CloudAuthError("invalid-token", "PermDock Cloud refused the access token; refresh it or sign in again", compact({
111
+ status,
112
+ error: error ?? "invalid_token"
113
+ }));
114
+ if (status === 403 && error === "insufficient_scope") {
115
+ const scope = challenge?.params["scope"];
116
+ return new CloudAuthError("insufficient-scope", `The access token lacks ${scope ?? "a required scope"}; sign in again with it`, compact({
117
+ status,
118
+ error,
119
+ scope
120
+ }));
121
+ }
122
+ if (status === 403) return new CloudAuthError("forbidden", "The access token may not read this resource", compact({
123
+ status,
124
+ error
125
+ }));
126
+ if (status === 429) return new CloudAuthError("rate-limited", `PermDock Cloud rate-limited the request; retry after ${response.headers.get("retry-after") ?? "a while"} seconds`, { status });
127
+ return new CloudAuthError("unexpected-response", `PermDock Cloud answered HTTP ${String(status)}`, { status });
128
+ }
129
+ /**
130
+ * An OAuth 2.0 client of the PermDock Cloud platform issuer, for an app that
131
+ * signs its users in to PermDock Cloud and reads their projects. Endpoints come
132
+ * from the issuer's RFC 8414 metadata; every call throws a `CloudAuthError`.
133
+ */
134
+ function cloudOAuth(options) {
135
+ const issuer = trimSlash(options.url ?? "https://permdock.com/api");
136
+ const fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
137
+ const scopes = options.scopes ?? DEFAULT_SCOPES;
138
+ let discovered;
139
+ const discover = async () => {
140
+ const body = await discoverAuthorizationServer(issuer, { fetch: fetchFn });
141
+ const authorization = body === null ? void 0 : stringField(body, "authorization_endpoint");
142
+ const token = body === null ? void 0 : stringField(body, "token_endpoint");
143
+ const methods = body?.["code_challenge_methods_supported"];
144
+ if (authorization === void 0 || token === void 0 || !secureEndpoint(authorization, issuer) || !secureEndpoint(token, issuer) || !Array.isArray(methods) || !methods.includes("S256")) throw new CloudAuthError("discovery-failed", `No usable RFC 8414 metadata for ${issuer}`);
145
+ return {
146
+ authorization,
147
+ token
148
+ };
149
+ };
150
+ const endpoints = () => {
151
+ discovered ??= discover().catch((error) => {
152
+ discovered = void 0;
153
+ throw error;
154
+ });
155
+ return discovered;
156
+ };
157
+ const send = async (url, init) => {
158
+ try {
159
+ return await fetchFn(url, {
160
+ ...init,
161
+ signal: timeoutSignal(OAUTH_TIMEOUT_MS)
162
+ });
163
+ } catch {
164
+ throw new CloudAuthError("unreachable", `PermDock Cloud at ${issuer} did not answer`);
165
+ }
166
+ };
167
+ const token = async (fields) => {
168
+ const headers = new Headers({
169
+ "content-type": "application/x-www-form-urlencoded",
170
+ accept: "application/json"
171
+ });
172
+ const form = new URLSearchParams(fields);
173
+ if (options.clientSecret === void 0) form.set("client_id", options.clientId);
174
+ else headers.set("authorization", `Basic ${btoa(`${formEncode(options.clientId)}:${formEncode(options.clientSecret)}`)}`);
175
+ const response = await send((await endpoints()).token, {
176
+ method: "POST",
177
+ headers,
178
+ body: form
179
+ });
180
+ const body = await readRecord(response);
181
+ if (body === null) throw new CloudAuthError("unexpected-response", "PermDock Cloud answered the token request with a body that is not a JSON object", { status: response.status });
182
+ const parsed = parseToken(body, secondsAt(options.now?.()));
183
+ if (!parsed.ok || !response.ok) {
184
+ const error = parsed.ok ? void 0 : parsed.error;
185
+ throw new CloudAuthError("token-refused", `PermDock Cloud refused the token request${error === void 0 ? "" : `: ${error}`}`, compact({
186
+ status: response.status,
187
+ error
188
+ }));
189
+ }
190
+ return parsed.credential;
191
+ };
192
+ return Object.freeze({
193
+ issuer,
194
+ async authorizeUrl(request = {}) {
195
+ const { authorization } = await endpoints();
196
+ const { verifier, challenge } = await pkce();
197
+ const state = randomToken(16);
198
+ const url = new URL(authorization);
199
+ url.searchParams.set("response_type", "code");
200
+ url.searchParams.set("client_id", options.clientId);
201
+ url.searchParams.set("redirect_uri", options.redirectUri);
202
+ url.searchParams.set("scope", (request.scopes ?? scopes).join(" "));
203
+ url.searchParams.set("state", state);
204
+ url.searchParams.set("code_challenge", challenge);
205
+ url.searchParams.set("code_challenge_method", "S256");
206
+ return Object.freeze({
207
+ url: url.href,
208
+ state,
209
+ codeVerifier: verifier
210
+ });
211
+ },
212
+ async exchangeCode(callback, pending) {
213
+ let params;
214
+ try {
215
+ params = new URL(callback).searchParams;
216
+ } catch {
217
+ throw new CloudAuthError("authorization-denied", "The callback is not a URL");
218
+ }
219
+ if (pending.state === "" || params.get("state") !== pending.state) throw new CloudAuthError("state-mismatch", "The callback does not echo the state of the authorization");
220
+ const iss = params.get("iss");
221
+ if (iss !== null && trimSlash(iss) !== issuer) throw new CloudAuthError("issuer-mismatch", `The callback names the issuer ${iss}, not ${issuer}`);
222
+ const error = params.get("error");
223
+ const code = params.get("code");
224
+ if (error !== null || code === null || code === "") throw new CloudAuthError("authorization-denied", `The authorization was not granted${error === null ? "" : `: ${error}`}`, error === null ? {} : { error });
225
+ return await token({
226
+ grant_type: "authorization_code",
227
+ code,
228
+ redirect_uri: options.redirectUri,
229
+ code_verifier: pending.codeVerifier
230
+ });
231
+ },
232
+ refresh(refreshToken) {
233
+ return token({
234
+ grant_type: "refresh_token",
235
+ refresh_token: refreshToken
236
+ });
237
+ },
238
+ async listProjects(accessToken, request = {}) {
239
+ const url = new URL(`${issuer}/v1/projects`);
240
+ if (request.cursor !== void 0) url.searchParams.set("cursor", request.cursor);
241
+ const response = await send(url, { headers: {
242
+ authorization: `Bearer ${accessToken}`,
243
+ accept: "application/json"
244
+ } });
245
+ if (!response.ok) throw refusal$1(response);
246
+ const body = await readRecord(response);
247
+ const raw = body?.["items"];
248
+ const items = Array.isArray(raw) ? raw.map(parseProject) : null;
249
+ const next = body?.["next"];
250
+ if (items === null || items.includes(null) || !optionalString(next)) throw new CloudAuthError("unexpected-response", "PermDock Cloud sent a project list that does not match cloud-api-v1.json", { status: response.status });
251
+ return Object.freeze(compact({
252
+ items: Object.freeze(items.filter((item) => item !== null)),
253
+ next
254
+ }));
255
+ }
256
+ });
257
+ }
258
+ //#endregion
11
259
  //#region src/cloud/delivery.ts
12
260
  function failed(cause, retryable, reason) {
13
261
  return {
@@ -294,4 +542,4 @@ function cloudApprovalWaiter(options) {
294
542
  });
295
543
  }
296
544
  //#endregion
297
- export { approvalTokensOf, cloud, cloudApprovalWaiter, cloudDeliveryTransport, cloudEndpoints, cloudSigner, parseCloudEvent, verifyWebhook };
545
+ export { CLOUD_BASE_URL, CloudAuthError, approvalTokensOf, cloud, cloudApprovalWaiter, cloudDeliveryTransport, cloudEndpoints, cloudOAuth, cloudSigner, isCloudAuthError, parseCloudEvent, resolveCloudEndpoints, verifyWebhook };
@@ -1,6 +1,6 @@
1
- import { n as secretInput } from "./credentials-DPyHmYz5.js";
1
+ import { n as secretInput } from "./credentials-BpuTwd7a.js";
2
2
  import { t as defineLeaf } from "./command-L8EstFNm.js";
3
- import { c as given, i as dryRunFlag } from "./flags-C3DktBDY.js";
3
+ import { c as given, i as dryRunFlag } from "./flags-aaeRAdiD.js";
4
4
  //#region src/cli/commands/cloud.ts
5
5
  const sharedFlags = {
6
6
  url: {
@@ -30,7 +30,7 @@ const push = defineLeaf({
30
30
  ...sharedFlags,
31
31
  project: {
32
32
  type: "string",
33
- description: "Cloud project id (default PERMDOCK_CLOUD_ENV, then VERCEL_ENV, then production)",
33
+ description: "Cloud project id (default PERMDOCK_CLOUD_ENV, then the key's environment)",
34
34
  valueHint: "id"
35
35
  },
36
36
  ...dryRunFlag,
@@ -41,7 +41,7 @@ const push = defineLeaf({
41
41
  },
42
42
  async run(ctx, { flags }) {
43
43
  const env = await withStdinSecret(ctx, "key", flags["key-stdin"], "PERMDOCK_CLOUD_KEY");
44
- return (await import("./push-BD4f15co.js")).runCloud({
44
+ return (await import("./push-tVdG8dUL.js")).runCloud({
45
45
  cwd: ctx.cwd,
46
46
  config: ctx.config,
47
47
  url: given(flags.url),
@@ -70,7 +70,7 @@ const pull = defineLeaf({
70
70
  },
71
71
  async run(ctx, { flags }) {
72
72
  const env = await withStdinSecret(ctx, "token", flags["token-stdin"], "PERMDOCK_CLOUD_TOKEN");
73
- const { runCloudPull } = await import("./pull-CvpINcMK.js");
73
+ const { runCloudPull } = await import("./pull-Cty6Ovyu.js");
74
74
  return runCloudPull({
75
75
  cwd: ctx.cwd,
76
76
  config: ctx.config,
@@ -1,9 +1,9 @@
1
- import { n as CliError } from "./errors-CWTY6uih.js";
1
+ import { n as CliError } from "./errors-DpP_U6Bf.js";
2
2
  import { a as rel } from "./files-D_JIzUrP.js";
3
3
  import { t as beforeFirst } from "./text-BMFRfBqc.js";
4
- import { n as ROOT } from "./manifest-dvL2XEe1.js";
4
+ import { n as ROOT } from "./manifest-Dv6q4i5s.js";
5
5
  import { i as renameMessage, n as DEFAULT_CHANGES, r as flagRename, t as COMMAND_MOVES } from "./renames-CGj7YwcQ.js";
6
- import { r as refuseDirty, t as applyFiles } from "./files-C5ZI27eV.js";
6
+ import { r as refuseDirty, t as applyFiles } from "./files-acUbNwWt.js";
7
7
  import { readFileSync, readdirSync, statSync } from "node:fs";
8
8
  import { extname, join, resolve } from "node:path";
9
9
  import { Visitor, parseSync, visitorKeys } from "oxc-parser";
@@ -1,5 +1,5 @@
1
1
  import { t as defineLeaf } from "./command-L8EstFNm.js";
2
- import { i as dryRunFlag } from "./flags-C3DktBDY.js";
2
+ import { i as dryRunFlag } from "./flags-aaeRAdiD.js";
3
3
  //#region src/cli/commands/codemod.ts
4
4
  const codemod = defineLeaf({
5
5
  positionals: [{
@@ -7,7 +7,7 @@ const codemod = defineLeaf({
7
7
  description: "The release to migrate to (0.5)",
8
8
  required: true,
9
9
  async complete() {
10
- return (await import("./codemod-ua2hHy7w.js")).codemodVersions();
10
+ return (await import("./codemod-BP6n8N9L.js")).codemodVersions();
11
11
  }
12
12
  }, {
13
13
  name: "paths",
@@ -22,7 +22,7 @@ const codemod = defineLeaf({
22
22
  }
23
23
  },
24
24
  async run(ctx, { flags, args, rest }) {
25
- const { runCodemod } = await import("./codemod-ua2hHy7w.js");
25
+ const { runCodemod } = await import("./codemod-BP6n8N9L.js");
26
26
  return runCodemod({
27
27
  cwd: ctx.cwd,
28
28
  version: args["version"],
@@ -1,13 +1,13 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { T as isOperationEffect } from "./src-Cu2m75uo.js";
3
- import { o as isPermission } from "./permission-registry-Br4jSNVi.js";
4
- import { r as isOperationRisk } from "./permissions-B-wCP5ZC.js";
5
- import { a as describeError, i as configError } from "./errors-CWTY6uih.js";
2
+ import { k as isOperationEffect } from "./src-DLFrtrrC.js";
3
+ import { o as isPermission } from "./permission-registry-DpPtSKNZ.js";
4
+ import { r as isOperationRisk } from "./permissions-CyH2MV_B.js";
5
+ import { a as describeError, i as configError } from "./errors-DpP_U6Bf.js";
6
6
  import { a as rel, r as listSourceFiles, s as writeFileEnsuringDir, t as defaultSrcPath } from "./files-D_JIzUrP.js";
7
- import { a as formatCatalogJson, n as catalogForCompare, t as buildCatalog } from "./catalog-doc-Cdn7-0pQ.js";
8
- import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
7
+ import { n as catalogForCompare, o as formatCatalogJson, r as catalogForDrift, t as buildCatalog } from "./catalog-doc-CV9s6B1S.js";
8
+ import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DxroEzH1.js";
9
9
  import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
10
- import { t as shortDiff } from "./text-diff-BQcUapOb.js";
10
+ import { t as shortDiff } from "./text-diff-DhITNCnD.js";
11
11
  import { existsSync, readFileSync } from "node:fs";
12
12
  import { dirname, relative, resolve } from "node:path";
13
13
  import { Visitor, parseSync, visitorKeys } from "oxc-parser";
@@ -499,10 +499,19 @@ async function runCollect(input) {
499
499
  };
500
500
  const current = readFileSync(outPath, "utf8");
501
501
  const currentDoc = JSON.parse(current);
502
+ const generatedDoc = input.scanPath === void 0 || samePaths(input.scanPath, srcPath) ? document : buildCatalog(tree, scanSources(input.cwd, listSourceFiles(input.cwd, srcPath), knownKeys), generatedAt, policy, operations);
502
503
  const onDisk = catalogForCompare(currentDoc);
503
- const generated = catalogForCompare(input.scanPath === void 0 || samePaths(input.scanPath, srcPath) ? document : buildCatalog(tree, scanSources(input.cwd, listSourceFiles(input.cwd, srcPath), knownKeys), generatedAt, policy, operations));
504
+ const generated = catalogForCompare(generatedDoc);
504
505
  if (onDisk !== generated) {
505
506
  const file = rel(input.cwd, outPath);
507
+ if (catalogForDrift(currentDoc) === catalogForDrift(generatedDoc)) return {
508
+ code: 0,
509
+ document,
510
+ scan,
511
+ outPath,
512
+ positionsMoved: true,
513
+ message: `catalog usages moved (lines only): ${file}; run permdock collect to refresh`
514
+ };
506
515
  return {
507
516
  code: 1,
508
517
  document,
@@ -1,6 +1,6 @@
1
- import { n as CliError } from "./errors-CWTY6uih.js";
1
+ import { n as CliError } from "./errors-DpP_U6Bf.js";
2
2
  import { t as defineLeaf } from "./command-L8EstFNm.js";
3
- import { o as fileOut, t as checkFlag } from "./flags-C3DktBDY.js";
3
+ import { o as fileOut, t as checkFlag } from "./flags-aaeRAdiD.js";
4
4
  //#region src/cli/commands/collect.ts
5
5
  const collect = defineLeaf({
6
6
  flags: {
@@ -29,10 +29,10 @@ const collect = defineLeaf({
29
29
  };
30
30
  if (flags.watch) {
31
31
  if (flags.check) throw new CliError("usage", "collect: --watch writes the catalog; drop --check", { code: "invalid_value" });
32
- const { watchCollect } = await import("./watch--ovlPOc0.js");
32
+ const { watchCollect } = await import("./watch-Bd9mx3rd.js");
33
33
  return watchCollect(ctx, overrides);
34
34
  }
35
- const result = await (await import("./collect-D7eQDffE.js")).runCollect({
35
+ const result = await (await import("./collect-k_Dulxr5.js")).runCollect({
36
36
  cwd: ctx.cwd,
37
37
  config: ctx.config,
38
38
  collect: overrides,
@@ -46,7 +46,8 @@ const collect = defineLeaf({
46
46
  ...result.document === void 0 ? {} : { data: {
47
47
  out: result.outPath,
48
48
  permissions: result.document.permissions.length,
49
- ...flags.check ? { stale: result.code !== 0 } : {}
49
+ ...flags.check ? { stale: result.code !== 0 } : {},
50
+ ...result.positionsMoved === true ? { positionsMoved: true } : {}
50
51
  } }
51
52
  };
52
53
  }
@@ -0,0 +1 @@
1
+ export { r as runCollect } from "./collect-BaWeMjwV.js";
@@ -1,3 +1,3 @@
1
1
  import { n as GraphSqlPart, r as RelationsMapping, t as GraphSql } from "../graph-sql-B-dsAT6j.js";
2
- import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-1bsAezL0.js";
2
+ import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-COM2VKuN.js";
3
3
  export { type CompileWhereOptions, type CompiledCompare, type CompiledExists, type CompiledSql, type CompiledWhere, type GraphSql, type GraphSqlPart, type MembershipTable, type MembershipsMapping, type RelationsMapping, compileWhere, escapeLike };
@@ -1 +1 @@
1
- export { t as compileWhere, n as escapeLike } from "../compile-CMqMx_IN.js";
1
+ export { t as compileWhere, n as escapeLike } from "../compile-BAEO5bOk.js";
@@ -1,11 +1,11 @@
1
1
  import { a as sole, n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { t as assertSafeKey } from "./paths-DXSHAMIa.js";
3
- import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-K6eWUJ0H.js";
3
+ import { a as resolveConditionRef, c as isConditionDate, d as parentHop, l as isConditionRef } from "./refs-CNJBiTFo.js";
4
4
  import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
5
5
  import { t as expiredAt } from "./expiry-D4_YKRKD.js";
6
6
  import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, o as groupEntries, p as restrictedFor, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
7
7
  import { o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
8
- import { c as rootScope, d as scopeList, l as scopeChain, m as tenantOf, o as resolveScope, p as subjectMemberships } from "./scopes-CUPSjo9q.js";
8
+ import { f as scopeList, h as tenantOf, l as rootScope, m as subjectMemberships, s as resolveScope, u as scopeChain } from "./scopes-BHsc-wp-.js";
9
9
  import { t as isoInstant } from "./instant-BluqDvyS.js";
10
10
  //#region src/conditions/graph-sql.ts
11
11
  /** A Postgres identifier, schema-qualified names split on `.`. */
@@ -1,6 +1,6 @@
1
- import { Rt as Instant, ar as Subject, cn as Scope, ur as Condition } from "./policy-types-n0uRTsW8.js";
2
- import { N as ResourceNode } from "./vocabulary-CN8H_9UF.js";
3
- import { c as WhereResult } from "./permdock-SV8ZINYT.js";
1
+ import { Rt as Instant, fn as Scope, lr as Subject, mr as Condition } from "./policy-types-B-F-qAZk.js";
2
+ import { b as ResourceNode } from "./permission-types-DhNEmoRG.js";
3
+ import { u as WhereResult } from "./permdock-Dco6dyCK.js";
4
4
  import { r as RelationsMapping, t as GraphSql } from "./graph-sql-B-dsAT6j.js";
5
5
  //#region src/conditions/compile.d.ts
6
6
  type MembershipTable = {
@@ -1,6 +1,6 @@
1
- import { n as CliError } from "./errors-CWTY6uih.js";
2
- import { a as suggestion, o as GLOBAL_FLAGS } from "./args-IIolxxKA.js";
3
- import { a as resolve } from "./manifest-dvL2XEe1.js";
1
+ import { n as CliError } from "./errors-DpP_U6Bf.js";
2
+ import { a as suggestion, o as GLOBAL_FLAGS } from "./args-CC3OwyHW.js";
3
+ import { a as resolve } from "./manifest-Dv6q4i5s.js";
4
4
  import { t as defineLeaf } from "./command-L8EstFNm.js";
5
5
  //#region src/cli/core/completion.ts
6
6
  const SHELLS = [