void 0.21.9 → 0.23.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 (293) hide show
  1. package/README.md +5 -1
  2. package/dist/{account-cmd-DZZGK80W.mjs → account-cmd-C84Ee8cO.mjs} +5 -5
  3. package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
  4. package/dist/application-routing-B7QEjqSR.mjs +27 -0
  5. package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
  6. package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
  7. package/dist/{auth-link-B_CeugBw.mjs → auth-link-CioEg6uY.mjs} +5 -5
  8. package/dist/{auth-router-BgEFRuvZ.mjs → auth-router-BsR981d4.mjs} +5 -5
  9. package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
  10. package/dist/{build-cmd-Dpt0jd-x.mjs → build-cmd-LzvNJORH.mjs} +19 -7
  11. package/dist/{cache-7_UeZdTk.mjs → cache-C4MvnrMH.mjs} +4 -4
  12. package/dist/{cancel-deploy-D23R1RXT.mjs → cancel-deploy-abUxpP2n.mjs} +4 -4
  13. package/dist/{cf-build-output-CGT03qCD.mjs → cf-build-output-BPqOT964.mjs} +141 -63
  14. package/dist/cf-build-output-_0HNWysu.mjs +2 -0
  15. package/dist/cli/cli.mjs +114 -460
  16. package/dist/cli/cloudflare-operation-process.mjs +1103 -0
  17. package/dist/cli/env-schema-probe.d.mts +2 -1
  18. package/dist/cli/env-schema-probe.mjs +3 -3
  19. package/dist/client-Cu7jWiF1.mjs +2 -0
  20. package/dist/{client-QTl6ko_D.mjs → client-RV8NVeB8.mjs} +165 -21
  21. package/dist/{cloudflare-auth-C4_GPZr0.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -43
  22. package/dist/{cloudflare-cmd-bSmZ1d5L.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +9 -10
  23. package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
  24. package/dist/{cloudflare-connect-jAwacxxP.mjs → cloudflare-connect-B8uPZ4nx.mjs} +4 -4
  25. package/dist/{cloudflare-operations-BipGMJ5O.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
  26. package/dist/{cloudflare-operations-sMZXpk_S.mjs → cloudflare-operations-fxHb-byx.mjs} +118 -203
  27. package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
  28. package/dist/{config-CF69HgXc.d.mts → config-BMHb8RCj.d.mts} +2 -2
  29. package/dist/{config-CafTW6Cz.mjs → config-Br_JZD6u.mjs} +2 -7
  30. package/dist/config-C_XRIPx2.mjs +89 -0
  31. package/dist/{config-s7Xj7tPb.mjs → config-CyQ-wVd7.mjs} +1 -1
  32. package/dist/config-entry.d.mts +1 -1
  33. package/dist/{config-write-BSduPMY8.mjs → config-write-B1f88wJA.mjs} +1 -1
  34. package/dist/{connect-BsUSRzln.mjs → connect-Bd4kJd9U.mjs} +6 -6
  35. package/dist/{create-project-BniEV0OW.mjs → create-project-Boczwj5r.mjs} +1 -1
  36. package/dist/{create-project-DBfFSZKY.mjs → create-project-bMf6ffLZ.mjs} +9 -5
  37. package/dist/{db-hRrvZaq_.mjs → db-8uG64XLl.mjs} +26 -26
  38. package/dist/{delete-D6dZ9B6B.mjs → delete-NvbiyeJf.mjs} +4 -4
  39. package/dist/{deploy-WaAQez1O.mjs → deploy-DzAIwqNU.mjs} +944 -607
  40. package/dist/{deploy-DDz7c8LK.mjs → deploy-bjXdFCtn.mjs} +1 -1
  41. package/dist/{dist-BR1quN_w.mjs → dist-AoCzRTJE.mjs} +226 -60
  42. package/dist/{dist-C5fND3R0.mjs → dist-BuDuKZJv.mjs} +1 -1
  43. package/dist/{dist-Dn6nn2IU.mjs → dist-CTBk70IR.mjs} +42 -42
  44. package/dist/{domain-Dmhvb2oU.mjs → domain-y5Tvydvo.mjs} +5 -5
  45. package/dist/{email-DFi-s2t4.mjs → email-B3umsW75.mjs} +15 -30
  46. package/dist/{env-Csi-tMbT.mjs → env-BS6qYHDb.mjs} +6 -6
  47. package/dist/{env-public-D_6u46fX.d.mts → env-public-BX_r8HR6.d.mts} +2 -1
  48. package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
  49. package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
  50. package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
  51. package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
  52. package/dist/{gen-Dz3X1Qab.mjs → gen-B580--vC.mjs} +5 -5
  53. package/dist/gen-BVaUUumi.mjs +2 -0
  54. package/dist/{github-cmd-BED3_9JD.mjs → github-cmd-v45BdfKX.mjs} +6 -8
  55. package/dist/{handler-BXJTXd02.d.mts → handler-CZ4nAylQ.d.mts} +2 -1
  56. package/dist/{headers-BOg_velo.mjs → headers-DWi2IXWx.mjs} +1 -1
  57. package/dist/help-DofyZuY7.mjs +2 -0
  58. package/dist/{help-DC7gdz7L.mjs → help-daGKjXGk.mjs} +268 -666
  59. package/dist/index.d.mts +1 -1
  60. package/dist/index.mjs +305 -1490
  61. package/dist/info-B97bTX9N.mjs +113 -0
  62. package/dist/{init-WO0JlPx8.mjs → init-Bvy7zrBo.mjs} +51 -20
  63. package/dist/limits-Bq5LG8Id.d.mts +27 -0
  64. package/dist/limits-Cjuk2VPm.mjs +68 -0
  65. package/dist/{link-CsHOinF7.mjs → link-CDqqCjFl.mjs} +5 -5
  66. package/dist/{list-CDb-4bZ1.mjs → list-CZj0dzKY.mjs} +5 -5
  67. package/dist/{live-CKiJilLr.d.mts → live-Chw1eIMv.d.mts} +1 -1
  68. package/dist/{local-d1-CC8sKFGu.mjs → local-d1-2CMnpuW_.mjs} +2 -2
  69. package/dist/login-DYt_An22.mjs +2 -0
  70. package/dist/{login-DvqXsfGs.mjs → login-UZKFM_u7.mjs} +5 -5
  71. package/dist/{logs-BdfiOezj.mjs → logs-CUZ6t9t3.mjs} +5 -5
  72. package/dist/migrate-8_2u55MD.mjs +2 -0
  73. package/dist/{migrate-B8KuoYsO.mjs → migrate-DHul7PRV.mjs} +5 -4
  74. package/dist/{node-BM43oz4G.mjs → node-BkyRWRx8.mjs} +2 -2
  75. package/dist/operator-args-CLgKGlwU.mjs +690 -0
  76. package/dist/{operator-cmd-03819ATr.mjs → operator-cmd-DBA6dl0m.mjs} +69 -23
  77. package/dist/output-Dm_A4Tbv.mjs +81 -0
  78. package/dist/pages/client.d.mts +34 -2
  79. package/dist/pages/client.mjs +59 -3
  80. package/dist/pages/index.d.mts +1 -1
  81. package/dist/pages/index.mjs +3 -3
  82. package/dist/pages/islands-plugin.d.mts +16 -6
  83. package/dist/pages/islands-plugin.mjs +2 -2
  84. package/dist/pages/protocol.d.mts +2 -2
  85. package/dist/pages/protocol.mjs +2 -308
  86. package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
  87. package/dist/{output-CCH48AMM.mjs → picocolors-BTps1_gs.mjs} +2 -76
  88. package/dist/plan-D1Q5rf-r.mjs +2 -0
  89. package/dist/plan-NPpwZ_kc.mjs +58 -0
  90. package/dist/platform-args-BJdRtlLq.mjs +506 -0
  91. package/dist/platform-args-D3RXyR6h.mjs +2 -0
  92. package/dist/{platform-auth-config-z92h63q5.mjs → platform-auth-config-B56E9YP1.mjs} +4 -4
  93. package/dist/{platform-auth-protection-DeE3yr2R.mjs → platform-auth-protection-BDWO_aER.mjs} +3 -3
  94. package/dist/{platform-auth-recovery-o_340Ixx.mjs → platform-auth-recovery-1gg4CSRe.mjs} +4 -4
  95. package/dist/{platform-cmd-C4ZV3Vpy.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
  96. package/dist/{platform-cmd-DNl8WosH.mjs → platform-cmd-DMcQStSc.mjs} +26 -5
  97. package/dist/{platform-domain-CU1JtJkW.mjs → platform-domain-BNkcz0OB.mjs} +36 -9
  98. package/dist/{platform-lifecycle-Bc047IeT.mjs → platform-lifecycle-9OyBALhH.mjs} +850 -276
  99. package/dist/{platform-lifecycle-Bs2qx1E3.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
  100. package/dist/{platform-management-CVpGI9Y5.mjs → platform-management-CjwLVQwN.mjs} +59 -11
  101. package/dist/{platform-management-C8tt6D8h.mjs → platform-management-CnyTdcWX.mjs} +1 -1
  102. package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
  103. package/dist/{platform-recovery-dvUaptLr.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
  104. package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
  105. package/dist/{prepare-DyZ-Yok5.mjs → prepare-B5Mkic5u.mjs} +3 -3
  106. package/dist/{prepare-C3kt3Rst.mjs → prepare-DOsL0CC9.mjs} +4 -20
  107. package/dist/prepare-cgvDMtSb.mjs +2 -0
  108. package/dist/{project-cmd-B44I8J_W.mjs → project-cmd-CNzrqvBv.mjs} +30 -16
  109. package/dist/{project-team-BkbYIsXN.mjs → project-team-DQOWPfQT.mjs} +4 -4
  110. package/dist/{project-token-C8xEEQnB.mjs → project-token-CTDYU0Cc.mjs} +4 -4
  111. package/dist/project-zero-trust-BNAkW-_0.mjs +63 -0
  112. package/dist/{protocol-ZH3jP4a7.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
  113. package/dist/protocol-U7bfjHmA.mjs +331 -0
  114. package/dist/{provision-DNtrtaVD.mjs → provision-C4ORE7G7.mjs} +1 -1
  115. package/dist/{provision-BhreDAOS.mjs → provision-CJFgTZY8.mjs} +111 -215
  116. package/dist/{requests-DFyhBMaf.mjs → requests-MhxYnau8.mjs} +4 -4
  117. package/dist/resource-name-C7LVpcRm.mjs +11 -0
  118. package/dist/{rollback-DHHxXZiS.mjs → rollback-CJ6iSDoU.mjs} +5 -5
  119. package/dist/route-url-CG7U-cRN.mjs +15 -0
  120. package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
  121. package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
  122. package/dist/runtime/ai.d.mts +12 -8
  123. package/dist/runtime/ai.mjs +84 -17
  124. package/dist/runtime/better-auth-mysql.mjs +1 -1
  125. package/dist/runtime/better-auth-pg.mjs +1 -1
  126. package/dist/runtime/better-auth.mjs +1 -1
  127. package/dist/runtime/client-react.mjs +2 -2
  128. package/dist/runtime/client-solid.mjs +2 -2
  129. package/dist/runtime/client-svelte.mjs +2 -2
  130. package/dist/runtime/client-vue.mjs +2 -2
  131. package/dist/runtime/client.mjs +2 -2
  132. package/dist/runtime/durable.d.mts +3 -1
  133. package/dist/runtime/durable.mjs +4 -1
  134. package/dist/runtime/email/testing.mjs +1 -1
  135. package/dist/runtime/env-public.d.mts +1 -1
  136. package/dist/runtime/fetch-stream.mjs +1 -1
  137. package/dist/runtime/fetch.mjs +1 -1
  138. package/dist/runtime/handler.d.mts +1 -1
  139. package/dist/runtime/kv.mjs +0 -1
  140. package/dist/runtime/limits.d.mts +2 -0
  141. package/dist/runtime/limits.mjs +2 -0
  142. package/dist/runtime/live-client.d.mts +1 -1
  143. package/dist/runtime/live-server.mjs +25 -16
  144. package/dist/runtime/live.d.mts +1 -1
  145. package/dist/runtime/migration-handler.mjs +62 -42
  146. package/dist/runtime/route-url.d.mts +4 -0
  147. package/dist/runtime/route-url.mjs +2 -0
  148. package/dist/runtime/routing.d.mts +180 -0
  149. package/dist/runtime/routing.mjs +1082 -0
  150. package/dist/runtime/sandbox-container.d.mts +3 -0
  151. package/dist/runtime/sandbox-container.mjs +2 -0
  152. package/dist/runtime/sandbox.d.mts +4 -32
  153. package/dist/runtime/sandbox.mjs +151 -75
  154. package/dist/runtime/sse.mjs +1 -1
  155. package/dist/runtime/validator.d.mts +1 -1
  156. package/dist/runtime/ws-server.d.mts +4 -2
  157. package/dist/runtime/ws-server.mjs +27 -2
  158. package/dist/runtime/ws.d.mts +2 -2
  159. package/dist/runtime/ws.mjs +8 -6
  160. package/dist/sandbox-XZAqzFlG.d.mts +52 -0
  161. package/dist/sandbox-container-Bo0eiFKz.d.mts +73 -0
  162. package/dist/sandbox-container-C6ItmVuN.mjs +281 -0
  163. package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
  164. package/dist/{secret-DN9sSNiV.mjs → secret-Dli5fP0B.mjs} +6 -6
  165. package/dist/{skills-O6FUaizK.mjs → skills-D1II1Juz.mjs} +1 -1
  166. package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
  167. package/dist/{subcommand-prompt-BuGYkAkC.mjs → subcommand-prompt-CY1C4fvl.mjs} +2 -2
  168. package/dist/validate-Dq_L3s0S.mjs +2 -0
  169. package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
  170. package/dist/{wrangler-BymcxrRa.mjs → wrangler-7K-bW_DL.mjs} +14 -235
  171. package/dist/{ws-BwcqizuH.d.mts → ws-CL1w7GXU.d.mts} +13 -2
  172. package/package.json +48 -33
  173. package/sandbox.Dockerfile +4 -0
  174. package/schema.json +10 -22
  175. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
  176. package/skills/void/SKILL.md +50 -133
  177. package/skills/void/docs/guide/ai.md +94 -84
  178. package/skills/void/docs/guide/app-types.md +3 -32
  179. package/skills/void/docs/guide/auth.md +12 -116
  180. package/skills/void/docs/guide/database/d1.md +9 -54
  181. package/skills/void/docs/guide/database/mysql.md +1 -1
  182. package/skills/void/docs/guide/database/postgresql.md +5 -26
  183. package/skills/void/docs/guide/database.md +23 -75
  184. package/skills/void/docs/guide/deployment.md +27 -113
  185. package/skills/void/docs/guide/durable-state.md +43 -18
  186. package/skills/void/docs/guide/edge/headers.md +3 -47
  187. package/skills/void/docs/guide/edge/prerendering.md +5 -20
  188. package/skills/void/docs/guide/edge/redirects.md +11 -64
  189. package/skills/void/docs/guide/edge/revalidation.md +6 -19
  190. package/skills/void/docs/guide/edge/rewrites.md +56 -284
  191. package/skills/void/docs/guide/edge/static-assets.md +23 -72
  192. package/skills/void/docs/guide/email/domains.md +112 -0
  193. package/skills/void/docs/guide/email/receiving.md +139 -0
  194. package/skills/void/docs/guide/email/sending.md +231 -0
  195. package/skills/void/docs/guide/email.md +13 -619
  196. package/skills/void/docs/guide/env-migration.md +11 -11
  197. package/skills/void/docs/guide/env-vars.md +9 -29
  198. package/skills/void/docs/guide/index.md +0 -15
  199. package/skills/void/docs/guide/jobs.md +3 -18
  200. package/skills/void/docs/guide/kv.md +5 -11
  201. package/skills/void/docs/guide/live.md +5 -56
  202. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
  203. package/skills/void/docs/guide/pages-routing/head.md +10 -10
  204. package/skills/void/docs/guide/pages-routing/islands.md +6 -36
  205. package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
  206. package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
  207. package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
  208. package/skills/void/docs/guide/pages-routing/overview.md +7 -17
  209. package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
  210. package/skills/void/docs/guide/platform/administration/access.md +1 -4
  211. package/skills/void/docs/guide/platform/administration/email.md +35 -8
  212. package/skills/void/docs/guide/platform/administration/operations.md +26 -4
  213. package/skills/void/docs/guide/platform/administration/plans.md +126 -0
  214. package/skills/void/docs/guide/platform/administration/projects.md +5 -2
  215. package/skills/void/docs/guide/platform/administration/zero-trust.md +189 -0
  216. package/skills/void/docs/guide/platform/development/local.md +2 -2
  217. package/skills/void/docs/guide/platform/development/runtime.md +3 -13
  218. package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
  219. package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
  220. package/skills/void/docs/guide/platform/installation/domains.md +31 -3
  221. package/skills/void/docs/guide/platform/installation/first-deployment.md +6 -0
  222. package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
  223. package/skills/void/docs/guide/platform/installation/prerequisites.md +21 -16
  224. package/skills/void/docs/guide/platform/installation/setup.md +9 -5
  225. package/skills/void/docs/guide/platform/installation/uninstall.md +17 -2
  226. package/skills/void/docs/guide/platform-administration.md +2 -0
  227. package/skills/void/docs/guide/queues.md +7 -9
  228. package/skills/void/docs/guide/quickstart.md +38 -37
  229. package/skills/void/docs/guide/remote-dev.md +4 -9
  230. package/skills/void/docs/guide/sandboxes.md +78 -41
  231. package/skills/void/docs/guide/server-routing.md +9 -72
  232. package/skills/void/docs/guide/sse.md +4 -18
  233. package/skills/void/docs/guide/ssg.md +3 -15
  234. package/skills/void/docs/guide/ssr.md +14 -62
  235. package/skills/void/docs/guide/storage.md +9 -4
  236. package/skills/void/docs/guide/type-safety.md +3 -14
  237. package/skills/void/docs/guide/typed-fetch.md +3 -7
  238. package/skills/void/docs/guide/websockets.md +68 -40
  239. package/skills/void/docs/integrations/agents.md +3 -3
  240. package/skills/void/docs/integrations/cloudflare.md +85 -316
  241. package/skills/void/docs/integrations/frameworks/analog.md +5 -64
  242. package/skills/void/docs/integrations/frameworks/astro.md +4 -73
  243. package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
  244. package/skills/void/docs/integrations/frameworks/overview.md +11 -54
  245. package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
  246. package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
  247. package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
  248. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
  249. package/skills/void/docs/reference/api/auth.md +156 -0
  250. package/skills/void/docs/reference/api/client.md +87 -0
  251. package/skills/void/docs/reference/api/database.md +95 -0
  252. package/skills/void/docs/reference/api/durable.md +46 -0
  253. package/skills/void/docs/reference/api/env.md +50 -0
  254. package/skills/void/docs/reference/api/handlers.md +254 -0
  255. package/skills/void/docs/reference/api/pages.md +241 -0
  256. package/skills/void/docs/reference/api/plugin.md +39 -0
  257. package/skills/void/docs/reference/api/resources.md +109 -0
  258. package/skills/void/docs/reference/api/rewrites.md +76 -0
  259. package/skills/void/docs/reference/api/types.md +92 -0
  260. package/skills/void/docs/reference/api.md +56 -1218
  261. package/skills/void/docs/reference/cli/auth.md +88 -0
  262. package/skills/void/docs/reference/cli/database.md +128 -0
  263. package/skills/void/docs/reference/cli/deploy.md +85 -0
  264. package/skills/void/docs/reference/cli/domains.md +41 -0
  265. package/skills/void/docs/reference/cli/email.md +129 -0
  266. package/skills/void/docs/reference/cli/generate.md +116 -0
  267. package/skills/void/docs/reference/cli/github.md +189 -0
  268. package/skills/void/docs/reference/cli/platform-config.md +92 -0
  269. package/skills/void/docs/reference/cli/platform-email.md +81 -0
  270. package/skills/void/docs/reference/cli/platform-installation.md +127 -0
  271. package/skills/void/docs/reference/cli/platform-operations.md +90 -0
  272. package/skills/void/docs/reference/cli/platform-users.md +89 -0
  273. package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
  274. package/skills/void/docs/reference/cli/platform.md +70 -0
  275. package/skills/void/docs/reference/cli/project.md +214 -0
  276. package/skills/void/docs/reference/cli/secrets.md +76 -0
  277. package/skills/void/docs/reference/cli/setup.md +70 -0
  278. package/skills/void/docs/reference/cli.md +33 -1621
  279. package/skills/void/docs/reference/config.md +26 -32
  280. package/skills/void/docs/reference/resource-inference.md +3 -58
  281. package/skills/void/docs/reference/structure.md +14 -41
  282. package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
  283. package/dist/cli/cf-compat.mjs +0 -968
  284. package/dist/client-4cDVv7BO.mjs +0 -2
  285. package/dist/gen-Vnv2f65C.mjs +0 -2
  286. package/dist/help-DQMfeKMz.mjs +0 -2
  287. package/dist/login-DFQk7rbW.mjs +0 -2
  288. package/dist/migrate-TsHGBnDA.mjs +0 -2
  289. package/dist/plan-BEZ8VJW0.mjs +0 -256
  290. package/dist/plan-DpuOr14e.mjs +0 -2
  291. package/dist/prepare-BZXkjdNe.mjs +0 -2
  292. package/dist/validate-EKmJWxmy.mjs +0 -2
  293. /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
package/dist/cli/cli.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { a as join } from "../dist-BVqXeR_h.mjs";
3
- import { j as log } from "../dist-Dn6nn2IU.mjs";
3
+ import { j as log } from "../dist-CTBk70IR.mjs";
4
4
  import { n as getPackageDir } from "../agents-B_pX_HmQ.mjs";
5
5
  import { t as formatCloudflareUserMessage } from "../cloudflare-user-output-Q-k0QoNQ.mjs";
6
- import { a as operatorGroups, i as printVoidHeader, n as printGlobalHelp, o as parseOperatorArgs, r as printHelpPage, t as getHelpPath } from "../help-DC7gdz7L.mjs";
6
+ import { i as printVoidHeader, n as printGlobalHelp, r as printHelpPage, t as getHelpPath } from "../help-daGKjXGk.mjs";
7
7
  import { r as OperatorClientError } from "../operator-client-DUwumHpQ.mjs";
8
+ import { n as platformSubcommands, t as parsePlatformArgs } from "../platform-args-BJdRtlLq.mjs";
8
9
  import { readFileSync } from "node:fs";
9
- import { PLATFORM_LOGIN_KINDS, parsePlatformLoginId } from "@void/platform";
10
10
  import { parseArgs } from "node:util";
11
11
  //#region src/cli/account-args.ts
12
12
  const accountSubcommands = [
@@ -63,7 +63,6 @@ function parseDeployArgs(args) {
63
63
  "skip-build": { type: "boolean" },
64
64
  debug: { type: "boolean" },
65
65
  platform: { type: "string" },
66
- backend: { type: "string" },
67
66
  provision: { type: "boolean" },
68
67
  "require-email": { type: "boolean" },
69
68
  atomic: { type: "boolean" }
@@ -75,9 +74,7 @@ function parseDeployArgs(args) {
75
74
  } catch (error) {
76
75
  const message = error instanceof Error ? error.message : String(error);
77
76
  if (message.includes("argument missing") || message.includes("argument is ambiguous")) {
78
- const optionMatch = message.match(/Option '(--[a-z-]+)/);
79
- if (optionMatch?.[1] === "--platform") throw new Error("deploy: --platform requires a value ('cloudflare' or 'void').");
80
- if (optionMatch?.[1] === "--backend") throw new Error("deploy: --backend requires a value ('cloudflare').");
77
+ if (message.match(/Option '(--[a-z-]+)/)?.[1] === "--platform") throw new Error("deploy: --platform requires a value ('cloudflare' or 'void').");
81
78
  throw new Error("deploy: --project requires a slug.");
82
79
  }
83
80
  const unknownOptionMatch = message.match(/Unknown option '([^']+)'/);
@@ -86,11 +83,7 @@ function parseDeployArgs(args) {
86
83
  }
87
84
  const tokens = parsed.tokens ?? [];
88
85
  if (tokens.filter((token) => token.kind === "option" && token.name === "project").length > 1) throw new Error("deploy: --project can only be specified once.");
89
- const backendTokens = tokens.filter((token) => token.kind === "option" && token.name === "backend");
90
- if (backendTokens.length > 1) throw new Error("deploy: --backend can only be specified once.");
91
- const platformTokens = tokens.filter((token) => token.kind === "option" && token.name === "platform");
92
- if (platformTokens.length > 1) throw new Error("deploy: --platform can only be specified once.");
93
- if (platformTokens.length > 0 && backendTokens.length > 0) throw new Error("deploy: --platform and --backend cannot be used together.");
86
+ if (tokens.filter((token) => token.kind === "option" && token.name === "platform").length > 1) throw new Error("deploy: --platform can only be specified once.");
94
87
  if (parsed.positionals.length > 0) throw new Error(`deploy: Unexpected argument '${parsed.positionals[0]}'.`);
95
88
  const projectValue = parsed.values.project;
96
89
  const projectSlug = typeof projectValue === "string" ? projectValue : void 0;
@@ -102,15 +95,12 @@ function parseDeployArgs(args) {
102
95
  const platformValue = typeof parsed.values.platform === "string" ? parsed.values.platform : void 0;
103
96
  if (platformValue !== void 0 && platformValue !== "cloudflare" && platformValue !== "void") throw new Error("deploy: --platform must be 'cloudflare' or 'void'.");
104
97
  const platform = platformValue;
105
- const backendValue = typeof parsed.values.backend === "string" ? parsed.values.backend : void 0;
106
- if (backendValue !== void 0 && backendValue !== "cloudflare") throw new Error("deploy: --backend must be 'cloudflare'.");
107
- const backend = backendValue;
108
98
  const provision = parsed.values.provision === true ? true : void 0;
109
- if (provision && backend !== "cloudflare" && platform !== "cloudflare") throw new Error("deploy: --provision requires --platform cloudflare.");
99
+ if (provision && platform !== "cloudflare") throw new Error("deploy: --provision requires --platform cloudflare.");
110
100
  const requireEmail = parsed.values["require-email"] === true ? true : void 0;
111
101
  const atomic = parsed.values.atomic === true ? true : void 0;
112
- if (requireEmail && backend !== "cloudflare" && platform !== "cloudflare") throw new Error("deploy: --require-email requires --platform cloudflare.");
113
- if (backend === "cloudflare" || platform === "cloudflare") {
102
+ if (requireEmail && platform !== "cloudflare") throw new Error("deploy: --require-email requires --platform cloudflare.");
103
+ if (platform === "cloudflare") {
114
104
  if (projectSlug !== void 0) throw new Error("deploy: --project is not supported with --platform cloudflare — this platform deploys to your own Cloudflare account and no Void project is involved.");
115
105
  }
116
106
  return {
@@ -120,7 +110,6 @@ function parseDeployArgs(args) {
120
110
  skipBuild,
121
111
  debug,
122
112
  platform,
123
- backend,
124
113
  provision,
125
114
  requireEmail,
126
115
  atomic
@@ -614,7 +603,6 @@ function parseEmailArgs(args) {
614
603
  let limit;
615
604
  const projectValues = [];
616
605
  const platformValues = [];
617
- const backendValues = [];
618
606
  const subdomainValues = [];
619
607
  const positional = [];
620
608
  const rest = args.slice(1);
@@ -635,12 +623,8 @@ function parseEmailArgs(args) {
635
623
  if (value === void 0) throw new Error("email: --platform requires a value ('cloudflare' or 'void').");
636
624
  platformValues.push(value);
637
625
  i = next;
638
- } else if (rest[i] === "--backend" || rest[i]?.startsWith("--backend=")) {
639
- const { value, next } = readFlagValue(rest, i, "--backend");
640
- if (value === void 0) throw new Error("email: --backend requires a value ('cloudflare').");
641
- backendValues.push(value);
642
- i = next;
643
- } else if (rest[i] === "--subdomain" || rest[i]?.startsWith("--subdomain=")) {
626
+ } else if (rest[i] === "--backend" || rest[i]?.startsWith("--backend=")) throw new Error("email: Unknown option '--backend'.");
627
+ else if (rest[i] === "--subdomain" || rest[i]?.startsWith("--subdomain=")) {
644
628
  const { value, next } = readFlagValue(rest, i, "--subdomain");
645
629
  if (value === void 0 || value.trim() === "") throw new Error("email: --subdomain requires a value (a subdomain label or host).");
646
630
  subdomainValues.push(value);
@@ -648,20 +632,13 @@ function parseEmailArgs(args) {
648
632
  } else positional.push(rest[i]);
649
633
  if (projectValues.length > 1) throw new Error("email: --project can only be specified once.");
650
634
  const projectSlug = projectValues[0];
651
- if (backendValues.length > 1) throw new Error("email: --backend can only be specified once.");
652
635
  if (platformValues.length > 1) throw new Error("email: --platform can only be specified once.");
653
- if (platformValues.length > 0 && backendValues.length > 0) throw new Error("email: --platform and --backend cannot be used together.");
654
636
  let platform;
655
637
  const platformValue = platformValues[0];
656
638
  if (platformValue !== void 0) {
657
639
  if (platformValue !== "cloudflare" && platformValue !== "void") throw new Error("email: --platform must be 'cloudflare' or 'void'.");
658
640
  platform = platformValue;
659
641
  }
660
- const backendValue = backendValues[0];
661
- if (backendValue !== void 0) {
662
- if (backendValue !== "cloudflare") throw new Error("email: --backend must be 'cloudflare'.");
663
- platform = "cloudflare";
664
- }
665
642
  if (subdomainValues.length > 1) throw new Error("email: --subdomain can only be specified once.");
666
643
  const subdomain = subdomainValues[0];
667
644
  if (subcommand === "domain") {
@@ -1172,390 +1149,16 @@ function parseGithubArgs(args) {
1172
1149
  throw new Error("github: Usage: void github <install|installations|connect|update|status|disconnect|link|join>.");
1173
1150
  }
1174
1151
  //#endregion
1175
- //#region src/cli/platform-config-args.ts
1176
- const PLATFORM_AUTH_ACTIONS = [
1177
- "list",
1178
- "show",
1179
- "initialize",
1180
- "add",
1181
- "configure",
1182
- "test",
1183
- "enable",
1184
- "disable",
1185
- "link",
1186
- "admission",
1187
- "protection",
1188
- "recover"
1189
- ];
1190
- function parsePlatformConfigArgs(args) {
1191
- if (args.length && args[0] !== "auth") throw new Error("platform: Usage: void platform config auth [command] [options].");
1192
- const positional = [];
1193
- const flags = /* @__PURE__ */ new Set();
1194
- const values = /* @__PURE__ */ new Map();
1195
- const valueFlags = [
1196
- "connection",
1197
- "installation",
1198
- "id",
1199
- "file",
1200
- "client-secret-env",
1201
- "test-id"
1202
- ];
1203
- for (let index = 1; index < args.length; index++) {
1204
- const arg = args[index];
1205
- if (!arg.startsWith("-")) {
1206
- positional.push(arg);
1207
- continue;
1208
- }
1209
- const name = arg.slice(2);
1210
- if (!arg.startsWith("--") || ![
1211
- "json",
1212
- "plan",
1213
- "yes"
1214
- ].includes(name) && !valueFlags.includes(name)) throw new Error(`platform: Unknown config auth flag ${arg}.`);
1215
- if (flags.has(name) || values.has(name)) throw new Error(`platform: Duplicate flag ${arg}.`);
1216
- if (!valueFlags.includes(name)) {
1217
- flags.add(name);
1218
- continue;
1219
- }
1220
- const value = args[++index];
1221
- if (!value || value.startsWith("-")) throw new Error(`platform: ${arg} requires a value.`);
1222
- values.set(name, value);
1223
- }
1224
- const [action = "", target = "", ...extra] = positional;
1225
- if (extra.length || action && !PLATFORM_AUTH_ACTIONS.includes(action)) throw new Error(`platform: Usage: void platform config auth <${PLATFORM_AUTH_ACTIONS.join("|")}>.`);
1226
- const needsTarget = action && action !== "list" && action !== "initialize" && action !== "admission";
1227
- if (needsTarget && !target || !needsTarget && target) throw new Error(`platform: ${action || "config auth"} ${needsTarget ? "requires a method" : "does not accept a method"}.`);
1228
- if (action === "add") {
1229
- if (!PLATFORM_LOGIN_KINDS.includes(target)) throw new Error(`platform: Login kind must be ${PLATFORM_LOGIN_KINDS.join(", ")}.`);
1230
- } else if (action === "protection") {
1231
- if (![
1232
- "enable",
1233
- "disable",
1234
- "show"
1235
- ].includes(target)) throw new Error("platform: Usage: void platform config auth protection <enable|disable|show>.");
1236
- } else if (target) parsePlatformLoginId(target);
1237
- if (flags.has("plan") && flags.has("yes")) throw new Error("platform: --plan and --yes cannot be combined.");
1238
- if ((!action || action === "list" || action === "show") && (flags.has("plan") || flags.has("yes"))) throw new Error("platform: Select a configuration change before using --plan or --yes.");
1239
- if (values.has("id") && action !== "add") throw new Error("platform: --id is only valid when adding a login method.");
1240
- if (values.has("installation") && action !== "recover" && action !== "protection") throw new Error("platform: --installation is only valid for recovery or platform protection.");
1241
- if (values.has("file") && ![
1242
- "add",
1243
- "configure",
1244
- "admission",
1245
- "recover",
1246
- "protection"
1247
- ].includes(action) || values.has("client-secret-env") && ![
1248
- "add",
1249
- "configure",
1250
- "recover"
1251
- ].includes(action)) throw new Error("platform: --file is valid for add, configure, admission, recover, or protection; --client-secret-env is valid for add, configure, or recover.");
1252
- if (values.has("test-id") && action !== "enable" && action !== "link") throw new Error("platform: --test-id is only valid for enable or link.");
1253
- const secretEnv = values.get("client-secret-env") ?? "";
1254
- if (secretEnv && !/^[A-Za-z_][A-Za-z0-9_]*$/.test(secretEnv)) throw new Error("platform: --client-secret-env requires an environment-variable name.");
1255
- if (values.has("id")) parsePlatformLoginId(values.get("id"));
1256
- return {
1257
- subcommand: "config",
1258
- action,
1259
- target,
1260
- connection: values.get("connection") ?? "",
1261
- installation: values.get("installation") ?? "",
1262
- id: values.get("id") ?? "",
1263
- file: values.get("file") ?? "",
1264
- clientSecretEnv: secretEnv,
1265
- testId: values.get("test-id") ?? "",
1266
- json: flags.has("json"),
1267
- plan: flags.has("plan"),
1268
- yes: flags.has("yes")
1269
- };
1270
- }
1271
- //#endregion
1272
- //#region src/cli/platform-args.ts
1273
- const platformSubcommands = [
1274
- {
1275
- name: "config",
1276
- hint: "Configure authentication",
1277
- description: "Configure login methods, company protection, or provider recovery"
1278
- },
1279
- ...operatorGroups.map((name) => ({
1280
- name,
1281
- hint: name === "email" ? "Domains, policy, limits, outcomes, and recovery" : "Operator commands",
1282
- description: `Administer platform ${name}`
1283
- })),
1284
- {
1285
- name: "list",
1286
- description: "List installed and connected platforms"
1287
- },
1288
- {
1289
- name: "use",
1290
- arg: "[id]",
1291
- description: "Select the default Void platform"
1292
- },
1293
- {
1294
- name: "status",
1295
- arg: "[id]",
1296
- description: "Inspect a platform and its health"
1297
- },
1298
- {
1299
- name: "discover",
1300
- description: "Recover installations from a Cloudflare account"
1301
- },
1302
- {
1303
- name: "domain",
1304
- hint: "Set an application domain",
1305
- description: "Add a domain to a workers.dev test platform"
1306
- },
1307
- {
1308
- name: "install",
1309
- description: "Install a Void platform with a domain or workers.dev for testing"
1310
- },
1311
- {
1312
- name: "upgrade",
1313
- arg: "[id]",
1314
- description: "Upgrade an installed Void platform"
1315
- },
1316
- {
1317
- name: "rollback",
1318
- arg: "[id]",
1319
- description: "Restore a compatible earlier platform runtime"
1320
- },
1321
- {
1322
- name: "repair",
1323
- arg: "[id]",
1324
- description: "Reconcile an installed Void platform"
1325
- },
1326
- {
1327
- name: "disable",
1328
- arg: "[id]",
1329
- description: "Disable traffic without deleting data"
1330
- },
1331
- {
1332
- name: "enable",
1333
- arg: "[id]",
1334
- description: "Restore traffic for a disabled platform"
1335
- },
1336
- {
1337
- name: "uninstall",
1338
- arg: "[id]",
1339
- description: "Safely remove an installed Void platform"
1340
- }
1341
- ];
1342
- function readValue(rest, index, flag) {
1343
- const value = rest[index + 1];
1344
- if (!value || value.startsWith("-")) throw new Error(`platform: ${flag} requires a value.`);
1345
- return [value, index + 1];
1346
- }
1347
- function parseSelector(rest, subcommand, options = {}) {
1348
- let selector = "";
1349
- let plan = false;
1350
- let yes = false;
1351
- for (const arg of rest) if (arg === "--plan") plan = true;
1352
- else if (arg === "--yes" && options.allowYes) yes = true;
1353
- else if (arg.startsWith("-")) throw new Error(`platform: Unknown flag '${arg}'.`);
1354
- else if (selector) throw new Error(`platform: Unexpected argument '${arg}'.`);
1355
- else selector = arg;
1356
- if ((subcommand === "use" || subcommand === "status") && plan) throw new Error("platform: Unknown flag '--plan'.");
1357
- return {
1358
- selector,
1359
- plan,
1360
- yes
1361
- };
1362
- }
1363
- function parseLifecycleSelector(rest, subcommand) {
1364
- const positional = [];
1365
- let runtime = "";
1366
- let fromRuntime = "";
1367
- for (let index = 0; index < rest.length; index++) {
1368
- const arg = rest[index];
1369
- if (arg === "--runtime") {
1370
- if (subcommand === "disable") throw new Error("platform: Unknown flag '--runtime'.");
1371
- const [value, next] = readValue(rest, index, arg);
1372
- runtime = value;
1373
- index = next;
1374
- } else if (arg === "--from-runtime" && subcommand === "rollback") {
1375
- const [value, next] = readValue(rest, index, arg);
1376
- fromRuntime = value;
1377
- index = next;
1378
- } else positional.push(arg);
1379
- }
1380
- const parsed = parseSelector(positional, subcommand, { allowYes: true });
1381
- if (subcommand === "rollback" && !runtime) throw new Error("platform: rollback requires --runtime <earlier-runtime-directory>.");
1382
- return {
1383
- ...parsed,
1384
- runtime,
1385
- fromRuntime
1386
- };
1387
- }
1388
- function parsePlatformArgs(args) {
1389
- if (operatorGroups.includes(args[0] ?? "") || [
1390
- "--connection",
1391
- "--json",
1392
- "--plan",
1393
- "--yes",
1394
- "--timeout"
1395
- ].includes(args[0] ?? "")) return parseOperatorArgs(args);
1396
- const [subcommand, ...rest] = args;
1397
- if (subcommand === "config") return parsePlatformConfigArgs(rest);
1398
- if (subcommand === "domain") {
1399
- if (rest.length === 0) return {
1400
- subcommand,
1401
- domain: "",
1402
- selector: "",
1403
- zone: "",
1404
- dedicatedZone: false,
1405
- plan: false,
1406
- yes: false
1407
- };
1408
- if (rest[0] !== "set") throw new Error("platform: Usage: void platform domain set <domain> [--installation <id>] [--zone <domain>] [--dedicated-zone] [--plan] [--yes].");
1409
- let domain = "";
1410
- let selector = "";
1411
- let zone = "";
1412
- let plan = false;
1413
- let yes = false;
1414
- let dedicatedZone = false;
1415
- for (let index = 1; index < rest.length; index++) {
1416
- const arg = rest[index];
1417
- if (arg === "--installation" || arg === "--zone") {
1418
- const [value, next] = readValue(rest, index, arg);
1419
- index = next;
1420
- if (arg === "--zone") zone = value;
1421
- else selector = value;
1422
- } else if (arg === "--plan") plan = true;
1423
- else if (arg === "--yes") yes = true;
1424
- else if (arg === "--dedicated-zone") dedicatedZone = true;
1425
- else if (!arg.startsWith("-") && !domain) domain = arg;
1426
- else throw new Error(`platform: Unexpected argument '${arg}'.`);
1427
- }
1428
- if (!domain) throw new Error("platform: domain set requires an application domain.");
1429
- if (plan && yes) throw new Error("platform: Use either --plan or --yes.");
1430
- return {
1431
- subcommand,
1432
- domain,
1433
- selector,
1434
- zone,
1435
- dedicatedZone,
1436
- plan,
1437
- yes
1438
- };
1439
- }
1440
- if (subcommand === "list") {
1441
- if (rest.length > 0) throw new Error(`platform: Unexpected argument '${rest[0]}'.`);
1442
- return { subcommand };
1443
- }
1444
- if (subcommand === "use") {
1445
- const { selector } = parseSelector(rest, subcommand);
1446
- return {
1447
- subcommand,
1448
- selector
1449
- };
1450
- }
1451
- if (subcommand === "status") {
1452
- const { selector, plan } = parseSelector(rest, subcommand);
1453
- if (plan) throw new Error("platform: Unknown flag '--plan'.");
1454
- return {
1455
- subcommand,
1456
- selector
1457
- };
1458
- }
1459
- if (subcommand === "discover") {
1460
- let account = "";
1461
- let selector = "";
1462
- for (let index = 0; index < rest.length; index++) {
1463
- const arg = rest[index];
1464
- if (arg === "--account" || arg === "--installation") {
1465
- const [value, next] = readValue(rest, index, arg);
1466
- if (arg === "--account") account = value;
1467
- else selector = value;
1468
- index = next;
1469
- } else throw new Error("platform: Usage: void platform discover [--account <id>] [--installation <id-or-name>].");
1470
- }
1471
- return {
1472
- subcommand,
1473
- account,
1474
- selector
1475
- };
1476
- }
1477
- if (subcommand === "upgrade" || subcommand === "rollback" || subcommand === "repair" || subcommand === "disable" || subcommand === "enable") {
1478
- const { selector, plan, runtime, fromRuntime, yes } = parseLifecycleSelector(rest, subcommand);
1479
- return subcommand === "rollback" ? {
1480
- subcommand,
1481
- selector,
1482
- plan,
1483
- runtime,
1484
- fromRuntime,
1485
- yes
1486
- } : {
1487
- subcommand,
1488
- selector,
1489
- plan,
1490
- runtime,
1491
- yes
1492
- };
1493
- }
1494
- if (subcommand === "uninstall") {
1495
- const parsed = parseSelector(rest.filter((arg) => ![
1496
- "--purge-data",
1497
- "--delete-zone",
1498
- "--keep-zone"
1499
- ].includes(arg)), subcommand, { allowYes: true });
1500
- if (rest.includes("--delete-zone") && rest.includes("--keep-zone")) throw new Error("platform: --delete-zone and --keep-zone cannot be used together.");
1501
- return {
1502
- subcommand,
1503
- selector: parsed.selector,
1504
- plan: parsed.plan,
1505
- purgeData: rest.includes("--purge-data"),
1506
- yes: parsed.yes,
1507
- deleteZone: rest.includes("--delete-zone") ? true : rest.includes("--keep-zone") ? false : null
1508
- };
1509
- }
1510
- if (subcommand === "install") {
1511
- const values = /* @__PURE__ */ new Map();
1512
- let plan = false;
1513
- let resume = false;
1514
- let dedicatedZone = false;
1515
- let yes = false;
1516
- const valueFlags = /* @__PURE__ */ new Set([
1517
- "--account",
1518
- "--auth-config",
1519
- "--application-domain",
1520
- "--control-plane-domain",
1521
- "--display-name",
1522
- "--name",
1523
- "--runtime",
1524
- "--zone"
1525
- ]);
1526
- let workersDev = false;
1527
- for (let i = 0; i < rest.length; i++) {
1528
- const arg = rest[i];
1529
- if (valueFlags.has(arg)) {
1530
- const [value, next] = readValue(rest, i, arg);
1531
- values.set(arg, value);
1532
- i = next;
1533
- } else if (arg === "--plan") plan = true;
1534
- else if (arg === "--resume") resume = true;
1535
- else if (arg === "--dedicated-zone") dedicatedZone = true;
1536
- else if (arg === "--yes") yes = true;
1537
- else if (arg === "--workers-dev") workersDev = true;
1538
- else throw new Error(`platform: Unexpected argument '${arg}'.`);
1539
- }
1540
- if (workersDev && (values.has("--application-domain") || values.has("--zone") || dedicatedZone)) throw new Error("platform: --workers-dev cannot be combined with a domain, zone, or --dedicated-zone.");
1541
- return {
1542
- subcommand,
1543
- ...workersDev ? { workersDev: true } : {},
1544
- ...values.has("--auth-config") ? { authConfig: values.get("--auth-config") } : {},
1545
- account: values.get("--account") ?? "",
1546
- applicationDomain: values.get("--application-domain") ?? "",
1547
- controlPlaneDomain: values.get("--control-plane-domain") ?? "",
1548
- dedicatedZone,
1549
- displayName: values.get("--display-name") ?? "",
1550
- name: values.get("--name") ?? "",
1551
- plan,
1552
- resume,
1553
- runtime: values.get("--runtime") ?? "",
1554
- yes,
1555
- zone: values.get("--zone") ?? ""
1556
- };
1557
- }
1558
- throw new Error("platform: Usage: void platform <config|auth|user|project|deployment|build|signup|invitation|email|system|worker|list|use|status|discover|install|domain|upgrade|rollback|repair|disable|enable|uninstall>.");
1152
+ //#region src/cli/info-args.ts
1153
+ function parseInfoArgs(args) {
1154
+ const parsed = parseArgs({
1155
+ args,
1156
+ options: { json: { type: "boolean" } },
1157
+ allowPositionals: true,
1158
+ strict: true
1159
+ });
1160
+ if (parsed.positionals.length > 0) throw new Error(`info: Unexpected argument '${parsed.positionals[0]}'.`);
1161
+ return { json: parsed.values.json ?? false };
1559
1162
  }
1560
1163
  //#endregion
1561
1164
  //#region src/cli/prepare-args.ts
@@ -1610,6 +1213,11 @@ const projectSubcommands = [
1610
1213
  hint: "list | invite | invitations | role | remove | revoke | leave | pending | accept | decline",
1611
1214
  description: "Manage project members and invitations"
1612
1215
  },
1216
+ {
1217
+ name: "zero-trust",
1218
+ hint: "status | protect | public | reconcile",
1219
+ description: "Inspect or override Cloudflare Zero Trust protection"
1220
+ },
1613
1221
  {
1614
1222
  name: "logs",
1615
1223
  description: "Show runtime logs from the deployed project"
@@ -1702,6 +1310,30 @@ function parseProjectArgs(args) {
1702
1310
  };
1703
1311
  }
1704
1312
  if (subcommand === "team") return parseTeamArgs(rest);
1313
+ if (subcommand === "zero-trust") {
1314
+ const [action = "", ...args] = rest;
1315
+ if (action && ![
1316
+ "status",
1317
+ "protect",
1318
+ "public",
1319
+ "reconcile"
1320
+ ].includes(action)) throw new Error("project: Usage: void project zero-trust <status|protect|public|reconcile> [--project <slug>].");
1321
+ let projectSlug = "";
1322
+ for (let index = 0; index < args.length; index++) {
1323
+ const arg = args[index];
1324
+ if (arg === "--project") {
1325
+ const value = args[++index];
1326
+ if (!value || value.startsWith("-")) throw new Error("project: --project requires a value.");
1327
+ if (projectSlug) throw new Error("project: Duplicate flag '--project'.");
1328
+ projectSlug = value;
1329
+ } else throw new Error(`project: Unexpected argument '${arg}'.`);
1330
+ }
1331
+ return {
1332
+ subcommand,
1333
+ action,
1334
+ projectSlug
1335
+ };
1336
+ }
1705
1337
  if (subcommand === "logs") {
1706
1338
  let filter = "";
1707
1339
  let range = "1h";
@@ -1778,7 +1410,7 @@ function parseProjectArgs(args) {
1778
1410
  projectSlug
1779
1411
  };
1780
1412
  }
1781
- throw new Error("project: Usage: void project <status|link|list|team|token|logs|requests|rollback|cancel|delete|purge-cache>.");
1413
+ throw new Error("project: Usage: void project <status|link|list|team|token|zero-trust|logs|requests|rollback|cancel|delete|purge-cache>.");
1782
1414
  }
1783
1415
  function parseTeamArgs(rest) {
1784
1416
  const [action, ...args] = rest;
@@ -1980,7 +1612,7 @@ async function runSubcommandGroup(command, subcommands, parse, run) {
1980
1612
  const hasNamedSubcommand = args.slice(1).some((arg) => subcommands.some(({ name }) => name === arg));
1981
1613
  try {
1982
1614
  if ((!sub || sub.startsWith("-") && !hasNamedSubcommand) && process.stdin.isTTY) {
1983
- const { promptSubcommand } = await import("../subcommand-prompt-BuGYkAkC.mjs");
1615
+ const { promptSubcommand } = await import("../subcommand-prompt-CY1C4fvl.mjs");
1984
1616
  if (command === "platform" && !sub) log.info("A Void platform lets a team deploy Void apps to a shared Cloudflare account.\nThis command sets up and manages platforms. Join with `void connect <url>`.\nDocs: https://void.cloud/guide/self-hosted-platform");
1985
1617
  const result = await promptSubcommand(command, subcommands);
1986
1618
  if (!result) process.exit(0);
@@ -2020,7 +1652,7 @@ if (helpPath) {
2020
1652
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
2021
1653
  process.exit(1);
2022
1654
  }
2023
- import("../deploy-DDz7c8LK.mjs").then(({ runDeploy }) => {
1655
+ import("../deploy-bjXdFCtn.mjs").then(({ runDeploy }) => {
2024
1656
  runDeploy(root, {
2025
1657
  projectSlug: deployArgs.projectSlug,
2026
1658
  dir: deployArgs.dir,
@@ -2028,7 +1660,6 @@ if (helpPath) {
2028
1660
  skipBuild: deployArgs.skipBuild,
2029
1661
  debug: deployArgs.debug,
2030
1662
  platform: deployArgs.platform,
2031
- backend: deployArgs.backend,
2032
1663
  provision: deployArgs.provision,
2033
1664
  requireEmail: deployArgs.requireEmail,
2034
1665
  atomic: deployArgs.atomic
@@ -2039,25 +1670,38 @@ if (helpPath) {
2039
1670
  });
2040
1671
  } else if (command === "connect") (async () => {
2041
1672
  const parsed = parseConnectArgs(args.slice(1));
2042
- const { runConnectCommand } = await import("../connect-BsUSRzln.mjs");
1673
+ const { runConnectCommand } = await import("../connect-Bd4kJd9U.mjs");
2043
1674
  await runConnectCommand(process.cwd(), parsed);
2044
1675
  })().catch((err) => {
2045
1676
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
2046
1677
  process.exit(1);
2047
1678
  });
2048
- else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-BgEFRuvZ.mjs").then(({ runAuthRouter }) => runAuthRouter(root, parsed)));
2049
- else if (command === "account") runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-DZZGK80W.mjs").then(({ runAccountCommand }) => runAccountCommand(root, parsed)));
2050
- else if (command === "platform") runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-C4ZV3Vpy.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed)));
2051
- else if (command === "cloudflare") runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-bSmZ1d5L.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(root, parsed)));
2052
- else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-B44I8J_W.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
2053
- else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-DN9sSNiV.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
2054
- else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-Dmhvb2oU.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
2055
- else if (command === "email") runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-DFi-s2t4.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed)));
2056
- else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-hRrvZaq_.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
2057
- else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-Csi-tMbT.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
2058
- else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-Vnv2f65C.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
2059
- else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-BED3_9JD.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
2060
- else if (command === "build") runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-Dpt0jd-x.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)));
1679
+ else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-BsR981d4.mjs").then(({ runAuthRouter }) => runAuthRouter(root, parsed)));
1680
+ else if (command === "account") runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-C84Ee8cO.mjs").then(({ runAccountCommand }) => runAccountCommand(root, parsed)));
1681
+ else if (command === "platform") runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-Bt-1w6pY.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed)));
1682
+ else if (command === "cloudflare") runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-BcrVyTmJ.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(root, parsed)));
1683
+ else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-CNzrqvBv.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
1684
+ else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-Dli5fP0B.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
1685
+ else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-y5Tvydvo.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
1686
+ else if (command === "email") runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-B3umsW75.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed)));
1687
+ else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-8uG64XLl.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
1688
+ else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-BS6qYHDb.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
1689
+ else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-BVaUUumi.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
1690
+ else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-v45BdfKX.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
1691
+ else if (command === "build") runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-LzvNJORH.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)));
1692
+ else if (command === "info") import("../info-B97bTX9N.mjs").then(async ({ runInfoCommand }) => {
1693
+ try {
1694
+ await runInfoCommand(process.cwd(), parseInfoArgs(args.slice(1)));
1695
+ } catch (err) {
1696
+ const message = formatCloudflareUserMessage(err instanceof Error ? err.message : String(err));
1697
+ if (args.includes("--json")) console.error(JSON.stringify({
1698
+ error: "invalid_command",
1699
+ message
1700
+ }));
1701
+ else log.error(message);
1702
+ process.exit(1);
1703
+ }
1704
+ });
2061
1705
  else if (command === "prepare") {
2062
1706
  const root = process.cwd();
2063
1707
  let prepareArgs;
@@ -2067,7 +1711,7 @@ else if (command === "prepare") {
2067
1711
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
2068
1712
  process.exit(1);
2069
1713
  }
2070
- import("../prepare-DyZ-Yok5.mjs").then(({ runPrepareCommand }) => {
1714
+ import("../prepare-B5Mkic5u.mjs").then(({ runPrepareCommand }) => {
2071
1715
  runPrepareCommand(root, prepareArgs).catch((err) => {
2072
1716
  log.error(formatCloudflareUserMessage(err.message ?? String(err)));
2073
1717
  process.exit(1);
@@ -2075,7 +1719,7 @@ else if (command === "prepare") {
2075
1719
  });
2076
1720
  } else if (command === "init") {
2077
1721
  const root = process.cwd();
2078
- import("../init-WO0JlPx8.mjs").then(({ runInitCommand, parseInitArgs }) => {
1722
+ import("../init-Bvy7zrBo.mjs").then(({ runInitCommand, parseInitArgs }) => {
2079
1723
  let initArgs;
2080
1724
  try {
2081
1725
  initArgs = parseInitArgs(args.slice(1));
@@ -2093,7 +1737,7 @@ else if (command === "prepare") {
2093
1737
  log.error("migrate: This command takes no arguments.");
2094
1738
  process.exit(1);
2095
1739
  }
2096
- import("../migrate-TsHGBnDA.mjs").then(({ runMigrateCommand }) => {
1740
+ import("../migrate-8_2u55MD.mjs").then(({ runMigrateCommand }) => {
2097
1741
  runMigrateCommand(process.cwd()).catch((err) => {
2098
1742
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
2099
1743
  process.exit(1);
@@ -2116,6 +1760,11 @@ else if (command === "prepare") {
2116
1760
  name: "migrate",
2117
1761
  description: "Migrate legacy project configuration"
2118
1762
  },
1763
+ {
1764
+ name: "info",
1765
+ hint: "--json",
1766
+ description: "Inspect persistent resource names in this project"
1767
+ },
2119
1768
  {
2120
1769
  name: "connect",
2121
1770
  description: "Connect to Cloudflare or a Void platform"
@@ -2136,8 +1785,8 @@ else if (command === "prepare") {
2136
1785
  },
2137
1786
  {
2138
1787
  name: "platform",
2139
- hint: "auth | user | project | deployment | signup | email | system | install",
2140
- description: "Install platforms and administer users, projects, access, and operations"
1788
+ hint: "config | auth | user | project | deployment | signup | email | zero-trust | system | install",
1789
+ description: "Install platforms and administer plans, users, projects, access, and operations"
2141
1790
  },
2142
1791
  {
2143
1792
  name: "cloudflare",
@@ -2146,7 +1795,7 @@ else if (command === "prepare") {
2146
1795
  },
2147
1796
  {
2148
1797
  name: "project",
2149
- hint: "status | link | list | team | token | logs | requests | rollback | cancel | delete | purge-cache",
1798
+ hint: "status | link | list | team | token | zero-trust | logs | requests | rollback | cancel | delete | purge-cache",
2150
1799
  description: "Manage projects, teams, deployments, and scoped CI credentials"
2151
1800
  },
2152
1801
  {
@@ -2200,47 +1849,52 @@ else if (command === "prepare") {
2200
1849
  ];
2201
1850
  (async () => {
2202
1851
  printVoidHeader();
2203
- const { promptSubcommand } = await import("../subcommand-prompt-BuGYkAkC.mjs");
1852
+ const { promptSubcommand } = await import("../subcommand-prompt-CY1C4fvl.mjs");
2204
1853
  const result = await promptSubcommand("", topLevelCommands);
2205
1854
  if (!result) process.exit(0);
2206
1855
  const cmd = result.subcommand;
2207
1856
  const root = process.cwd();
2208
1857
  switch (cmd) {
2209
1858
  case "connect": {
2210
- const { runConnectCommand } = await import("../connect-BsUSRzln.mjs");
1859
+ const { runConnectCommand } = await import("../connect-Bd4kJd9U.mjs");
2211
1860
  await runConnectCommand(root, parseConnectArgs([]));
2212
1861
  return;
2213
1862
  }
2214
1863
  case "init": {
2215
- const { runInitCommand, parseInitArgs } = await import("../init-WO0JlPx8.mjs");
1864
+ const { runInitCommand, parseInitArgs } = await import("../init-Bvy7zrBo.mjs");
2216
1865
  await runInitCommand(root, parseInitArgs([]));
2217
1866
  return;
2218
1867
  }
2219
1868
  case "migrate": {
2220
- const { runMigrateCommand } = await import("../migrate-TsHGBnDA.mjs");
1869
+ const { runMigrateCommand } = await import("../migrate-8_2u55MD.mjs");
2221
1870
  await runMigrateCommand(root);
2222
1871
  return;
2223
1872
  }
2224
1873
  case "deploy": {
2225
- const { runDeploy } = await import("../deploy-DDz7c8LK.mjs");
1874
+ const { runDeploy } = await import("../deploy-bjXdFCtn.mjs");
2226
1875
  await runDeploy(root);
2227
1876
  return;
2228
1877
  }
2229
- case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-router-BgEFRuvZ.mjs").then(({ runAuthRouter }) => runAuthRouter(r, p)));
2230
- case "account": return runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (r, p) => import("../account-cmd-DZZGK80W.mjs").then(({ runAccountCommand }) => runAccountCommand(r, p)));
2231
- case "platform": return runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (r, p) => import("../platform-cmd-C4ZV3Vpy.mjs").then(({ runPlatformCommand }) => runPlatformCommand(r, p)));
2232
- case "cloudflare": return runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (r, p) => import("../cloudflare-cmd-bSmZ1d5L.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(r, p)));
2233
- case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-B44I8J_W.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
2234
- case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-DN9sSNiV.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
2235
- case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-Dmhvb2oU.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
2236
- case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-BED3_9JD.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
2237
- case "build": return runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (r, p) => import("../build-cmd-Dpt0jd-x.mjs").then(({ runBuildCommand }) => runBuildCommand(r, p)));
2238
- case "email": return runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (r, p) => import("../email-DFi-s2t4.mjs").then(({ runEmailCommand }) => runEmailCommand(r, p)));
2239
- case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-hRrvZaq_.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
2240
- case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-Csi-tMbT.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
2241
- case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-Vnv2f65C.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
1878
+ case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-router-BsR981d4.mjs").then(({ runAuthRouter }) => runAuthRouter(r, p)));
1879
+ case "account": return runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (r, p) => import("../account-cmd-C84Ee8cO.mjs").then(({ runAccountCommand }) => runAccountCommand(r, p)));
1880
+ case "platform": return runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (r, p) => import("../platform-cmd-Bt-1w6pY.mjs").then(({ runPlatformCommand }) => runPlatformCommand(r, p)));
1881
+ case "cloudflare": return runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (r, p) => import("../cloudflare-cmd-BcrVyTmJ.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(r, p)));
1882
+ case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-CNzrqvBv.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
1883
+ case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-Dli5fP0B.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
1884
+ case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-y5Tvydvo.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
1885
+ case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-v45BdfKX.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
1886
+ case "build": return runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (r, p) => import("../build-cmd-LzvNJORH.mjs").then(({ runBuildCommand }) => runBuildCommand(r, p)));
1887
+ case "email": return runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (r, p) => import("../email-B3umsW75.mjs").then(({ runEmailCommand }) => runEmailCommand(r, p)));
1888
+ case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-8uG64XLl.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
1889
+ case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-BS6qYHDb.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
1890
+ case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-BVaUUumi.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
1891
+ case "info": {
1892
+ const { runInfoCommand } = await import("../info-B97bTX9N.mjs");
1893
+ await runInfoCommand(root, parseInfoArgs([]));
1894
+ return;
1895
+ }
2242
1896
  case "prepare": {
2243
- const { runPrepareCommand } = await import("../prepare-DyZ-Yok5.mjs");
1897
+ const { runPrepareCommand } = await import("../prepare-B5Mkic5u.mjs");
2244
1898
  await runPrepareCommand(root, parsePrepareArgs([]));
2245
1899
  return;
2246
1900
  }