permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -0,0 +1,254 @@
1
+ import { h as secondsAt, i as dateAt, s as instantAt } from "./time-DkWjdL98.js";
2
+ import { n as CliError } from "./errors-CWTY6uih.js";
3
+ import { i as postForm, r as parseToken, s as runDeviceFlow } from "./device-BARQ8eYG.js";
4
+ import { i as writeCredentials, n as deleteCredentials, r as readCredentials, t as credentialsPath } from "./storage-C2bWdvJH.js";
5
+ import { n as httpRequest } from "./http-DXJ37RDA.js";
6
+ import { c as READ_SCOPES, d as issuerMetadata, i as credentialsInsideRepository, l as cloudUrl, n as cliRuntime, r as credentialStorage, s as CLI_CLIENT_ID, t as CREDENTIAL_SERVICE } from "./auth-DRLEizbL.js";
7
+ import { createHash, randomBytes } from "node:crypto";
8
+ import { spawn } from "node:child_process";
9
+ import { createServer } from "node:http";
10
+ //#region src/cli/cloud/loopback.ts
11
+ /** How long the loopback listener waits for the browser to come back. */
12
+ const LOOPBACK_TIMEOUT_MS = 3e5;
13
+ function base64url(bytes) {
14
+ return bytes.toString("base64url");
15
+ }
16
+ function listen(server) {
17
+ return new Promise((resolve, reject) => {
18
+ server.once("error", reject);
19
+ server.listen(0, "127.0.0.1", () => {
20
+ const address = server.address();
21
+ resolve(typeof address === "object" && address !== null ? address.port : 0);
22
+ });
23
+ });
24
+ }
25
+ /**
26
+ * RFC 8252 native-app login: an authorization code delivered to a listener on
27
+ * `127.0.0.1` with an ephemeral port, bound by PKCE S256 (RFC 7636) and a
28
+ * `state` that the callback must echo.
29
+ */
30
+ async function runLoopbackFlow(options, runtime) {
31
+ const verifier = base64url(randomBytes(32));
32
+ const challenge = base64url(createHash("sha256").update(verifier).digest());
33
+ const state = base64url(randomBytes(16));
34
+ const { promise: callback, resolve: settle } = Promise.withResolvers();
35
+ const server = createServer((request, response) => {
36
+ const url = new URL(request.url ?? "/", "http://127.0.0.1");
37
+ if (url.pathname !== "/callback") {
38
+ response.writeHead(404).end();
39
+ return;
40
+ }
41
+ const code = url.searchParams.get("code");
42
+ const error = url.searchParams.get("error");
43
+ const ok = url.searchParams.get("state") === state && code !== null;
44
+ response.writeHead(ok ? 200 : 400, { "content-type": "text/plain; charset=utf-8" }).end(ok ? "PermDock login complete. You can close this tab.\n" : "PermDock login failed. Return to the terminal.\n");
45
+ settle(ok ? {
46
+ ok: true,
47
+ code
48
+ } : {
49
+ ok: false,
50
+ error: error ?? "state-mismatch"
51
+ });
52
+ });
53
+ let port;
54
+ try {
55
+ port = await listen(server);
56
+ } catch {
57
+ return null;
58
+ }
59
+ const redirectUri = `http://127.0.0.1:${String(port)}/callback`;
60
+ const authorize = new URL(options.authorizationEndpoint);
61
+ authorize.searchParams.set("response_type", "code");
62
+ authorize.searchParams.set("client_id", options.clientId);
63
+ authorize.searchParams.set("redirect_uri", redirectUri);
64
+ authorize.searchParams.set("scope", options.scope);
65
+ authorize.searchParams.set("state", state);
66
+ authorize.searchParams.set("code_challenge", challenge);
67
+ authorize.searchParams.set("code_challenge_method", "S256");
68
+ options.write(`Open ${authorize.href} to log in\n`);
69
+ options.open?.(authorize.href);
70
+ let timer;
71
+ const timeout = new Promise((resolve) => {
72
+ timer = setTimeout(() => {
73
+ resolve({
74
+ ok: false,
75
+ error: "timeout"
76
+ });
77
+ }, options.timeoutMs ?? LOOPBACK_TIMEOUT_MS);
78
+ });
79
+ const result = await Promise.race([callback, timeout]);
80
+ clearTimeout(timer);
81
+ server.closeAllConnections();
82
+ server.close();
83
+ if (!result.ok) return null;
84
+ const body = await postForm(runtime, options.tokenEndpoint, {
85
+ grant_type: "authorization_code",
86
+ code: result.code,
87
+ redirect_uri: redirectUri,
88
+ client_id: options.clientId,
89
+ code_verifier: verifier
90
+ });
91
+ if (body === null) return null;
92
+ const token = parseToken(body, secondsAt(runtime.now?.()));
93
+ return token.ok ? token.credential : null;
94
+ }
95
+ //#endregion
96
+ //#region src/cli/cloud/login.ts
97
+ /** Opens `url` in the default browser; a failure leaves the printed URL to the user. */
98
+ function openBrowser(url) {
99
+ const [command, args] = process.platform === "darwin" ? ["open", [url]] : process.platform === "win32" ? ["cmd", [
100
+ "/c",
101
+ "start",
102
+ "",
103
+ url
104
+ ]] : ["xdg-open", [url]];
105
+ try {
106
+ const child = spawn(command, args, {
107
+ stdio: "ignore",
108
+ detached: true
109
+ });
110
+ child.on("error", () => void 0);
111
+ child.unref();
112
+ } catch {}
113
+ }
114
+ /** RFC 7009 answers 200 with an empty body, also for a token it does not know. */
115
+ async function revoke(runtime, endpoint, fields) {
116
+ try {
117
+ return (await httpRequest(runtime.fetch === void 0 ? {} : { fetch: runtime.fetch }, {
118
+ url: endpoint,
119
+ method: "POST",
120
+ service: endpoint,
121
+ headers: { "content-type": "application/x-www-form-urlencoded" },
122
+ body: new URLSearchParams(fields)
123
+ })).ok;
124
+ } catch {
125
+ return false;
126
+ }
127
+ }
128
+ function failed(code, output) {
129
+ return {
130
+ code,
131
+ output
132
+ };
133
+ }
134
+ async function runLogin(input) {
135
+ const issuer = cloudUrl(input.url, input.env);
136
+ const runtime = cliRuntime(input.io, input.env);
137
+ const inside = credentialsInsideRepository(input.cwd, runtime);
138
+ if (inside !== null) return failed(2, `permdock login refuses to store credentials inside the repository (${inside}); point XDG_CONFIG_HOME outside it`);
139
+ const metadata = await issuerMetadata(issuer, runtime);
140
+ if (metadata === null) return failed(1, `permdock login: ${issuer} publishes no RFC 8414 metadata for that issuer`);
141
+ const scope = [.../* @__PURE__ */ new Set([...READ_SCOPES, ...input.scopes])].join(" ");
142
+ const open = input.open ? openBrowser : void 0;
143
+ const say = (text) => {
144
+ input.io.stderr(text.replace(/\n$/u, ""));
145
+ };
146
+ let credential = null;
147
+ if (!input.loopback && metadata.deviceAuthorizationEndpoint !== void 0 && metadata.tokenEndpoint !== void 0) credential = await runDeviceFlow({
148
+ clientId: CLI_CLIENT_ID,
149
+ scope,
150
+ authorizationEndpoint: metadata.deviceAuthorizationEndpoint,
151
+ tokenEndpoint: metadata.tokenEndpoint,
152
+ ...open === void 0 ? {} : { open }
153
+ }, runtime, say);
154
+ else if (metadata.authorizationEndpoint !== void 0 && metadata.tokenEndpoint !== void 0) credential = await runLoopbackFlow({
155
+ authorizationEndpoint: metadata.authorizationEndpoint,
156
+ tokenEndpoint: metadata.tokenEndpoint,
157
+ clientId: CLI_CLIENT_ID,
158
+ scope,
159
+ write: say,
160
+ ...open === void 0 ? {} : { open }
161
+ }, runtime);
162
+ else return failed(1, `permdock login: ${issuer} offers neither the device flow nor an authorization endpoint`);
163
+ if (credential === null) return failed(1, `permdock login: ${issuer} did not issue a token`);
164
+ const granted = credential.scope === void 0 ? {
165
+ ...credential,
166
+ scope
167
+ } : credential;
168
+ const storage = await credentialStorage();
169
+ const where = writeCredentials(storage, issuer, granted, runtime) === "keychain" ? "the OS keychain" : credentialsPath(CREDENTIAL_SERVICE, runtime);
170
+ return {
171
+ code: 0,
172
+ output: input.json ? JSON.stringify({
173
+ issuer,
174
+ scope: granted.scope,
175
+ storage: where
176
+ }) : `logged in to ${issuer} (${granted.scope ?? scope}); credentials in ${where}`
177
+ };
178
+ }
179
+ /** Revokes the stored login (RFC 7009) and deletes it; a revocation failure still deletes it. */
180
+ async function runLogout(input) {
181
+ const issuer = cloudUrl(input.url, input.env);
182
+ const runtime = cliRuntime(input.io, input.env);
183
+ const storage = await credentialStorage();
184
+ const credential = readCredentials(storage, issuer, runtime);
185
+ if (credential === null) return {
186
+ code: 0,
187
+ output: input.json ? JSON.stringify({
188
+ issuer,
189
+ status: "not logged in"
190
+ }) : `not logged in to ${issuer}`
191
+ };
192
+ const metadata = await issuerMetadata(issuer, runtime);
193
+ let revoked = false;
194
+ if (metadata?.revocationEndpoint !== void 0) {
195
+ const refresh = credential.refresh_token;
196
+ revoked = await revoke(runtime, metadata.revocationEndpoint, {
197
+ token: refresh ?? credential.access_token,
198
+ token_type_hint: refresh === void 0 ? "access_token" : "refresh_token",
199
+ client_id: CLI_CLIENT_ID
200
+ });
201
+ }
202
+ deleteCredentials(storage, issuer, runtime);
203
+ const status = revoked ? "revoked" : "deleted";
204
+ return {
205
+ code: 0,
206
+ output: input.json ? JSON.stringify({
207
+ issuer,
208
+ status
209
+ }) : `logged out of ${issuer} (${revoked ? "token revoked" : "credentials deleted; the token was not revoked"})`
210
+ };
211
+ }
212
+ /** The credential the next Cloud call sends, without sending it. */
213
+ async function runWhoami(input) {
214
+ const issuer = cloudUrl(input.url, input.env);
215
+ for (const name of ["PERMDOCK_CLOUD_KEY", "PERMDOCK_CLOUD_TOKEN"]) {
216
+ const value = input.env[name];
217
+ if (value !== void 0 && value !== "") {
218
+ const data = {
219
+ issuer,
220
+ source: name
221
+ };
222
+ return {
223
+ code: 0,
224
+ output: input.json ? JSON.stringify(data) : `${issuer}: ${name} from the environment`,
225
+ data
226
+ };
227
+ }
228
+ }
229
+ const runtime = cliRuntime(input.io, input.env);
230
+ const credential = readCredentials(await credentialStorage(), issuer, runtime);
231
+ if (credential === null) throw new CliError("action", `not logged in to ${issuer}`, {
232
+ code: "auth_required",
233
+ next: [{
234
+ command: "permdock login",
235
+ when: "to log in"
236
+ }]
237
+ });
238
+ const scopes = (credential.scope ?? "").split(" ").filter((scope) => scope !== "");
239
+ const expired = credential.expires_at !== void 0 && credential.expires_at <= secondsAt(runtime.now?.()) && credential.refresh_token === void 0;
240
+ const data = {
241
+ issuer,
242
+ source: "login",
243
+ scopes,
244
+ ...credential.expires_at === void 0 ? {} : { expiresAt: dateAt(instantAt(credential.expires_at)).toISOString() },
245
+ expired
246
+ };
247
+ return {
248
+ code: 0,
249
+ output: input.json ? JSON.stringify(data) : `${issuer}: logged in (${scopes.join(" ") || "no scopes"})${expired ? "; the login has expired, run permdock login" : ""}`,
250
+ data
251
+ };
252
+ }
253
+ //#endregion
254
+ export { runLogin, runLogout, runWhoami };
@@ -0,0 +1,42 @@
1
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
2
+ import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
3
+ import { n as copyJson, t as checkSchema } from "./json-schema-B-vAwlde.js";
4
+ import { t as supabaseManifestSchema } from "./manifest-schema-C0kK_8V0.js";
5
+ //#region src/supabase/manifest.ts
6
+ /**
7
+ * Reads a `permdock.manifest.json` document (parsed, or the JSON text) and
8
+ * validates it against `schemas/supabase-manifest-v1.json`. Returns a
9
+ * deep-frozen copy built from own keys; throws `PermDockValidationError`
10
+ * with every issue, so a manifest of another major is refused.
11
+ */
12
+ function parseSupabaseManifest(json) {
13
+ const issues = [];
14
+ let input = json;
15
+ if (typeof json === "string") try {
16
+ input = JSON.parse(json);
17
+ } catch (error) {
18
+ invalidManifest([{
19
+ message: `Expected JSON text: ${error instanceof Error ? error.message : String(error)}`,
20
+ path: []
21
+ }]);
22
+ }
23
+ const copy = copyJson(input, [], issues, /* @__PURE__ */ new Set());
24
+ if (issues.length === 0) checkSchema(supabaseManifestSchema, copy, [], issues);
25
+ if (issues.length > 0) invalidManifest(issues);
26
+ return freezeDeep(copy);
27
+ }
28
+ function invalidManifest(issues) {
29
+ const [first] = issues;
30
+ const where = first?.path === void 0 || first.path.length === 0 ? "" : ` at ${first.path.map(String).join(".")}`;
31
+ const more = issues.length > 1 ? ` (and ${String(issues.length - 1)} more)` : "";
32
+ throw new PermDockValidationError({
33
+ code: "invalid-data",
34
+ permission: "",
35
+ resource: "",
36
+ boundary: "supabase-manifest",
37
+ issues,
38
+ message: `PermDock: invalid Supabase manifest${where}: ${first?.message ?? "unknown"}${more}`
39
+ });
40
+ }
41
+ //#endregion
42
+ export { parseSupabaseManifest as t };
@@ -0,0 +1,370 @@
1
+ //#region src/cli/core/manifest.ts
2
+ const DOCS_BASE = "https://permdock.com/docs/cli";
3
+ function leaf(name, summary, options) {
4
+ return {
5
+ kind: "leaf",
6
+ name,
7
+ summary,
8
+ ...options
9
+ };
10
+ }
11
+ function group(name, summary, docs, children) {
12
+ return {
13
+ kind: "group",
14
+ name,
15
+ summary,
16
+ docs,
17
+ children
18
+ };
19
+ }
20
+ const SECTIONS = [
21
+ {
22
+ title: "Get started",
23
+ entries: [
24
+ leaf("init", "Write a preset's permissions, policy, app and wiring into the project", {
25
+ examples: [
26
+ "permdock init --preset p1AQIDBAc",
27
+ "permdock init --archetype b2b --framework hono --integration mcp",
28
+ "permdock init --archetype api --auth supabase --backend drizzle --service cloud-decision-log"
29
+ ],
30
+ docs: "init",
31
+ effects: ["files"],
32
+ config: false,
33
+ load: async () => (await import("./init-GG6Jh8HD.js")).init
34
+ }),
35
+ group("preset", "Decode a preset code, or print its permdock.com/create link", "preset", [leaf("decode", "Print what a preset code holds", {
36
+ examples: ["permdock preset decode p1AQIDBAc"],
37
+ docs: "preset",
38
+ effects: [],
39
+ config: false,
40
+ load: async () => (await import("./init-GG6Jh8HD.js")).presetDecode
41
+ }), leaf("url", "Print the permdock.com/create link that opens a code", {
42
+ examples: ["permdock preset url p1AQIDBAc"],
43
+ docs: "preset",
44
+ effects: [],
45
+ config: false,
46
+ load: async () => (await import("./init-GG6Jh8HD.js")).presetUrl
47
+ })]),
48
+ group("skills", "Install, update or list the PermDock Agent Skills", "skills", [
49
+ leaf("install", "Copy the Agent Skills into the agent folders", {
50
+ examples: [
51
+ "permdock skills install",
52
+ "permdock skills install --for cursor --for claude",
53
+ "permdock skills install --check"
54
+ ],
55
+ docs: "skills",
56
+ effects: ["files"],
57
+ config: false,
58
+ load: async () => (await import("./skills-CTYwkl44.js")).install
59
+ }),
60
+ leaf("update", "Replace installed skills with this version's", {
61
+ examples: ["permdock skills update"],
62
+ docs: "skills",
63
+ effects: ["files"],
64
+ config: false,
65
+ load: async () => (await import("./skills-CTYwkl44.js")).update
66
+ }),
67
+ leaf("list", "List the skills and where each is installed", {
68
+ examples: ["permdock skills list"],
69
+ docs: "skills",
70
+ effects: [],
71
+ config: false,
72
+ load: async () => (await import("./skills-CTYwkl44.js")).list
73
+ })
74
+ ]),
75
+ leaf("doctor", "Check a PermDock installation and print a fix for each finding", {
76
+ examples: [
77
+ "permdock doctor",
78
+ "permdock doctor --only imports,references",
79
+ "permdock doctor --format github"
80
+ ],
81
+ docs: "doctor",
82
+ effects: ["files"],
83
+ config: true,
84
+ findings: true,
85
+ load: async () => (await import("./doctor-CxiwSfqH.js")).doctor
86
+ }),
87
+ leaf("completion", "Print the shell completion script for bash, zsh or fish", {
88
+ examples: ["permdock completion zsh > ~/.zfunc/_permdock", "eval \"$(permdock completion bash)\""],
89
+ docs: "completion",
90
+ effects: [],
91
+ config: false,
92
+ shellOutput: true,
93
+ load: async () => (await import("./completion-BqhRBJD8.js")).completion
94
+ })
95
+ ]
96
+ },
97
+ {
98
+ title: "Permissions",
99
+ entries: [
100
+ leaf("collect", "Scan the sources for definePermissions() and references; write the catalog and barrel", {
101
+ examples: [
102
+ "permdock collect",
103
+ "permdock collect --check",
104
+ "permdock collect --watch"
105
+ ],
106
+ docs: "collect",
107
+ effects: ["files"],
108
+ config: true,
109
+ load: async () => (await import("./collect-DloHbDVa.js")).collect
110
+ }),
111
+ leaf("catalog", "Export the catalog as catalog JSON, JSON Schema or Markdown", {
112
+ examples: ["permdock catalog --out permissions.catalog.json", "permdock catalog --kind markdown"],
113
+ docs: "catalog",
114
+ effects: ["files"],
115
+ config: true,
116
+ load: async () => (await import("./catalog-R_A__RsH.js")).catalog
117
+ }),
118
+ leaf("usage", "Report unused, ungranted and role-less permissions and conditions on undeclared fields", {
119
+ examples: ["permdock usage", "permdock usage --fail-on warning"],
120
+ docs: "usage",
121
+ effects: [],
122
+ config: true,
123
+ findings: true,
124
+ load: async () => (await import("./usage-DHtE8j4E.js")).usage
125
+ }),
126
+ leaf("diff", "Compare two policies or catalogs; exit 1 on a breaking change", {
127
+ examples: ["permdock diff main.catalog.json permissions.catalog.json", "permdock diff ./old-policy.ts ./src/policy.ts --impact"],
128
+ docs: "diff",
129
+ effects: [],
130
+ config: true,
131
+ load: async () => (await import("./diff-CxZo9pTq.js")).diff
132
+ }),
133
+ leaf("config", "Check permdock.config.ts for unknown keys, or print the effective config", {
134
+ examples: ["permdock config", "permdock config --print"],
135
+ docs: "config",
136
+ effects: [],
137
+ config: true,
138
+ findings: true,
139
+ load: async () => (await import("./config-B46rm9sc.js")).config
140
+ })
141
+ ]
142
+ },
143
+ {
144
+ title: "Database",
145
+ entries: [
146
+ group("rls", "Generate, import, verify or migrate Postgres RLS policies", "rls", [
147
+ leaf("generate", "Compile the policy into RLS policies and helpers", {
148
+ examples: ["permdock rls generate --target sql --out supabase/schemas/permdock.sql", "permdock rls generate --check"],
149
+ docs: "rls",
150
+ effects: [
151
+ "files",
152
+ "database:read",
153
+ "network"
154
+ ],
155
+ config: true,
156
+ load: async () => (await import("./rls-BA8an5Ap.js")).generate
157
+ }),
158
+ leaf("import", "Turn existing RLS policies into a generated definition", {
159
+ examples: ["permdock rls import --sql schema.sql --out src/permissions.generated.ts", "permdock rls import --db-url-stdin --out src/permissions.generated.ts"],
160
+ docs: "rls",
161
+ effects: ["files", "database:read"],
162
+ config: true,
163
+ load: async () => (await import("./rls-BA8an5Ap.js")).importPolicies
164
+ }),
165
+ leaf("verify", "Run the fixtures against the policies, or compare a live database", {
166
+ examples: [
167
+ "permdock rls verify",
168
+ "permdock rls verify --kind pgtap",
169
+ "permdock rls verify --introspect --db-url-stdin"
170
+ ],
171
+ docs: "rls",
172
+ effects: ["database:read"],
173
+ config: true,
174
+ load: async () => (await import("./rls-BA8an5Ap.js")).verify
175
+ }),
176
+ leaf("migrate", "Rewrite hand-written policies onto the generated helpers", {
177
+ examples: ["permdock rls migrate --sql supabase/migrations --dry-run", "permdock rls migrate --sql supabase/migrations"],
178
+ docs: "rls",
179
+ effects: ["rewrite", "files"],
180
+ config: true,
181
+ load: async () => (await import("./rls-BA8an5Ap.js")).migrate
182
+ })
183
+ ]),
184
+ group("supabase", "Generate the Supabase Custom Access Token Hook, or inspect its manifest", "supabase", [group("hook", "The Custom Access Token Hook", "supabase", [leaf("generate", "Compile the membership sources into the hook migration", {
185
+ examples: ["permdock supabase hook generate --out supabase/schemas/permdock_hook.sql", "permdock supabase hook generate --check"],
186
+ docs: "supabase",
187
+ effects: ["files", "database:read"],
188
+ config: true,
189
+ load: async () => (await import("./supabase-9pqI57pW.js")).hookGenerate
190
+ })]), leaf("inspect", "Print or write the hook and helper manifest", {
191
+ examples: ["permdock supabase inspect", "permdock supabase inspect --out"],
192
+ docs: "supabase",
193
+ effects: ["files"],
194
+ config: true,
195
+ load: async () => (await import("./supabase-9pqI57pW.js")).inspect
196
+ })]),
197
+ group("powersync", "Generate PowerSync Sync Streams from the policy, or verify them", "powersync", [leaf("generate", "Compile the read grants into sync-config.yaml", {
198
+ examples: ["permdock powersync generate", "permdock powersync generate --check"],
199
+ docs: "powersync",
200
+ effects: ["files"],
201
+ config: true,
202
+ load: async () => (await import("./powersync-BHfuehf3.js")).generate
203
+ }), leaf("verify", "Fail on stale streams or a stream that syncs a denied row", {
204
+ examples: ["permdock powersync verify", "permdock powersync verify --db-url-stdin"],
205
+ docs: "powersync",
206
+ effects: ["database:read"],
207
+ config: true,
208
+ load: async () => (await import("./powersync-BHfuehf3.js")).verify
209
+ })])
210
+ ]
211
+ },
212
+ {
213
+ title: "Interop",
214
+ entries: [
215
+ group("openapi", "Emit security into an OpenAPI document, or import one into a definition", "openapi", [leaf("emit", "Write security and securitySchemes into an OpenAPI document", {
216
+ examples: ["permdock openapi emit --doc openapi.json --out openapi.secured.json", "permdock openapi emit --doc openapi.json --kind overlay --out overlay.json"],
217
+ docs: "openapi",
218
+ effects: ["files"],
219
+ config: true,
220
+ load: async () => (await import("./openapi-ahr8rHu3.js")).emit
221
+ }), leaf("import", "Turn an OpenAPI document into a generated definition", {
222
+ examples: ["permdock openapi import --doc openapi.yaml --out src/permissions.generated.ts"],
223
+ docs: "openapi",
224
+ effects: ["files", "network"],
225
+ config: false,
226
+ load: async () => (await import("./openapi-ahr8rHu3.js")).importDocument
227
+ })]),
228
+ group("arazzo", "Check Arazzo workflows against the permissions", "arazzo", [leaf("check", "Resolve every Arazzo step to x-permdock-permissions", {
229
+ examples: ["permdock arazzo check --doc arazzo.json --openapi openapi.json"],
230
+ docs: "arazzo",
231
+ effects: [],
232
+ config: true,
233
+ findings: true,
234
+ load: async () => (await import("./arazzo-B6lebmiQ.js")).check
235
+ })]),
236
+ leaf("scan", "List authorization checks written without PermDock, to adopt it in an existing app", {
237
+ examples: ["permdock scan", "permdock scan --src app,lib --pattern isBeta"],
238
+ docs: "scan",
239
+ effects: [],
240
+ config: true,
241
+ findings: true,
242
+ load: async () => (await import("./scan-BOI5tJ-6.js")).scan
243
+ }),
244
+ group("casl", "Import CASL rules into a generated module", "casl", [leaf("import", "Turn CASL rules per role into a permissions and policy module", {
245
+ examples: ["permdock casl import --rules rules.json --out src/permissions.generated.ts"],
246
+ docs: "casl",
247
+ effects: ["files"],
248
+ config: false,
249
+ load: async () => (await import("./casl-64gpT-8x.js")).caslImport
250
+ })]),
251
+ group("casbin", "Import a Casbin model and policy into a generated module", "casbin", [leaf("import", "Turn a Casbin RBAC model and policy into a permissions and policy module", {
252
+ examples: ["permdock casbin import --model model.conf --policy policy.csv --out src/permissions.generated.ts"],
253
+ docs: "casbin",
254
+ effects: ["files"],
255
+ config: false,
256
+ load: async () => (await import("./casbin-Cr7RLtA3.js")).casbinImport
257
+ })])
258
+ ]
259
+ },
260
+ {
261
+ title: "Account and Cloud",
262
+ entries: [
263
+ leaf("login", "Log in to PermDock Cloud with the device flow (RFC 8628) or a loopback redirect (RFC 8252)", {
264
+ examples: ["permdock login", "permdock login --scope catalog:write"],
265
+ docs: "login",
266
+ effects: ["network", "files"],
267
+ config: false,
268
+ load: async () => (await import("./login-Dfe5RlYk.js")).login
269
+ }),
270
+ leaf("logout", "Revoke and delete the stored PermDock Cloud login", {
271
+ examples: ["permdock logout"],
272
+ docs: "login",
273
+ effects: ["network", "files"],
274
+ config: false,
275
+ load: async () => (await import("./login-Dfe5RlYk.js")).logout
276
+ }),
277
+ leaf("whoami", "Print the PermDock Cloud identity the CLI acts as", {
278
+ examples: ["permdock whoami", "permdock whoami --json"],
279
+ docs: "login",
280
+ effects: [],
281
+ config: false,
282
+ load: async () => (await import("./login-Dfe5RlYk.js")).whoami
283
+ }),
284
+ group("cloud", "Publish to or pull from a PermDock Cloud project", "cloud", [leaf("push", "Publish the catalog, policy and manifest to a Cloud project", {
285
+ examples: ["permdock cloud push --dry-run", "permdock cloud push --project prj_123"],
286
+ docs: "cloud",
287
+ effects: ["network", "cloud:write"],
288
+ config: true,
289
+ load: async () => (await import("./cloud-CIoHNevm.js")).push
290
+ }), leaf("pull", "Write a Cloud project's published catalog and manifest", {
291
+ examples: ["permdock cloud pull --project prj_123"],
292
+ docs: "cloud",
293
+ effects: ["network", "files"],
294
+ config: true,
295
+ load: async () => (await import("./cloud-CIoHNevm.js")).pull
296
+ })])
297
+ ]
298
+ },
299
+ {
300
+ title: "Upgrade",
301
+ entries: [leaf("codemod", "Apply a release's renames to files that import permdock; list call sites to edit by hand", {
302
+ examples: ["permdock codemod 0.5 --dry-run", "permdock codemod 0.5 src"],
303
+ docs: "codemod",
304
+ effects: ["rewrite"],
305
+ config: false,
306
+ load: async () => (await import("./codemod-Bmj9dWMH.js")).codemod
307
+ })]
308
+ }
309
+ ];
310
+ /** The hidden leaf shells call for dynamic completion candidates. */
311
+ const COMPLETE_LEAF = leaf("__complete", "Print completion candidates for a partial command line", {
312
+ examples: [],
313
+ docs: "completion",
314
+ effects: [],
315
+ config: false,
316
+ shellOutput: true,
317
+ hidden: true,
318
+ load: async () => (await import("./completion-BqhRBJD8.js")).complete
319
+ });
320
+ const ROOT = group("permdock", "Collect, export, diff and check the permissions a PermDock policy declares", "", [...SECTIONS.flatMap((section) => section.entries), COMPLETE_LEAF]);
321
+ /** Each leaf with its path from the root, in manifest order. */
322
+ function leaves(entry = ROOT, path = []) {
323
+ return entry.children.flatMap((child) => child.kind === "leaf" ? [{
324
+ path: [...path, child.name],
325
+ entry: child
326
+ }] : leaves(child, [...path, child.name]));
327
+ }
328
+ /**
329
+ * Walks positional tokens down the tree until a leaf. Flags may sit
330
+ * anywhere; only bare words name a child.
331
+ */
332
+ function resolve(argv) {
333
+ let node = ROOT;
334
+ const path = [];
335
+ const rest = [];
336
+ for (const [i, token] of argv.entries()) {
337
+ if (token === "--") {
338
+ rest.push(...argv.slice(i));
339
+ break;
340
+ }
341
+ if (token.startsWith("-") && token !== "-") {
342
+ rest.push(token);
343
+ continue;
344
+ }
345
+ const child = node.children.find((item) => item.name === token);
346
+ if (child === void 0) return {
347
+ kind: "group",
348
+ path,
349
+ entry: node,
350
+ unknown: token,
351
+ rest: [...rest, ...argv.slice(i + 1)]
352
+ };
353
+ path.push(child.name);
354
+ if (child.kind === "leaf") return {
355
+ kind: "leaf",
356
+ path,
357
+ entry: child,
358
+ rest: [...rest, ...argv.slice(i + 1)]
359
+ };
360
+ node = child;
361
+ }
362
+ return {
363
+ kind: "group",
364
+ path,
365
+ entry: node,
366
+ rest
367
+ };
368
+ }
369
+ //#endregion
370
+ export { resolve as a, leaves as i, ROOT as n, SECTIONS as r, DOCS_BASE as t };
@@ -0,0 +1,9 @@
1
+ //#region src/cli/manifest-json.ts
2
+ /** Where `permdock supabase inspect --out` writes the manifest by default. */
3
+ const MANIFEST_FILE = "permdock.manifest.json";
4
+ /** The bytes `permdock supabase inspect --out` and `permdock cloud pull` write. */
5
+ function formatManifestJson(manifest) {
6
+ return `${JSON.stringify(manifest, null, 2)}\n`;
7
+ }
8
+ //#endregion
9
+ export { formatManifestJson as n, MANIFEST_FILE as t };