permdock 0.5.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-B4R5fnMU.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-Djo_PyZc.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-DJ6Yd5z1.js → approvals-CMRfsbBh.js} +74 -48
  14. package/dist/{arazzo-B6lebmiQ.js → arazzo-ClrF3PVb.js} +2 -2
  15. package/dist/{arazzo-BWhNF-k0.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-Dg8XsRaO.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-BMZPIVUM.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-CZzhx-Vj.js → bind-D1nO6fiC.js} +5 -5
  31. package/dist/{bind--9EFVYWF.d.ts → bind-JDuvxjuW.d.ts} +7 -7
  32. package/dist/{build-instance-BMnAudHn.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-BSslw1QV.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-R_A__RsH.js → catalog-BaMQfQ6Y.js} +3 -3
  44. package/dist/{catalog-BECMPrwc.js → catalog-D69WhFii.js} +43 -13
  45. package/dist/{catalog-doc-C9wjsfNY.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-BWRSXgOF.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-CIoHNevm.js → cloud-CO8pYtwr.js} +5 -5
  62. package/dist/{codemod-Cxvvc70T.js → codemod-BP6n8N9L.js} +3 -3
  63. package/dist/{codemod-Bmj9dWMH.js → codemod-i4N2BhDc.js} +3 -3
  64. package/dist/{collect-CrZJJnEF.js → collect-BaWeMjwV.js} +17 -8
  65. package/dist/{collect-DloHbDVa.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-Ckm2HqBZ.d.ts → compile-COM2VKuN.d.ts} +3 -3
  71. package/dist/{completion-BqhRBJD8.js → completion-BNdVf7X2.js} +3 -3
  72. package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
  73. package/dist/{config-B46rm9sc.js → config-DGZzMV1B.js} +2 -2
  74. package/dist/{config-report-DUgj62Ai.js → config-report-Cm7UITNA.js} +3 -3
  75. package/dist/connector-schema-_VCSsdtD.js +433 -0
  76. package/dist/{context-bbFHR-0D.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-0VZ7Pdiu.d.ts → create-B2-CQqCI.d.ts} +5 -5
  82. package/dist/{create-C3b4B5eF.js → create-Cb86Z8Im.js} +9 -8
  83. package/dist/{create-DnrmLnLW.js → create-DJrlhEp9.js} +5 -5
  84. package/dist/{create-BFfm17UA.d.ts → create-QHuuPw3q.d.ts} +7 -7
  85. package/dist/{create-BDS7wc3y.d.ts → create-UTnUVETj.d.ts} +30 -10
  86. package/dist/{credential-DM2um3ha.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-DaXVdDhM.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-D8jDHgsl.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
  94. package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
  95. package/dist/{describe-BZUsixiL.d.ts → describe-O0SwYIK8.d.ts} +2 -2
  96. package/dist/{diff-CxZo9pTq.js → diff-Btr1c1Ow.js} +2 -2
  97. package/dist/{diff-DCePiN6M.js → diff-DzT-xD13.js} +10 -10
  98. package/dist/{doctor-DFjUxf2f.js → doctor-BU1szn63.js} +241 -49
  99. package/dist/{doctor-CxiwSfqH.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-C2PXIv4c.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-_R8QkWaf.js → evaluate-B_oqFbWC.js} +130 -34
  107. package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
  108. package/dist/{evaluations-DZ2CbV5k.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-qKJBuRqy.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
  116. package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-De-u6vhJ.js} +3 -3
  117. package/dist/{fields-D9tPVUUS.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-D2lZt4Dd.js → from-snapshot-Bz469dIh.js} +17 -10
  122. package/dist/generate-3FNO5P5Q.js +159 -0
  123. package/dist/{grantee-Cn1HyUsI.js → grantee-BrRANrpT.js} +14 -4
  124. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
  125. package/dist/{grantee-match-DHArqY82.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-DTcZOzhF.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-DBDX0M-P.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
  132. package/dist/{hosted-BZIAYvon.js → hosted-XBgU6RGT.js} +34 -12
  133. package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
  134. package/dist/{import-DMmOG27O.js → import-Bz0GefWg.js} +5 -5
  135. package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
  136. package/dist/{index-CxGUswIC.d.ts → index-BE8y3moU.d.ts} +50 -8
  137. package/dist/{index-Chrs5fQ-.d.ts → index-BSfRl0hZ.d.ts} +6 -6
  138. package/dist/{index-DOVf7RJv.d.ts → index-BTkwrK7v.d.ts} +155 -17
  139. package/dist/index-CMiPH2Tv.d.ts +206 -0
  140. package/dist/{index-SGdIQyzc.d.ts → index-DH9DUDEM.d.ts} +18 -3
  141. package/dist/{index-BcHcPyIo.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-Omfd793B.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
  147. package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-CjcwnEiV.js} +20 -14
  148. package/dist/jwt/index.d.ts +83 -5
  149. package/dist/jwt/index.js +143 -5
  150. package/dist/{kernel-5JatXyND.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-CtKR3GXL.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-TCAdw-eW.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-BShP7Vf4.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-ahr8rHu3.js → openapi-DMocl1bh.js} +4 -4
  179. package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
  180. package/dist/{openapi-DTaEmTSW.js → openapi-ztVaux6j.js} +8 -8
  181. package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
  182. package/dist/{operations-CxybZErY.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-Dyw8fyPF.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-BatFgAA4.js → ownership-Z2LpxsGa.js} +1349 -883
  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-DgqtruPn.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-B9JxkBwC.js → permdock-BfWEeMqk.js} +177 -49
  199. package/dist/{permdock-D7eeLJER.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-D6lPdb4Z.d.ts → permission-types-DhNEmoRG.d.ts} +4 -62
  202. package/dist/{permissions-oEWfl-kl.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-CZKiUfFM.js → permissions-DArULThq.js} +4 -4
  205. package/dist/pkce-5h8NgMQJ.js +21 -0
  206. package/dist/{policies-CO1oOymN.js → policies-B2lZIurj.js} +3 -3
  207. package/dist/{policy-Czo4n3Hs.d.ts → policy-B7dg_yzu.d.ts} +2 -2
  208. package/dist/{policy-DLZJ5gAp.js → policy-DaJy4nK4.js} +17 -8
  209. package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-DFWYkNdu.js} +9 -9
  210. package/dist/{policy-types-DzwivBgR.d.ts → policy-types-B-F-qAZk.d.ts} +109 -5
  211. package/dist/postgres-store-BL9M_CA1.js +1001 -0
  212. package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
  213. package/dist/{postgrest-CW0IqC-U.js → postgrest-r5faDIzD.js} +47 -5
  214. package/dist/{powersync-BHfuehf3.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-DXlt-vks.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
  222. package/dist/prompt-DwtVemER.js +935 -0
  223. package/dist/{protected-DEPHc2xV.d.ts → protected-BwZYL1X_.d.ts} +6 -5
  224. package/dist/{protected-DfjY5mLA.js → protected-DXE3cQYg.js} +2 -2
  225. package/dist/{provider-CC-u3bYP.js → provider-BQsTYYy0.js} +2 -2
  226. package/dist/{provider-DMVt6yYn.d.ts → provider-Csk-THAn.d.ts} +1 -1
  227. package/dist/{provider-store-B5Yrkhzr.js → provider-store-IgqQipCO.js} +2 -2
  228. package/dist/{pull-BgIfno6w.js → pull-CN5OLxrF.js} +7 -7
  229. package/dist/pull-Cty6Ovyu.js +1 -0
  230. package/dist/{push-CmFVBOeI.js → push-tVdG8dUL.js} +54 -14
  231. package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
  232. package/dist/{pushed-policy-DobP7AHI.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 +214 -24
  239. package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
  240. package/dist/{replay-D7iKcLFe.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
  241. package/dist/{request-context-BTRTG7OT.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-BA8an5Ap.js → rls-Ck_PocSp.js} +32 -8
  245. package/dist/{rls-j6t43t7n.js → rls-CxBZb4rZ.js} +478 -534
  246. package/dist/{role-builder-CXbis5-X.js → role-builder-C1VJzvcr.js} +3 -3
  247. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  248. package/dist/{rpc-aPyNi6tA.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-BjhTOi6u.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
  252. package/dist/{run-DOfMtc9V.js → run-uLD2aWuO.js} +7 -7
  253. package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
  254. package/dist/{saas-FO-Q8oj0.js → saas-Az_Kz-4D.js} +7 -7
  255. package/dist/{scan-BOI5tJ-6.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-DqCT4CgZ.js → server-Bnga6I50.js} +3 -3
  265. package/dist/{server-types-BLd4MnBX.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
  266. package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
  267. package/dist/{shared-CD11nBbC.js → shared-fMKOv8hP.js} +46 -39
  268. package/dist/{sink-Bj_lDUDq.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-CXUWfsNy.js → snapshot-CbGmYiJx.js} +4 -4
  272. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
  273. package/dist/{snapshot-cache-DqK9eDmM.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-BV9j0DeZ.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-DLfUWFAI.js → src-DLFrtrrC.js} +154 -53
  284. package/dist/ssf/index.d.ts +4 -4
  285. package/dist/ssf/index.js +640 -211
  286. package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
  287. package/dist/{store-4u_hxjWa.js → store-DSP9oGvh.js} +15 -7
  288. package/dist/{store-options-BqEakYRa.js → store-options-B_poyYvg.js} +6 -6
  289. package/dist/{stores-ClZUgeoP.d.ts → stores-BAZwSYZA.d.ts} +6 -5
  290. package/dist/{stores-BbsD4fAR.js → stores-BqEuHC05.js} +2 -2
  291. package/dist/{stream-7-xmnf3U.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-Dxlp8A94.js → supabase--0aJdLEd.js} +9 -7
  299. package/dist/{supabase-9pqI57pW.js → supabase-Bqp7iIY2.js} +3 -3
  300. package/dist/supabase-hook-DJxC4PoP.js +1 -0
  301. package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-Dg0SrQWR.js} +1069 -123
  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-5Ut_pbKy.d.ts → types-BWZybqs9.d.ts} +112 -8
  333. package/dist/{types-CZTnPFzM.d.ts → types-BXMYB7BY.d.ts} +2 -2
  334. package/dist/{types-CdlxsYQh.d.ts → types-BfVmNJO5.d.ts} +14 -3
  335. package/dist/{types-BqAKcRNW.d.ts → types-CIeZcG8v.d.ts} +2 -2
  336. package/dist/{types-BNORmDM8.d.ts → types-CKV71kKh.d.ts} +4 -4
  337. package/dist/{types-tIgIeIKJ.d.ts → types-CQVEQawv.d.ts} +4 -4
  338. package/dist/{types-BjV-fqcA.d.ts → types-CeIscIKp.d.ts} +4 -4
  339. package/dist/{types-_sHy8BQf.d.ts → types-CfiKC5aN.d.ts} +1 -1
  340. package/dist/{types-ClZaWzfb.d.ts → types-D3A19w4A.d.ts} +8 -4
  341. package/dist/{types-C8-KNsFf.d.ts → types-DBHftjgS.d.ts} +15 -8
  342. package/dist/{types-CCpc2Dcv.d.ts → types-DC44-hqb.d.ts} +2 -2
  343. package/dist/{types-fbZ7JEXr.d.ts → types-DXmwu78Z.d.ts} +4 -4
  344. package/dist/{types-DiQjupG2.d.ts → types-cTos-H7p.d.ts} +2 -2
  345. package/dist/{types-DX0LaKTb.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-T5mXq98v.js → usage-Bybmck7f.js} +7 -7
  349. package/dist/{usage-DHtE8j4E.js → usage-CDaLXCfL.js} +2 -2
  350. package/dist/usage-y-kBNdqs.js +1 -0
  351. package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
  352. package/dist/{verify-DbCL9bnB.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-CKy4MQSY.d.ts → waiter-DwEyouan.d.ts} +2 -2
  358. package/dist/watch-Bd9mx3rd.js +1 -0
  359. package/dist/{watch-CszoTJMq.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-Dv-WTP-w.js → where-scope-wq2coopv.js} +41 -21
  363. package/dist/{who-can-D0QoYbEb.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-Bd1Tejur.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 +5 -2
  379. package/skills/permdock-tenancy/SKILL.md +1 -1
  380. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -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-DjhMYYCq.js +0 -1
  384. package/dist/collect-FlXJlhus.js +0 -1
  385. package/dist/index-D8EovfsP.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-CbzkqL_M.js +0 -1
  391. package/dist/powersync-bYUDLOAO.js +0 -538
  392. package/dist/prompt-DfZLJLIn.js +0 -32
  393. package/dist/pull-ByOks_Tg.js +0 -1
  394. package/dist/run-CNsApDpd.js +0 -1
  395. package/dist/supabase-hook-CXcGpHqq.js +0 -1
  396. package/dist/supautils-B6HYL9eL.js +0 -91
  397. package/dist/text-diff-BQcUapOb.js +0 -15
  398. package/dist/usage-CHOtwL19.js +0 -1
  399. package/dist/watch-Cb-NcaUw.js +0 -1
@@ -1,6 +1,6 @@
1
- import { c as missingInput } from "./errors-CWTY6uih.js";
1
+ import { c as missingInput } from "./errors-DpP_U6Bf.js";
2
2
  import { t as defineLeaf } from "./command-L8EstFNm.js";
3
- import { c as given, l as outFlag, t as checkFlag, u as permissionsFlag } from "./flags-C3DktBDY.js";
3
+ import { c as given, l as outFlag, t as checkFlag, u as permissionsFlag } from "./flags-aaeRAdiD.js";
4
4
  //#region src/cli/commands/catalog.ts
5
5
  const RUN_FORMAT = {
6
6
  catalog: "json",
@@ -30,7 +30,7 @@ const catalog = defineLeaf({
30
30
  ...checkFlag
31
31
  },
32
32
  async run(ctx, { flags }) {
33
- const { catalogFile, runCatalog } = await import("./catalog-DjhMYYCq.js");
33
+ const { catalogFile, runCatalog } = await import("./catalog-BCCjSAdH.js");
34
34
  const result = await runCatalog({
35
35
  cwd: ctx.cwd,
36
36
  config: ctx.config,
@@ -1,9 +1,9 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
2
  import { r as listSourceFiles, t as defaultSrcPath } from "./files-D_JIzUrP.js";
3
- import { a as formatCatalogJson, i as catalogSchemaDocument, o as formatCatalogMarkdown, t as buildCatalog } from "./catalog-doc-C9wjsfNY.js";
4
- import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
5
- import { a as loadConfiguredOperations, i as scanSources, r as runCollect } from "./collect-CrZJJnEF.js";
6
- import { n as fileSummary, t as applyFiles } from "./files-C5ZI27eV.js";
3
+ import { a as catalogSchemaDocument, n as catalogForCompare, o as formatCatalogJson, r as catalogForDrift, s as formatCatalogMarkdown, t as buildCatalog } from "./catalog-doc-CV9s6B1S.js";
4
+ import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DxroEzH1.js";
5
+ import { a as loadConfiguredOperations, i as scanSources, r as runCollect } from "./collect-BaWeMjwV.js";
6
+ import { n as fileSummary, t as applyFiles } from "./files-acUbNwWt.js";
7
7
  import { existsSync, readFileSync } from "node:fs";
8
8
  import { resolve } from "node:path";
9
9
  //#region src/cli/catalog.ts
@@ -53,18 +53,30 @@ async function runCatalog(input) {
53
53
  output: formatCatalogJson(filtered)
54
54
  };
55
55
  }
56
- /** The comparable form of a catalog file: without the fields every run changes. */
56
+ /**
57
+ * The comparable forms of a catalog file: without the fields every run
58
+ * changes, then also without `usages[].line`.
59
+ */
57
60
  function comparable(text) {
58
61
  try {
59
62
  const parsed = JSON.parse(text);
60
63
  if (isRecord(parsed)) {
61
- const { generatedAt: _generatedAt, generator: _generator, ...rest } = parsed;
62
- return JSON.stringify(rest);
64
+ const doc = parsed;
65
+ return {
66
+ full: catalogForCompare(doc),
67
+ drift: catalogForDrift(doc)
68
+ };
63
69
  }
64
70
  } catch {}
65
- return text;
71
+ return {
72
+ full: text,
73
+ drift: text
74
+ };
66
75
  }
67
- /** `catalog --out`: writes the export, or with `--check` exits 1 when the file differs. */
76
+ /**
77
+ * `catalog --out`: writes the export, or with `--check` exits 1 when the file
78
+ * differs by more than usage line numbers.
79
+ */
68
80
  function catalogFile(cwd, out, text, check) {
69
81
  if (check) {
70
82
  const path = resolve(cwd, out);
@@ -76,13 +88,31 @@ function catalogFile(cwd, out, text, check) {
76
88
  stale: true
77
89
  }
78
90
  };
79
- const stale = comparable(readFileSync(path, "utf8")) !== comparable(text);
91
+ const onDisk = comparable(readFileSync(path, "utf8"));
92
+ const generated = comparable(text);
93
+ if (onDisk.full === generated.full) return {
94
+ code: 0,
95
+ output: `${out} is up to date`,
96
+ data: {
97
+ out,
98
+ stale: false
99
+ }
100
+ };
101
+ if (onDisk.drift === generated.drift) return {
102
+ code: 0,
103
+ output: `catalog usages moved (lines only): ${out}; run permdock collect to refresh`,
104
+ data: {
105
+ out,
106
+ stale: false,
107
+ positionsMoved: true
108
+ }
109
+ };
80
110
  return {
81
- code: stale ? 1 : 0,
82
- output: stale ? `catalog stale: ${out}` : `${out} is up to date`,
111
+ code: 1,
112
+ output: `catalog stale: ${out}`,
83
113
  data: {
84
114
  out,
85
- stale
115
+ stale: true
86
116
  }
87
117
  };
88
118
  }
@@ -1,9 +1,10 @@
1
- import { a as getResource, c as listPermissions, h as formerKeys } from "./permission-registry-Br4jSNVi.js";
2
- import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
3
- import { m as findRole, v as listRoles } from "./grantee-Cn1HyUsI.js";
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { a as getResource, c as listPermissions, h as formerKeys } from "./permission-registry-DpPtSKNZ.js";
3
+ import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
4
+ import { m as findRole, v as listRoles } from "./grantee-BrRANrpT.js";
4
5
  import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
5
6
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
6
- import { t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
7
+ import { t as catalogFingerprint } from "./catalog-fingerprint-C144oW4M.js";
7
8
  import { t as catalogSchema } from "./schema-B4v0Qrac.js";
8
9
  import { t as policyRowConditionKeys } from "./row-conditions-h2HythXQ.js";
9
10
  import { c as generatorBanner, n as CATALOG_SCHEMA } from "./version-CEbQ5UeM.js";
@@ -292,6 +293,28 @@ function catalogForCompare(doc) {
292
293
  const { generatedAt: _generatedAt, generator: _generator, ...rest } = doc;
293
294
  return `${JSON.stringify(rest, null, 2)}\n`;
294
295
  }
296
+ /**
297
+ * `catalogForCompare` without `usages[].line`: an edit above a call site moves
298
+ * its line without changing the contract, so `--check` does not fail on it.
299
+ */
300
+ function catalogForDrift(doc) {
301
+ const permissions = doc.permissions;
302
+ if (!Array.isArray(permissions)) return catalogForCompare(doc);
303
+ const { generatedAt: _generatedAt, generator: _generator, ...rest } = doc;
304
+ const stripped = {
305
+ ...rest,
306
+ permissions: permissions.map((permission) => {
307
+ if (!isRecord(permission) || !Array.isArray(permission["usages"])) return permission;
308
+ const usages = permission["usages"].map((usage) => {
309
+ if (!isRecord(usage)) return usage;
310
+ const { line: _line, ...position } = usage;
311
+ return position;
312
+ });
313
+ return Object.assign({}, permission, { usages });
314
+ })
315
+ };
316
+ return `${JSON.stringify(stripped, null, 2)}\n`;
317
+ }
295
318
  function formatCatalogMarkdown(doc) {
296
319
  const lines = ["# Permissions", ""];
297
320
  const byResource = /* @__PURE__ */ new Map();
@@ -312,4 +335,4 @@ function catalogSchemaDocument() {
312
335
  return catalogSchema;
313
336
  }
314
337
  //#endregion
315
- export { formatCatalogJson as a, catalogSchemaDocument as i, catalogForCompare as n, formatCatalogMarkdown as o, catalogOAuthScopes as r, jsonSchemaOf as s, buildCatalog as t };
338
+ export { catalogSchemaDocument as a, jsonSchemaOf as c, catalogOAuthScopes as i, catalogForCompare as n, formatCatalogJson as o, catalogForDrift as r, formatCatalogMarkdown as s, buildCatalog as t };
@@ -2,7 +2,7 @@ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
4
  import { l as isRfc3339 } from "./time-DkWjdL98.js";
5
- import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
5
+ import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
6
6
  import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
7
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
8
  import { n as copyJson, t as checkSchema } from "./json-schema-B-vAwlde.js";
@@ -1,12 +1,13 @@
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 { i as dateAt, p as nowSeconds } from "./time-DkWjdL98.js";
4
- import { s as policyDocumentFromClaims } from "./hosted-BZIAYvon.js";
4
+ import { u as policyDocumentFromClaims } from "./hosted-XBgU6RGT.js";
5
5
  import { l as isApprovalErrorCode, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
6
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";
7
+ import { n as parseCatalogEventData, t as catalogFingerprint } from "./catalog-fingerprint-C144oW4M.js";
8
8
  import { t as parseApprovalRequest } from "./parse-request-D_tUXG6M.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
13
  /** The RFC 9396 `authorization_details` type that binds an approver token to one verdict. */
@@ -92,44 +93,93 @@ function firstNonEmpty(...values) {
92
93
  function trimSlash(value) {
93
94
  return value.endsWith("/") ? value.slice(0, -1) : value;
94
95
  }
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");
96
+ function cloudUrl(options) {
97
+ return trimSlash(firstNonEmpty(options.url, readEnv("PERMDOCK_CLOUD_URL"), CLOUD_BASE_URL));
98
+ }
99
+ function endpointsOf(url, environment) {
103
100
  const issuer = `${url}/v1/environments/${encodeURIComponent(environment)}`;
104
101
  return Object.freeze({
105
102
  issuer,
106
103
  jwks: `${issuer}/.well-known/jwks.json`
107
104
  });
108
105
  }
109
- /** The authenticated connection every `permdock/cloud` client shares. Throws without a URL or key. */
106
+ /** `options.environment`, else `PERMDOCK_CLOUD_ENV`, else `""` for the key-bound lookup. */
107
+ function configuredEnvironment(options) {
108
+ return firstNonEmpty(options.environment, readEnv("PERMDOCK_CLOUD_ENV"));
109
+ }
110
+ /**
111
+ * The environment URL and JWK Set URL `cloud()` uses when the environment is
112
+ * configured: `environment`, else `PERMDOCK_CLOUD_ENV`. Throws when neither
113
+ * is set; `resolveCloudEndpoints` then asks the Cloud which environment the
114
+ * key belongs to.
115
+ */
116
+ function cloudEndpoints(options = {}) {
117
+ const url = cloudUrl(options);
118
+ const environment = configuredEnvironment(options);
119
+ if (environment === "") throw new Error("PermDock: cloudEndpoints() requires environment or PERMDOCK_CLOUD_ENV; resolveCloudEndpoints() asks the Cloud for the key's environment.");
120
+ return endpointsOf(url, environment);
121
+ }
122
+ async function keyEnvironment(url, key, fetchFn) {
123
+ const response = await fetchFn(`${url}/v1/environment`, {
124
+ headers: {
125
+ authorization: `Bearer ${key}`,
126
+ accept: "application/json"
127
+ },
128
+ signal: timeoutSignal(CLOUD_TIMEOUT_MS)
129
+ });
130
+ if (!response.ok) throw new Error(`PermDock Cloud did not name the key's environment: HTTP ${String(response.status)}`);
131
+ const body = await response.json();
132
+ if (!isRecord(body) || typeof body["environment"] !== "string") throw new Error("PermDock Cloud answered GET /v1/environment in an unknown shape");
133
+ const endpoints = endpointsOf(url, body["environment"]);
134
+ if (body["issuer"] !== endpoints.issuer) throw new Error(`PermDock Cloud named issuer ${String(body["issuer"])}, not ${endpoints.issuer}`);
135
+ return endpoints;
136
+ }
137
+ /** The authenticated connection every `permdock/cloud` client shares. Throws without a key. */
110
138
  function cloudConnection(options) {
111
139
  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);
140
+ const url = cloudUrl(options);
141
+ if (key === "") throw new Error("PermDock: cloud() requires a key (PERMDOCK_CLOUD_KEY).");
142
+ const environment = configuredEnvironment(options);
143
+ const known = environment === "" ? void 0 : endpointsOf(url, environment);
114
144
  const fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
115
- const request = (path, init = {}, accept, contentType) => {
145
+ let pending;
146
+ const endpoints = () => {
147
+ if (known !== void 0) return Promise.resolve(known);
148
+ pending ??= keyEnvironment(url, key, fetchFn).catch((error) => {
149
+ pending = void 0;
150
+ throw error;
151
+ });
152
+ return pending;
153
+ };
154
+ const request = async (path, init = {}, accept, contentType) => {
155
+ const { issuer } = await endpoints();
116
156
  const headers = new Headers();
117
157
  headers.set("authorization", `Bearer ${key}`);
118
158
  headers.set("content-type", "application/json");
119
159
  for (const [name, value] of new Headers(init.headers)) headers.set(name, value);
120
160
  if (accept !== void 0) headers.set("accept", accept);
121
161
  if (contentType !== void 0) headers.set("content-type", contentType);
122
- return fetchFn(`${endpoints.issuer}${path}`, {
162
+ return fetchFn(`${issuer}${path}`, {
123
163
  ...init,
124
164
  headers,
125
165
  signal: timeoutSignal(CLOUD_TIMEOUT_MS, init.signal)
126
166
  });
127
167
  };
128
168
  return Object.freeze({
129
- ...endpoints,
169
+ known,
170
+ endpoints,
130
171
  request
131
172
  });
132
173
  }
174
+ /**
175
+ * The environment URL and JWK Set URL for a key: `cloudEndpoints(options)`
176
+ * when the environment is configured, else the environment `GET
177
+ * /v1/environment` names for `key` (`PERMDOCK_CLOUD_KEY`). Rejects when the
178
+ * Cloud does not answer or answers another issuer.
179
+ */
180
+ async function resolveCloudEndpoints(options = {}) {
181
+ return await cloudConnection(options).endpoints();
182
+ }
133
183
  /** `true` for a compact JWS: three dot-separated parts, not JSON. */
134
184
  function isCompactJws(value) {
135
185
  return !value.startsWith("{") && value.split(".").length === 3;
@@ -182,7 +232,7 @@ function approvalErrorFromStatus(status) {
182
232
  return new ApprovalError("approval-not-found", "approval was not found");
183
233
  }
184
234
  function cloud(options = {}) {
185
- const { issuer: root, jwks, request } = cloudConnection(options);
235
+ const { known, endpoints, request } = cloudConnection(options);
186
236
  const flushAt = options.flushAt ?? 32;
187
237
  const waitUntil = options.waitUntil;
188
238
  const approvals = {
@@ -211,7 +261,7 @@ function cloud(options = {}) {
211
261
  }
212
262
  },
213
263
  async resolve(token, verdict) {
214
- const approver = await approverHeaders(verdict, options.approver, root, async () => {
264
+ const approver = await approverHeaders(verdict, options.approver, (await endpoints()).issuer, async () => {
215
265
  const response = await request("/approvals/by-token", { headers: { [APPROVAL_HEADER]: token } });
216
266
  if (!response.ok) throw await approvalErrorFrom(response);
217
267
  const found = parseApprovalRequest(await response.json());
@@ -306,8 +356,7 @@ function cloud(options = {}) {
306
356
  }
307
357
  };
308
358
  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");
359
+ if (options.source !== void 0 && !isAbsoluteUri(options.source)) throw new TypeError("PermDock: cloud() source is an absolute URI");
311
360
  const pending = [];
312
361
  const bound = () => {
313
362
  if (pending.length > capacity) pending.splice(0, pending.length - capacity);
@@ -316,6 +365,7 @@ function cloud(options = {}) {
316
365
  if (pending.length === 0) return;
317
366
  const events = pending.splice(0);
318
367
  try {
368
+ const source = options.source ?? (await endpoints()).issuer;
319
369
  if (!(await request("/decisions", {
320
370
  method: "POST",
321
371
  body: JSON.stringify(events.map((event) => toCloudEvent(event, { source })))
@@ -342,6 +392,13 @@ function cloud(options = {}) {
342
392
  return text;
343
393
  } });
344
394
  let document = null;
395
+ let built;
396
+ const policyVerifier = (resolved) => {
397
+ const verifier = options.verifier;
398
+ if (typeof verifier !== "function") return verifier;
399
+ built ??= verifier(resolved);
400
+ return built;
401
+ };
345
402
  return freezeDeep({
346
403
  approvals,
347
404
  sink,
@@ -351,10 +408,15 @@ function cloud(options = {}) {
351
408
  return document;
352
409
  },
353
410
  async refresh() {
354
- const verifier = options.verifier;
355
- if (verifier === void 0) return;
411
+ if (options.verifier === void 0) return;
356
412
  let response;
413
+ let root;
414
+ let verifier;
357
415
  try {
416
+ const resolved = await endpoints();
417
+ root = resolved.issuer;
418
+ verifier = policyVerifier(resolved);
419
+ if (verifier === void 0) return;
358
420
  response = await request("/policy");
359
421
  } catch {
360
422
  return;
@@ -395,9 +457,44 @@ function cloud(options = {}) {
395
457
  if (parsed === null) throw new Error("PermDock Cloud answered the catalog push in an unknown shape");
396
458
  return parsed;
397
459
  } },
398
- issuer: root,
399
- jwks
460
+ endpoints,
461
+ ...known
400
462
  });
401
463
  }
402
464
  //#endregion
403
- export { approverHeaders as a, isCompactJws as i, cloudConnection as n, cloudEndpoints as r, cloud as t };
465
+ //#region src/cloud/challenge.ts
466
+ const SCHEME = /^[\s,]*([!#$%&'*+.^_`|~0-9A-Za-z-]+)(?=[\s,]|$)/u;
467
+ const PARAM = /^\s*([!#$%&'*+.^_`|~0-9A-Za-z-]+)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([!#$%&'*+.^_`|~0-9A-Za-z-]+))\s*(?:,|$)/u;
468
+ const TOKEN68 = /^\s*[A-Za-z0-9._~+/-]+=*\s*(?:,|$)/u;
469
+ /**
470
+ * The first `Bearer` challenge in `header` (RFC 9110 section 11.6.1 syntax),
471
+ * or `null`. Other schemes in the same field are skipped.
472
+ */
473
+ function bearerChallenge(header) {
474
+ if (header === null) return null;
475
+ let rest = header;
476
+ while (rest.trim() !== "") {
477
+ const scheme = SCHEME.exec(rest);
478
+ if (scheme === null) return null;
479
+ rest = rest.slice(scheme[0].length);
480
+ const entries = [];
481
+ let param = PARAM.exec(rest);
482
+ if (param === null) {
483
+ const token68 = TOKEN68.exec(rest);
484
+ rest = token68 === null ? rest : rest.slice(token68[0].length);
485
+ }
486
+ while (param !== null) {
487
+ const quoted = param[2];
488
+ entries.push([(param[1] ?? "").toLowerCase(), quoted === void 0 ? param[3] ?? "" : quoted.replaceAll(/\\(.)/gu, "$1")]);
489
+ rest = rest.slice(param[0].length);
490
+ param = PARAM.exec(rest);
491
+ }
492
+ if ((scheme[1] ?? "").toLowerCase() === "bearer") return Object.freeze({
493
+ scheme: "bearer",
494
+ params: Object.freeze(Object.fromEntries(entries))
495
+ });
496
+ }
497
+ return null;
498
+ }
499
+ //#endregion
500
+ 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-0VZ7Pdiu.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-B2-CQqCI.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 };
@@ -2,9 +2,9 @@ import { t as compact } from "../compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
3
  import { n as loadPrincipalByIdentity } from "../principal-source-pHneukrx.js";
4
4
  import { f as nowMillis } from "../time-DkWjdL98.js";
5
- import { c as withApp, t as getPermDock } from "../permdock-B9JxkBwC.js";
5
+ import { l as withApp, t as getPermDock } from "../permdock-BfWEeMqk.js";
6
6
  import { c as isApprovalError } from "../types-DqzsnlSA.js";
7
- import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-DTcZOzhF.js";
7
+ import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-DY3vXuGs.js";
8
8
  import { t as approvalPrompt } from "../approval-prompt-Dg5LeAcT.js";
9
9
  //#region src/chat/subject.ts
10
10
  function nonEmpty(value) {
@@ -1,6 +1,6 @@
1
- import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-Djo_PyZc.js";
2
- import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-0VZ7Pdiu.js";
3
- import { n as ChatTransport } from "../types-DX0LaKTb.js";
1
+ import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-K0faOLFp.js";
2
+ import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-B2-CQqCI.js";
3
+ import { n as ChatTransport } from "../types-g7Oy6Zg4.js";
4
4
  import { ActionEvent, Author, CardElement } from "chat";
5
5
  //#region src/chat-sdk/author.d.ts
6
6
  type ChatSdkAuthorOptions = {
@@ -0,0 +1,37 @@
1
+ import { n as isReadonlyArray } from "./compact-CAf557ZB.js";
2
+ //#region src/core/checks.ts
3
+ function partsOf(check) {
4
+ return isReadonlyArray(check) ? [check[0], check[1]] : [check, void 0];
5
+ }
6
+ /** `true` when every check is granted, stopping at the first that is not; an empty list is `false`. */
7
+ function canAllWith(can, checks, options) {
8
+ if (checks.length === 0) return false;
9
+ return checks.every((check) => {
10
+ const [permission, data] = partsOf(check);
11
+ return can(permission, data, options);
12
+ });
13
+ }
14
+ /** One decision per check, in check order. */
15
+ function decideAllWith(decide, checks, options) {
16
+ return Object.freeze(checks.map((check) => {
17
+ const [permission, data] = partsOf(check);
18
+ return decide(permission, data, options);
19
+ }));
20
+ }
21
+ /** The async `canAll` of an instance whose `can` answers a Promise. */
22
+ async function canAllAsync(can, checks, options) {
23
+ if (checks.length === 0) return false;
24
+ return (await Promise.all(checks.map((check) => {
25
+ const [permission, data] = partsOf(check);
26
+ return can(permission, data, options);
27
+ }))).every(Boolean);
28
+ }
29
+ /** The async `decideAll` of an instance whose `decide` answers a Promise. */
30
+ async function decideAllAsync(decide, checks, options) {
31
+ return Object.freeze(await Promise.all(checks.map((check) => {
32
+ const [permission, data] = partsOf(check);
33
+ return decide(permission, data, options);
34
+ })));
35
+ }
36
+ //#endregion
37
+ export { decideAllWith as i, canAllWith as n, decideAllAsync as r, canAllAsync as t };
@@ -1,6 +1,6 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { r as PermDock } from "../permdock-D7eeLJER.js";
3
- import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BDS7wc3y.js";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { a as PermDock } from "../permdock-Dco6dyCK.js";
3
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-UTnUVETj.js";
4
4
  //#region src/claude-agent/create.d.ts
5
5
  /** Structural `McpServerProvenance` from `@anthropic-ai/claude-agent-sdk`. */
6
6
  type ClaudeMcpServer = {
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
2
- import { c as withApp } from "../permdock-B9JxkBwC.js";
3
- import { t as agentRuntime } from "../create-C3b4B5eF.js";
2
+ import { l as withApp } from "../permdock-BfWEeMqk.js";
3
+ import { t as agentRuntime } from "../create-Cb86Z8Im.js";
4
4
  //#region src/claude-agent/create.ts
5
5
  const MCP_PREFIX = "mcp__";
6
6
  function asInput(input) {
@@ -1,6 +1,6 @@
1
- import { W as CustomRoleSource, ir as Subject, rr as Principal } from "../policy-types-DzwivBgR.js";
2
- import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
- import { s as RemotePdpCache } from "../types-ClZaWzfb.js";
1
+ import { W as CustomRoleSource, lr as Subject, sr as Principal } from "../policy-types-B-F-qAZk.js";
2
+ import { u as Permission } from "../permission-types-DhNEmoRG.js";
3
+ import { s as RemotePdpCache } from "../types-D3A19w4A.js";
4
4
  import { t as ClaimsMap } from "../claims-map-Ca-QX8C6.js";
5
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
6
6
  //#region src/clerk/types.d.ts
@@ -3,7 +3,7 @@ import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
3
  import { r as validateRecord } from "../thenable-yD7SabqG.js";
4
4
  import { t as anonymousSubject } from "../subject-BGoM5o8B.js";
5
5
  import { t as readClaim } from "../claims-map-7oQ3ue4X.js";
6
- import { c as ttlMs, s as ttlCache } from "../shared-DvvFzYXe.js";
6
+ import { c as ttlMs, s as ttlCache } from "../shared-C8LjUdVU.js";
7
7
  //#region src/clerk/subject.ts
8
8
  function asRoles(value) {
9
9
  if (typeof value === "string") return value === "" ? [] : [value];
package/dist/cli/bin.js CHANGED
@@ -11,8 +11,8 @@ if (argv.length === 1 && (argv[0] === "--version" || argv[0] === "-v")) {
11
11
  const [{ isCi }, { trapSignals }, { run }, { streamHasColors }] = await Promise.all([
12
12
  import("../env-DJZrPjRi.js"),
13
13
  import("../signals-D3NcTKUS.js"),
14
- import("../run-CNsApDpd.js"),
15
- import("../style-DiKWnAvn.js")
14
+ import("../run-Bz7DXGEv.js"),
15
+ import("../style-Ds1gNm77.js")
16
16
  ]);
17
17
  const signals = trapSignals();
18
18
  const result = await run(argv, {
@@ -1,6 +1,6 @@
1
- import { a as CatalogDocument, d as CatalogRole, f as CatalogScope, l as CatalogPermission, m as CatalogUsage, n as CatalogApproval, p as CatalogSupportAccess, r as CatalogBreakGlass, t as CatalogActivation, u as CatalogResource } from "../types-CZTnPFzM.js";
2
- import { a as pushedPolicy, i as parsePushedPolicy, n as PushedGrant, r as PushedPolicy, t as PUSHED_POLICY_SCHEMA } from "../pushed-policy-BImMTTIM.js";
3
- import { _ as RunResult, c as RlsConfig, d as RlsMembershipTable, f as RlsMemberships, g as RlsTarget, h as RlsSuspension, i as PermDockConfig, l as RlsDialect, m as RlsSuspendedScope, n as CliIo, o as RlsActiveRow, p as RlsSuspendedMembership, r as CollectConfig, s as RlsApiKeys, t as CatalogConfig, u as RlsFunctionMapping } from "../types-5Ut_pbKy.js";
1
+ import { a as CatalogDocument, d as CatalogRole, f as CatalogScope, l as CatalogPermission, m as CatalogUsage, n as CatalogApproval, p as CatalogSupportAccess, r as CatalogBreakGlass, t as CatalogActivation, u as CatalogResource } from "../types-BXMYB7BY.js";
2
+ import { a as pushedPolicy, i as parsePushedPolicy, n as PushedGrant, r as PushedPolicy, t as PUSHED_POLICY_SCHEMA } from "../pushed-policy-BbcY9r_4.js";
3
+ import { _ as RunResult, c as RlsConfig, d as RlsMembershipTable, f as RlsMemberships, g as RlsTarget, h as RlsSuspension, i as PermDockConfig, l as RlsDialect, m as RlsSuspendedScope, n as CliIo, o as RlsActiveRow, p as RlsSuspendedMembership, r as CollectConfig, s as RlsApiKeys, t as CatalogConfig, u as RlsFunctionMapping } from "../types-BWZybqs9.js";
4
4
  //#region src/cli/catalog-path.d.ts
5
5
  /**
6
6
  * The absolute path `permdock collect` writes the catalog to: `collect.out`,
package/dist/cli/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { t as catalogPath } from "../catalog-path-CnI0XTFK.js";
2
- import { t as defineConfig } from "../config-bs_kZeYq.js";
3
- import { n as parsePushedPolicy, r as pushedPolicy, t as PUSHED_POLICY_SCHEMA } from "../pushed-policy-DobP7AHI.js";
2
+ import { t as defineConfig } from "../config-CoQHDrDi.js";
3
+ import { n as parsePushedPolicy, r as pushedPolicy, t as PUSHED_POLICY_SCHEMA } from "../pushed-policy-CmYeSQqq.js";
4
4
  import { c as parseGrantsMarker, l as parseHookMarker } from "../markers-C6joDI3o.js";
5
- import { t as run } from "../run-DOfMtc9V.js";
5
+ import { t as run } from "../run-uLD2aWuO.js";
6
6
  //#region src/cli/token-schemas.ts
7
7
  const ID = {
8
8
  type: "string",