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,256 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
3
+ import { a as describeError } from "./errors-CWTY6uih.js";
4
+ import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
5
+ import { s as cliVersion } from "./version-CEbQ5UeM.js";
6
+ import { a as formatCatalogJson } from "./catalog-doc-C9wjsfNY.js";
7
+ import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
8
+ import { t as parseSupabaseManifest } from "./manifest-C8IzW3Do.js";
9
+ import { t as parseCatalog } from "./parse-Cxq0WxrA.js";
10
+ import { t as POLICY_NOT_PUBLISHED } from "./problem-types-CJ2325SZ.js";
11
+ import { n as httpRequest, t as authFailure } from "./http-DXJ37RDA.js";
12
+ import { l as cloudUrl, n as cliRuntime, o as readAuth } from "./auth-DRLEizbL.js";
13
+ import { n as formatManifestJson } from "./manifest-json-CAGzls-C.js";
14
+ import { existsSync, readFileSync, rmSync } from "node:fs";
15
+ import { relative, resolve } from "node:path";
16
+ //#region src/cli/cloud/projects.ts
17
+ function failure(json, command, code, problem) {
18
+ const { type, ...rest } = problem;
19
+ return {
20
+ ok: false,
21
+ result: {
22
+ code,
23
+ output: json ? JSON.stringify({
24
+ type: type ?? `https://permdock.com/docs/cli/errors#${problem.code}`,
25
+ ...rest,
26
+ command,
27
+ exitCode: code
28
+ }, null, 2) : `${command}: ${problem.detail}`
29
+ }
30
+ };
31
+ }
32
+ async function readProblemType(response) {
33
+ try {
34
+ const body = await response.json();
35
+ return isRecord(body) && typeof body["type"] === "string" ? body["type"] : void 0;
36
+ } catch {
37
+ return;
38
+ }
39
+ }
40
+ async function get(input, what) {
41
+ const response = await httpRequest(input.io, {
42
+ url: `${input.issuer}${input.path}`,
43
+ service: "PermDock Cloud",
44
+ headers: {
45
+ authorization: `Bearer ${input.bearer}`,
46
+ accept: "application/json"
47
+ }
48
+ });
49
+ if (response.ok) try {
50
+ return {
51
+ ok: true,
52
+ body: await response.json()
53
+ };
54
+ } catch {
55
+ return failure(input.json, input.command, 1, {
56
+ code: "request_failed",
57
+ title: "Unreadable Cloud answer",
58
+ status: response.status,
59
+ detail: `PermDock Cloud answered ${what} with a body that is not JSON`
60
+ });
61
+ }
62
+ const type = await readProblemType(response);
63
+ if (response.status === 404 && type === "https://permdock.com/problems/policy-not-published") return failure(input.json, input.command, 1, {
64
+ code: "request_failed",
65
+ type: POLICY_NOT_PUBLISHED,
66
+ title: "Policy not published",
67
+ status: 404,
68
+ detail: "the project has no pushed catalog and policy yet; run permdock cloud push first"
69
+ });
70
+ const denied = authFailure(response, response.status === 401 ? "PermDock Cloud rejected the credential" : `the credential may not read ${what}; a PERMDOCK_CLOUD_TOKEN reads only its own environment`, [{
71
+ command: "permdock login",
72
+ when: "to log in on this machine"
73
+ }, {
74
+ command: "export PERMDOCK_CLOUD_TOKEN=<read-only key>",
75
+ when: "in CI"
76
+ }]);
77
+ if (denied !== void 0) throw denied;
78
+ const detail = response.status === 429 ? `PermDock Cloud rate-limited the request (HTTP 429); retry after ${response.headers.get("retry-after") ?? "a while"} seconds` : `PermDock Cloud answered ${what} with HTTP ${String(response.status)}`;
79
+ return failure(input.json, input.command, 1, {
80
+ code: "request_failed",
81
+ ...type === void 0 ? {} : { type },
82
+ title: "PermDock Cloud request failed",
83
+ status: response.status,
84
+ detail
85
+ });
86
+ }
87
+ function parseProjectPolicy(body) {
88
+ if (!isRecord(body) || body["v"] !== 1 || typeof body["project"] !== "string" || typeof body["version"] !== "number" || typeof body["fingerprint"] !== "string" || typeof body["permdockVersion"] !== "string" || !isRecord(body["catalog"]) || body["manifest"] !== void 0 && !isRecord(body["manifest"]) || body["policy"] !== void 0 && !isRecord(body["policy"])) return null;
89
+ return {
90
+ v: 1,
91
+ project: body["project"],
92
+ version: body["version"],
93
+ fingerprint: body["fingerprint"],
94
+ permdockVersion: body["permdockVersion"],
95
+ catalog: body["catalog"],
96
+ ...isRecord(body["manifest"]) ? { manifest: body["manifest"] } : {},
97
+ ...isRecord(body["policy"]) ? { policy: body["policy"] } : {}
98
+ };
99
+ }
100
+ async function projectPolicy(request, project) {
101
+ const fetched = await get({
102
+ ...request,
103
+ path: `/v1/projects/${encodeURIComponent(project)}/policy`
104
+ }, `project ${project}`);
105
+ if (!fetched.ok) return fetched;
106
+ const value = parseProjectPolicy(fetched.body);
107
+ return value === null ? failure(request.json, request.command, 1, {
108
+ code: "request_failed",
109
+ title: "Unreadable project policy",
110
+ detail: `PermDock Cloud sent a project policy for ${project} that is not v1`
111
+ }) : {
112
+ ok: true,
113
+ value
114
+ };
115
+ }
116
+ async function listProjects(request) {
117
+ const fetched = await get({
118
+ ...request,
119
+ path: "/v1/projects"
120
+ }, "the projects");
121
+ if (!fetched.ok) return fetched;
122
+ const items = isRecord(fetched.body) && Array.isArray(fetched.body["items"]) ? fetched.body["items"] : [];
123
+ const projects = [];
124
+ for (const item of items) if (isRecord(item) && typeof item["id"] === "string") projects.push({
125
+ id: item["id"],
126
+ ...typeof item["name"] === "string" ? { name: item["name"] } : {}
127
+ });
128
+ return {
129
+ ok: true,
130
+ value: projects
131
+ };
132
+ }
133
+ /**
134
+ * `--project`, or with `PERMDOCK_CLOUD_TOKEN` the one project the token is
135
+ * pinned to, read from `GET /v1/projects`.
136
+ */
137
+ async function resolveProject(request, flag, pinned) {
138
+ if (flag !== void 0) return {
139
+ ok: true,
140
+ value: flag
141
+ };
142
+ if (!pinned) return failure(request.json, request.command, 2, {
143
+ code: "usage",
144
+ title: "Missing project",
145
+ detail: "pass --project <id>"
146
+ });
147
+ const listed = await listProjects(request);
148
+ if (!listed.ok) return listed;
149
+ const [only, ...rest] = listed.value;
150
+ return only !== void 0 && rest.length === 0 ? {
151
+ ok: true,
152
+ value: only.id
153
+ } : failure(request.json, request.command, 2, {
154
+ code: "usage",
155
+ title: "Missing project",
156
+ detail: `PERMDOCK_CLOUD_TOKEN reads ${String(listed.value.length)} projects; pass --project <id>`
157
+ });
158
+ }
159
+ //#endregion
160
+ //#region src/cli/cloud/pull.ts
161
+ const COMMAND = "permdock cloud pull";
162
+ /**
163
+ * The project's pushed policy, read with `PERMDOCK_CLOUD_TOKEN` or the stored
164
+ * login. Shared by `cloud pull` and `rls generate --project`.
165
+ */
166
+ async function fetchProjectPolicy(input) {
167
+ const issuer = cloudUrl(input.url, input.env);
168
+ const auth = await readAuth(input.command, issuer, input.env, cliRuntime(input.io, input.env));
169
+ const request = {
170
+ issuer,
171
+ bearer: auth.bearer,
172
+ io: input.io,
173
+ json: input.json,
174
+ command: input.command
175
+ };
176
+ const project = await resolveProject(request, input.project, auth.source === "PERMDOCK_CLOUD_TOKEN");
177
+ if (!project.ok) return project;
178
+ return projectPolicy(request, project.value);
179
+ }
180
+ function snapshot(path) {
181
+ return {
182
+ path,
183
+ bytes: existsSync(path) ? readFileSync(path, "utf8") : null
184
+ };
185
+ }
186
+ function restore(files) {
187
+ for (const file of files) if (file.bytes === null) rmSync(file.path, { force: true });
188
+ else writeFileEnsuringDir(file.path, file.bytes);
189
+ }
190
+ /**
191
+ * Writes the project's catalog and manifest with the writers `collect` and
192
+ * `supabase inspect --out` use, then re-reads the catalog and requires its
193
+ * fingerprint to match what the Cloud sent; a mismatch restores both files.
194
+ */
195
+ async function runCloudPull(input) {
196
+ const fetched = await fetchProjectPolicy({
197
+ ...input,
198
+ command: COMMAND
199
+ });
200
+ if (!fetched.ok) return fetched.result;
201
+ const pulled = fetched.value;
202
+ let catalog;
203
+ try {
204
+ catalog = parseCatalog(pulled.catalog);
205
+ } catch (error) {
206
+ return {
207
+ code: 1,
208
+ output: `${COMMAND}: the Cloud sent an invalid catalog: ${describeError(error)}`
209
+ };
210
+ }
211
+ let manifestText;
212
+ if (pulled.manifest !== void 0) try {
213
+ manifestText = formatManifestJson(parseSupabaseManifest(pulled.manifest));
214
+ } catch (error) {
215
+ return {
216
+ code: 1,
217
+ output: `${COMMAND}: the Cloud sent an invalid manifest: ${describeError(error)}`
218
+ };
219
+ }
220
+ const catalogFile = catalogPath(input.config, input.cwd);
221
+ const manifestFile = resolve(input.cwd, input.manifest ?? "permdock.manifest.json");
222
+ const before = [snapshot(catalogFile), ...manifestText === void 0 ? [] : [snapshot(manifestFile)]];
223
+ writeFileEnsuringDir(catalogFile, formatCatalogJson(catalog));
224
+ if (manifestText !== void 0) writeFileEnsuringDir(manifestFile, manifestText);
225
+ let written;
226
+ try {
227
+ written = catalogFingerprint(parseCatalog(readFileSync(catalogFile, "utf8")));
228
+ } catch {
229
+ written = "";
230
+ }
231
+ if (written !== pulled.fingerprint || catalog.fingerprint !== void 0 && catalog.fingerprint !== pulled.fingerprint) {
232
+ restore(before);
233
+ return {
234
+ code: 1,
235
+ output: `${COMMAND}: catalog fingerprint mismatch (Cloud ${pulled.fingerprint}, catalog ${catalog.fingerprint ?? "none"}, written ${written || "unreadable"}); restored the previous files`
236
+ };
237
+ }
238
+ const local = cliVersion();
239
+ if (pulled.permdockVersion !== local) input.io.stderr(`${COMMAND}: pushed by permdock@${pulled.permdockVersion}, pulled by permdock@${local}; regenerate the manifest locally if its shape changed`);
240
+ if (pulled.manifest === void 0) input.io.stderr(`${COMMAND}: the push carried no manifest; wrote the catalog only`);
241
+ const catalogRel = relative(input.cwd, catalogFile);
242
+ const manifestRel = manifestText === void 0 ? null : relative(input.cwd, manifestFile);
243
+ return {
244
+ code: 0,
245
+ output: input.json ? JSON.stringify({
246
+ project: pulled.project,
247
+ version: pulled.version,
248
+ fingerprint: pulled.fingerprint,
249
+ permdockVersion: pulled.permdockVersion,
250
+ catalog: catalogRel,
251
+ manifest: manifestRel
252
+ }) : `pulled ${pulled.project} version ${String(pulled.version)}: wrote ${catalogRel}${manifestRel === null ? "" : ` and ${manifestRel}`} (${pulled.fingerprint})`
253
+ };
254
+ }
255
+ //#endregion
256
+ export { runCloudPull as n, fetchProjectPolicy as t };
@@ -0,0 +1 @@
1
+ export { n as runCloudPull } from "./pull-BgIfno6w.js";
@@ -0,0 +1,116 @@
1
+ import { t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
2
+ import { a as describeError } from "./errors-CWTY6uih.js";
3
+ import { s as cliVersion } from "./version-CEbQ5UeM.js";
4
+ import { i as loadConfiguredPolicy } from "./load-DFS_ry0W.js";
5
+ import { t as parseSupabaseManifest } from "./manifest-C8IzW3Do.js";
6
+ import { t as parseCatalog } from "./parse-Cxq0WxrA.js";
7
+ import { r as pushedPolicy } from "./pushed-policy-DobP7AHI.js";
8
+ import { n as runCatalog } from "./catalog-BECMPrwc.js";
9
+ import { n as httpRequest, t as authFailure } from "./http-DXJ37RDA.js";
10
+ import { a as pushAuth, l as cloudUrl, n as cliRuntime, u as firstNonEmpty } from "./auth-DRLEizbL.js";
11
+ import "./manifest-json-CAGzls-C.js";
12
+ import { existsSync, readFileSync } from "node:fs";
13
+ import { resolve } from "node:path";
14
+ //#region src/cli/cloud/push.ts
15
+ /** `--manifest`, else `permdock.manifest.json` when it exists; a file that does not parse is an error. */
16
+ function readManifest(cwd, flag) {
17
+ const path = resolve(cwd, flag ?? "permdock.manifest.json");
18
+ if (!existsSync(path)) return flag === void 0 ? {
19
+ ok: true,
20
+ manifest: void 0
21
+ } : {
22
+ ok: false,
23
+ output: `permdock cloud push: ${flag} does not exist`
24
+ };
25
+ try {
26
+ return {
27
+ ok: true,
28
+ manifest: parseSupabaseManifest(readFileSync(path, "utf8"))
29
+ };
30
+ } catch (error) {
31
+ return {
32
+ ok: false,
33
+ output: `permdock cloud push: ${flag ?? "permdock.manifest.json"} is not a valid manifest: ${describeError(error)}`
34
+ };
35
+ }
36
+ }
37
+ async function runCloud(input) {
38
+ const manifest = readManifest(input.cwd, input.manifest);
39
+ if (!manifest.ok) return {
40
+ code: 2,
41
+ output: manifest.output
42
+ };
43
+ const built = await runCatalog({
44
+ cwd: input.cwd,
45
+ config: input.config,
46
+ format: "json",
47
+ from: void 0,
48
+ include: [],
49
+ now: input.now,
50
+ io: input.io
51
+ });
52
+ if (built.code !== 0) return {
53
+ code: built.code,
54
+ output: built.output
55
+ };
56
+ const catalog = parseCatalog(built.output);
57
+ const fingerprint = catalogFingerprint(catalog);
58
+ const loaded = await loadConfiguredPolicy(input.cwd, input.config.policy);
59
+ const policy = loaded === void 0 ? void 0 : pushedPolicy(loaded);
60
+ const hostable = catalog.permissions.filter((permission) => permission.hostable === true).map((permission) => permission.key);
61
+ const summary = {
62
+ fingerprint,
63
+ permissions: catalog.permissions.length,
64
+ hostable,
65
+ roles: (catalog.roles ?? []).length,
66
+ plans: (catalog.plans ?? []).length,
67
+ grants: policy?.grants.length ?? 0,
68
+ manifest: manifest.manifest !== void 0
69
+ };
70
+ const url = cloudUrl(input.url, input.env);
71
+ const environment = firstNonEmpty(input.project, input.env["PERMDOCK_CLOUD_ENV"], input.env["VERCEL_ENV"], "production");
72
+ const describe = (verb) => input.json ? JSON.stringify({
73
+ ...summary,
74
+ environment,
75
+ status: verb
76
+ }) : `${verb} catalog ${fingerprint} (${String(summary.permissions)} permissions, ${String(hostable.length)} hostable${summary.manifest ? ", with manifest" : ""}) to ${environment}`;
77
+ if (input.dryRun) return {
78
+ code: 0,
79
+ output: describe("would push")
80
+ };
81
+ const auth = await pushAuth(url, input.env, cliRuntime(input.io, input.env));
82
+ const response = await httpRequest(input.io, {
83
+ url: `${url}/v1/environments/${encodeURIComponent(environment)}/catalog`,
84
+ method: "POST",
85
+ service: "PermDock Cloud",
86
+ headers: {
87
+ authorization: `Bearer ${auth.bearer}`,
88
+ "content-type": "application/json"
89
+ },
90
+ body: JSON.stringify({
91
+ fingerprint,
92
+ catalog,
93
+ ...policy === void 0 ? {} : { policy },
94
+ ...manifest.manifest === void 0 ? {} : { manifest: manifest.manifest },
95
+ permdockVersion: cliVersion()
96
+ })
97
+ });
98
+ const denied = authFailure(response, `PermDock Cloud rejected the ${auth.source === "login" ? "login" : "PERMDOCK_CLOUD_KEY"} for cloud push`, [{
99
+ command: "permdock login --scope catalog:write",
100
+ when: "to log in on this machine"
101
+ }, {
102
+ command: "export PERMDOCK_CLOUD_KEY=<write key>",
103
+ when: "in CI"
104
+ }]);
105
+ if (denied !== void 0) throw denied;
106
+ if (!response.ok) return {
107
+ code: 1,
108
+ output: `PermDock Cloud rejected the catalog: HTTP ${String(response.status)}`
109
+ };
110
+ return {
111
+ code: 0,
112
+ output: describe("pushed")
113
+ };
114
+ }
115
+ //#endregion
116
+ export { runCloud };
@@ -0,0 +1,57 @@
1
+ import { Gt as SnapshotScope, H as WireValidity, T as Policy, _ as GrantLimit, a as ApprovalRequirement, bn as Grantee, jn as AppObligation, lr as Condition, u as BreakGlassSpec, v as GrantMeta } from "./policy-types-DzwivBgR.js";
2
+ import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
3
+ //#region src/catalog/pushed-policy.d.ts
4
+ /**
5
+ * One code grant as `permdock cloud push` sends it. `portable: false` marks a
6
+ * grant a snapshot cannot evaluate; `closure: true` marks one whose condition
7
+ * is code, which `policyFromCatalog` turns into an allow that never matches
8
+ * and a deny that always applies.
9
+ */
10
+ type PushedGrant = {
11
+ readonly permission: string;
12
+ readonly effect: "allow" | "deny";
13
+ readonly role: string | null;
14
+ readonly to: Grantee | readonly Grantee[];
15
+ readonly where?: Condition;
16
+ readonly check?: Condition;
17
+ readonly approval?: "human" | ApprovalRequirement;
18
+ /** A scope name or one resource; absent for a global grant. */
19
+ readonly scope?: string | {
20
+ readonly resource: string;
21
+ };
22
+ readonly portable?: false;
23
+ readonly closure?: true;
24
+ readonly fields?: readonly string[];
25
+ readonly limit?: GrantLimit;
26
+ readonly validity?: WireValidity;
27
+ readonly name?: string;
28
+ readonly purpose?: readonly string[];
29
+ readonly requires?: readonly string[];
30
+ /** The membership kind (`via`) the grant applies under. */
31
+ readonly viaOnly?: string;
32
+ readonly breakGlass?: BreakGlassSpec;
33
+ readonly obligations?: readonly AppObligation[];
34
+ readonly meta?: GrantMeta;
35
+ };
36
+ /** PushedPolicy v1: the `policy` of a `permdock cloud push` body, validated by `schemas/pushed-policy-v1.json`. */
37
+ type PushedPolicy = {
38
+ readonly v: 1;
39
+ /** The code policy's `fingerprint`. */
40
+ readonly fingerprint: string;
41
+ /** As a snapshot carries them; absent without declared scopes. */
42
+ readonly scopes?: readonly SnapshotScope[];
43
+ readonly grants: readonly PushedGrant[];
44
+ };
45
+ /** `schemas/pushed-policy-v1.json`; a test keeps the two equal. */
46
+ declare const PUSHED_POLICY_SCHEMA: JsonSchemaNode;
47
+ /** The code policy as `permdock cloud push` sends it; hosted grants are left out. */
48
+ declare function pushedPolicy(policy: Policy): PushedPolicy;
49
+ /**
50
+ * Validates a pushed policy (parsed, or the JSON text) against
51
+ * `schemas/pushed-policy-v1.json` and returns a deep-frozen copy. Throws
52
+ * `PermDockValidationError`, also for a `__proto__`, `constructor` or
53
+ * `prototype` key anywhere in it.
54
+ */
55
+ declare function parsePushedPolicy(json: unknown): PushedPolicy;
56
+ //#endregion
57
+ export { pushedPolicy as a, parsePushedPolicy as i, PushedGrant as n, PushedPolicy as r, PUSHED_POLICY_SCHEMA as t };
@@ -0,0 +1,238 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
4
+ import { n as RFC3339_PATTERN } from "./time-DkWjdL98.js";
5
+ import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
6
+ import { n as snapshotScopes } from "./instance-snapshot-Cxq4ygFc.js";
7
+ import { n as copyJson, r as forbiddenKeyPath, t as checkSchema } from "./json-schema-B-vAwlde.js";
8
+ //#region src/catalog/pushed-policy.ts
9
+ const strings = {
10
+ type: "array",
11
+ items: { type: "string" }
12
+ };
13
+ const instant = {
14
+ type: "string",
15
+ format: "date-time",
16
+ pattern: RFC3339_PATTERN
17
+ };
18
+ const grantee = {
19
+ type: "object",
20
+ required: ["kind"]
21
+ };
22
+ const condition = {
23
+ type: "object",
24
+ required: ["op"]
25
+ };
26
+ /** `schemas/pushed-policy-v1.json`; a test keeps the two equal. */
27
+ const PUSHED_POLICY_SCHEMA = freezeDeep({
28
+ $schema: "https://json-schema.org/draft/2020-12/schema",
29
+ $id: "https://permdock.com/schemas/pushed-policy-v1.json",
30
+ title: "PushedPolicy v1",
31
+ type: "object",
32
+ required: [
33
+ "v",
34
+ "fingerprint",
35
+ "grants"
36
+ ],
37
+ additionalProperties: false,
38
+ properties: {
39
+ v: { const: 1 },
40
+ fingerprint: {
41
+ type: "string",
42
+ minLength: 1
43
+ },
44
+ scopes: {
45
+ type: "array",
46
+ items: {
47
+ type: "object",
48
+ required: ["name", "key"],
49
+ properties: {
50
+ name: {
51
+ type: "string",
52
+ pattern: "^[a-z][a-z0-9_]*$"
53
+ },
54
+ key: { type: "string" },
55
+ within: { type: "string" },
56
+ resources: strings,
57
+ fields: {
58
+ type: "object",
59
+ additionalProperties: { type: "string" }
60
+ }
61
+ }
62
+ }
63
+ },
64
+ grants: {
65
+ type: "array",
66
+ items: {
67
+ type: "object",
68
+ required: [
69
+ "permission",
70
+ "effect",
71
+ "role",
72
+ "to"
73
+ ],
74
+ additionalProperties: false,
75
+ properties: {
76
+ permission: {
77
+ type: "string",
78
+ minLength: 1
79
+ },
80
+ effect: { enum: ["allow", "deny"] },
81
+ role: { type: ["string", "null"] },
82
+ to: { oneOf: [grantee, {
83
+ type: "array",
84
+ items: grantee
85
+ }] },
86
+ where: condition,
87
+ check: condition,
88
+ approval: { oneOf: [{ const: "human" }, { type: "object" }] },
89
+ scope: { oneOf: [{ type: "string" }, {
90
+ type: "object",
91
+ required: ["resource"],
92
+ additionalProperties: false,
93
+ properties: { resource: { type: "string" } }
94
+ }] },
95
+ portable: { const: false },
96
+ closure: { const: true },
97
+ fields: strings,
98
+ limit: {
99
+ type: "object",
100
+ required: ["count", "per"],
101
+ properties: {
102
+ count: {
103
+ type: "integer",
104
+ minimum: 0
105
+ },
106
+ per: {
107
+ type: "integer",
108
+ minimum: 1
109
+ },
110
+ mode: { enum: ["hard", "soft"] },
111
+ alertAt: { type: "number" }
112
+ }
113
+ },
114
+ validity: {
115
+ type: "object",
116
+ additionalProperties: false,
117
+ properties: {
118
+ from: instant,
119
+ until: instant
120
+ }
121
+ },
122
+ name: { type: "string" },
123
+ purpose: strings,
124
+ requires: strings,
125
+ viaOnly: { type: "string" },
126
+ breakGlass: {
127
+ type: "object",
128
+ required: [
129
+ "overrides",
130
+ "reason",
131
+ "obligations"
132
+ ],
133
+ properties: {
134
+ overrides: strings,
135
+ purpose: strings,
136
+ reason: { type: "boolean" },
137
+ assurance: { type: "object" },
138
+ maxDuration: {
139
+ type: "integer",
140
+ minimum: 1
141
+ },
142
+ obligations: {
143
+ type: "array",
144
+ items: { enum: ["notify", "review"] }
145
+ }
146
+ }
147
+ },
148
+ obligations: {
149
+ type: "array",
150
+ items: {
151
+ type: "object",
152
+ required: ["kind", "name"],
153
+ properties: {
154
+ kind: { const: "app" },
155
+ name: { type: "string" }
156
+ }
157
+ }
158
+ },
159
+ meta: { type: "object" }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ });
165
+ function pushedGrant(grant) {
166
+ return compact({
167
+ permission: grant.permission.key,
168
+ effect: grant.effect,
169
+ role: grant.role,
170
+ to: grant.to,
171
+ where: grant.where,
172
+ check: grant.check,
173
+ approval: grant.approval,
174
+ scope: grant.scope === "global" ? void 0 : typeof grant.scope === "string" ? grant.scope : { resource: grant.scope.resource },
175
+ portable: grant.portable ? void 0 : false,
176
+ closure: grant.closure === void 0 ? void 0 : true,
177
+ fields: grant.fields,
178
+ limit: grant.limit,
179
+ validity: wireValidity(grant.validity),
180
+ name: grant.name,
181
+ purpose: grant.purpose,
182
+ requires: grant.requires,
183
+ viaOnly: grant.viaOnly,
184
+ breakGlass: grant.breakGlass,
185
+ obligations: grant.obligations,
186
+ meta: grant.meta === void 0 || Object.keys(grant.meta).length === 0 ? void 0 : grant.meta
187
+ });
188
+ }
189
+ /** The code policy as `permdock cloud push` sends it; hosted grants are left out. */
190
+ function pushedPolicy(policy) {
191
+ const scopes = snapshotScopes(policy);
192
+ return {
193
+ v: 1,
194
+ fingerprint: policy.fingerprint,
195
+ ...scopes === void 0 ? {} : { scopes },
196
+ grants: policy.grants.filter((grant) => grant.hosted === void 0).map(pushedGrant)
197
+ };
198
+ }
199
+ /**
200
+ * Validates a pushed policy (parsed, or the JSON text) against
201
+ * `schemas/pushed-policy-v1.json` and returns a deep-frozen copy. Throws
202
+ * `PermDockValidationError`, also for a `__proto__`, `constructor` or
203
+ * `prototype` key anywhere in it.
204
+ */
205
+ function parsePushedPolicy(json) {
206
+ const issues = [];
207
+ let input = json;
208
+ if (typeof json === "string") try {
209
+ input = JSON.parse(json);
210
+ } catch {
211
+ issues.push({
212
+ message: "Expected JSON text",
213
+ path: []
214
+ });
215
+ }
216
+ const copy = issues.length === 0 ? copyJson(input, [], issues, /* @__PURE__ */ new Set()) : void 0;
217
+ if (issues.length === 0) checkSchema(PUSHED_POLICY_SCHEMA, copy, [], issues);
218
+ const unsafe = issues.length === 0 ? forbiddenKeyPath(copy) : void 0;
219
+ if (unsafe !== void 0) issues.push({
220
+ message: "Unsafe key",
221
+ path: [...unsafe]
222
+ });
223
+ const [first] = issues;
224
+ if (first !== void 0) {
225
+ const where = first.path === void 0 || first.path.length === 0 ? "" : ` at ${first.path.map(String).join(".")}`;
226
+ throw new PermDockValidationError({
227
+ code: "invalid-data",
228
+ permission: "",
229
+ resource: "",
230
+ boundary: "pushed-policy",
231
+ issues,
232
+ message: `PermDock: invalid pushed policy${where}: ${first.message}`
233
+ });
234
+ }
235
+ return freezeDeep(copy);
236
+ }
237
+ //#endregion
238
+ export { parsePushedPolicy as n, pushedPolicy as r, PUSHED_POLICY_SCHEMA as t };
@@ -1,8 +1,8 @@
1
- import { n as requiredPlans } from "../problem-details-DX075l9V.js";
2
- import { i as describe } from "../describe-DMYiCjJV.js";
3
- import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
4
- import { a as FilterResult, c as SubjectView, i as ClientStatus, l as TenantView, n as ApprovalState, o as PermissionSet, r as ClientPermDock, s as PermissionState, t as ApprovalHandle } from "../types-CKNSyIf_.js";
5
- import { n as ProtectedProps, t as PermDockProviderProps } from "../types-BnIEz1sU.js";
6
- import { a as useFilter, c as usePermission, d as useSubject, f as useTenant, i as useAssignableRoles, l as usePermissions, n as useApproval, o as useMemberships, r as useAssignablePermissions, s as usePermDock, t as Protected, u as useRoles } from "../protected-BdnIEFkY.js";
7
- import { t as PermDockProvider } from "../provider-DZY281jO.js";
8
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, PermDockProvider, type PermDockProviderProps, type PermissionSet, type PermissionState, Protected, type ProtectedProps, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useFilter, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
1
+ import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
2
+ import { i as describe } from "../describe-BZUsixiL.js";
3
+ import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
4
+ import { a as FilterResult, c as PermissionSet, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, o as GateMode, p as TenantView, r as ClientPermDock, s as GateView, t as ApprovalHandle } from "../types-BNORmDM8.js";
5
+ import { n as PermDockProviderProps, r as ProtectedProps, t as PermDockDefaults } from "../types-tIgIeIKJ.js";
6
+ import { a as useDescribe, c as useMemberships, d as usePermissions, f as useRoles, i as useAssignableRoles, l as usePermDock, m as useTenant, n as useApproval, o as useFilter, p as useSubject, r as useAssignablePermissions, s as useGate, t as Protected, u as usePermission } from "../protected-DEPHc2xV.js";
7
+ import { t as PermDockProvider } from "../provider-DMVt6yYn.js";
8
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type GateMode, type GateView, type PermDockDefaults, PermDockProvider, type PermDockProviderProps, type PermissionSet, type PermissionState, Protected, type ProtectedProps, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };