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
@@ -0,0 +1,189 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # GitHub and Builds {#github}
6
+
7
+ Deploy-on-GitHub works from **any** Void login — Google, GitHub, or other SSO. The first time you connect GitHub, Void links your GitHub identity to your current account (a one-time step, independent of how you logged in); it never creates a second account.
8
+
9
+ ## `void github link` {#void-github-link}
10
+
11
+ ```
12
+ void github link
13
+ ```
14
+
15
+ Link your signed-in Void account to GitHub through your browser. `void github install` does this automatically when needed.
16
+
17
+ ::: warning Existing GitHub sign-in
18
+ A GitHub identity can belong to only one Void account. If it is already linked elsewhere, sign in to that Void account or authorize a different GitHub identity.
19
+ :::
20
+
21
+ ## `void github install` {#void-github-install}
22
+
23
+ ```
24
+ void github install
25
+ ```
26
+
27
+ Open the GitHub App install page in your browser. If your account has no linked GitHub identity yet, `void github install` first runs the GitHub link automatically (browser authorize), then continues. After installing, run `void github connect` to link a repository to your project.
28
+
29
+ ## `void github installations` {#void-github-installations}
30
+
31
+ ```
32
+ void github installations
33
+ ```
34
+
35
+ List all GitHub App installations linked to your account. Each entry includes the `[id: <installation_id>]` needed for `--installation` in non-interactive use.
36
+
37
+ ## `void github join` {#void-github-join}
38
+
39
+ ```
40
+ void github join
41
+ ```
42
+
43
+ Join an existing organization installation through your browser. `void github connect` can do this automatically in an interactive terminal. Run `join` locally before non-interactive setup when needed.
44
+
45
+ Requires a signed-in Void account and organization-installation sharing enabled by your platform. Use `void github installations` to find the installation ID.
46
+
47
+ ## `void github connect` {#void-github-connect}
48
+
49
+ ```
50
+ void github connect [project] [options]
51
+ ```
52
+
53
+ Connect a GitHub repository to a Void project for automatic deploys. On every push to the configured branch, Void builds and deploys your project automatically.
54
+
55
+ The CLI opens your browser when it needs GitHub authorization. If no installation is available, run `void github install`.
56
+
57
+ **Options**
58
+
59
+ | Flag | Description |
60
+ | --------------------- | --------------------------------------------------------------------------------- |
61
+ | `--project <name>` | Project name (alias for the positional argument) |
62
+ | `--installation <id>` | GitHub App installation ID (required when you have multiple installations) |
63
+ | `--repo <owner/repo>` | Repository full name — required unless the installation grants exactly one repo |
64
+ | `--branch <name>` | Branch to deploy from — **required in non-interactive mode** |
65
+ | `--executor <type>` | Build executor: `container` (default) or `github_actions` |
66
+ | `--workflow <path>` | Authorized deploy workflow file — defaults to `.github/workflows/void-deploy.yml` |
67
+
68
+ Choose `container` for platform builds or `github_actions` for a deployment workflow. The CLI prompts for the executor and, for GitHub Actions, the workflow file. Pass the corresponding flags to skip those prompts.
69
+
70
+ The workflow must be a `.yml` or `.yaml` file under `.github/workflows/`. Only that workflow can obtain the project's OIDC deployment token. Prefer a dedicated deployment workflow.
71
+
72
+ For CI, supply the project and branch, plus the installation and repository when they cannot be selected automatically. Organization connections require repository authorization in a local browser first.
73
+
74
+ ```
75
+ void github connect my-app \
76
+ --installation 42 \
77
+ --repo owner/my-app \
78
+ --branch main
79
+ ```
80
+
81
+ **Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
82
+
83
+ You can connect only repositories your GitHub account can access.
84
+
85
+ A project has one GitHub connection. Running `void github connect` on a project that is already connected fails. To connect a different repository, run `void github disconnect` first.
86
+
87
+ ## `void github update` {#void-github-update}
88
+
89
+ ```
90
+ void github update [project] [options]
91
+ ```
92
+
93
+ Change the branch, executor, or workflow for an existing connection. To change the repository, disconnect and reconnect.
94
+
95
+ **Options**
96
+
97
+ | Flag | Description |
98
+ | ------------------- | ---------------------------------------------------------------- |
99
+ | `--project <name>` | Project name (alias for the positional argument) |
100
+ | `--branch <name>` | New branch to deploy from |
101
+ | `--executor <type>` | New build executor: `container` or `github_actions` |
102
+ | `--workflow <path>` | New authorized deploy workflow file (under `.github/workflows/`) |
103
+
104
+ The CLI prompts for new settings using the current values as defaults. In CI, pass at least one of `--branch`, `--executor`, or `--workflow`.
105
+
106
+ ```
107
+ void github update my-app --executor github_actions
108
+ ```
109
+
110
+ **Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
111
+
112
+ ## `void github status` {#void-github-status}
113
+
114
+ ```
115
+ void github status [project]
116
+ ```
117
+
118
+ Show the connected repository, branch, executor, and workflow. Container builds do not use the workflow file.
119
+
120
+ **Options**
121
+
122
+ | Flag | Description |
123
+ | ------------------ | ------------------------------------------------ |
124
+ | `--project <name>` | Project name (alias for the positional argument) |
125
+
126
+ ```
127
+ void github status my-app
128
+ ```
129
+
130
+ **Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
131
+
132
+ ## `void github disconnect` {#void-github-disconnect}
133
+
134
+ ```
135
+ void github disconnect [project]
136
+ ```
137
+
138
+ Disconnect a project from its GitHub repository, stopping automatic deploys. Any in-flight builds for the project are cancelled (their deploy tokens are revoked) before the connection is removed. If the project has no connection, it reports that and exits successfully. To point a project at a different repository, disconnect first, then run `void github connect`.
139
+
140
+ You are asked to confirm before anything is removed. Pass `--yes` to skip the prompt; `--yes` is **required** in a non-interactive shell (CI), where there is no prompt to answer.
141
+
142
+ **Options**
143
+
144
+ | Flag | Description |
145
+ | ------------------ | ----------------------------------------------------------------- |
146
+ | `--project <name>` | Project name (alias for the positional argument) |
147
+ | `--yes` | Skip the confirmation prompt (required in non-interactive shells) |
148
+
149
+ ```
150
+ void github disconnect my-app --yes
151
+ ```
152
+
153
+ **Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
154
+
155
+ ## Build {#build}
156
+
157
+ Inspect Deploy-on-GitHub builds.
158
+
159
+ ### `void build logs` {#void-build-logs}
160
+
161
+ ```
162
+ void build logs [build] [--follow] [--output <file>] [--project <slug>]
163
+ ```
164
+
165
+ Stream, tail, or download the build logs for a **container** build. With no
166
+ `[build]` argument, targets the project's most recent build.
167
+
168
+ | Flag | Purpose | Default |
169
+ | ------------------------ | ------------------------------------------------------------------------- | ------- |
170
+ | `--follow`, `-f` | Live-tail: poll until the build finishes and its final logs are captured. | off |
171
+ | `--output <file>`, `-o` | Write logs to a file instead of stdout (appends while following). | stdout |
172
+ | `--project <slug>`, `-p` | Target project. | linked |
173
+
174
+ **Project resolution** follows the same order as deploy: positional / `--project`,
175
+ `VOID_PROJECT`, linked project (`.void/project.json`).
176
+
177
+ Builds run on **GitHub Actions** keep their logs on GitHub — the command prints
178
+ the Actions run URL instead of streaming. Only the last 10,000 log lines of a
179
+ container build are retained.
180
+
181
+ Following waits for the platform to confirm the final log tail. If the platform cannot confirm it, upgrade the platform runtime or read the retained logs without `--follow`. An unfinished final tail reports an error after two minutes; retry to recover it.
182
+
183
+ Examples:
184
+
185
+ ```
186
+ void build logs # print the latest build's logs
187
+ void build logs -f # follow the latest build until it finishes
188
+ void build logs bld_123 -o build.log # download a specific build's logs
189
+ ```
@@ -0,0 +1,92 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Platform Configuration {#plan-configuration}
6
+
7
+ Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
8
+
9
+ `void platform config plans` opens an interactive plan menu using your administrator session. Plans have stable IDs and editable display names. Copy an existing plan to add one, edit limits without redeploying, archive it to stop new assignments, or remove it with an explicit replacement for its accounts.
10
+
11
+ ```sh
12
+ void platform config plans show [plan-id]
13
+ void platform config plans add <plan-id> --copy <existing-id> --name "Team"
14
+ void platform config plans set <plan-id> [--name "Team"] [--file plan.json]
15
+ void platform config plans reset <builtin-plan-id>
16
+ void platform config plans archive <plan-id>
17
+ void platform config plans restore <plan-id>
18
+ void platform config plans remove <plan-id> [--replacement <plan-id>]
19
+ void platform config plans default <plan-id>
20
+ void platform config plans sync
21
+ ```
22
+
23
+ Use `--plan` to preview changes and affected accounts; scripted mutations require `--yes`. Every command supports `--connection <registered-id-or-url>` and `--json`. `show` reports the effective limits, default, assignments, and pending account updates. `reset` restores a built-in plan's original limits and build instance size. Archived plans keep their existing accounts but cannot receive new assignments; change the default before archiving it. `remove` requires a replacement for a plan that has accounts or is the default. Changing the default affects only new accounts.
24
+
25
+ For `add` and `set`, `--file` reads a JSON object with optional `name`, `limits`, `buildInstanceType`, and boolean `allowShortSlugs`. `limits` is a partial object of nonnegative whole numbers; `0` means unlimited by the plan. Build timeouts remain capped at the platform maximum of 60 minutes; `0` uses that maximum. Omitted settings keep their current values or the copied plan's values. `buildInstanceType` is `standard-3` or `standard-4`. `allowShortSlugs` permits future assignments of project slugs of five characters or fewer; existing URLs remain available. Storage quotas are not editable. See [Plans and Limits](../../guide/platform/administration/plans.md) for supported limits and examples.
26
+
27
+ An apply checks the preview's revision and rejects concurrent changes. Lower quotas can restrict accounts already above them; usage history and billing periods are preserved. The CLI continues account updates until complete. If an update fails or stops making progress, the configuration remains saved and the command exits unsuccessfully. Run `sync --yes` to continue before editing plans again. Inspect `show` and operator events after an uncertain request outcome.
28
+
29
+ ## Authentication configuration {#authentication-configuration}
30
+
31
+ `void platform config auth` opens interactive configuration. These commands use
32
+ your administrator session from `void platform auth login`:
33
+
34
+ ```sh
35
+ void platform config auth list
36
+ void platform config auth show company
37
+ void platform config auth add google
38
+ void platform config auth add oidc --id company
39
+ void platform config auth add cloudflare-access --id access
40
+ void platform config auth configure company
41
+ void platform config auth test company
42
+ void platform config auth link company
43
+ void platform config auth enable company
44
+ void platform config auth disable github
45
+ void platform config auth admission
46
+ void platform config auth protection show
47
+ void platform config auth protection enable --installation <id>
48
+ void platform config auth protection disable --installation <id>
49
+ void platform config auth recover company --installation <id> --file recovery.json
50
+ ```
51
+
52
+ When configuring an existing installation for the first time, run
53
+ `void platform config auth initialize`, then sign in again. Its current login
54
+ methods and signup policy are preserved.
55
+
56
+ Adding or editing a method saves a pending configuration. Enabling it verifies the
57
+ login in your browser before applying it. Linking the verified identity to your
58
+ account is a separate, explicit action. Before disabling a method, verify a linked
59
+ alternative; the last method cannot be disabled. Disabling revokes human sessions
60
+ created through that method, including operator sessions. Scoped deployment tokens
61
+ remain valid; a human login token used as `VOID_TOKEN` is still revoked.
62
+
63
+ Commands accept `--connection <registered-id-or-url>` and `--json`. Changes accept
64
+ `--plan` or `--yes`. For scripted configuration, use `--file <path>` for the
65
+ nonsecret fields and `--client-secret-env <name>` for the environment variable
66
+ containing the secret. Omit the secret when editing to retain its saved value.
67
+ For `enable` or `link` in scripts, supply `--test-id <id>` from a completed test.
68
+ `test --json` returns a browser URL, test ID, and expiry without waiting for completion.
69
+
70
+ `admission` chooses invited/allowlisted, company-approved, or public signup.
71
+ Company-approved signup creates ordinary accounts automatically when a user
72
+ passes a configured company rule. Select an enabled, company-restricted OIDC or
73
+ Google Workspace method, or an enabled Cloudflare Access gate. In scripts,
74
+ `admission --file <path> --yes` reads a policy such as
75
+ `{"mode":"company","connections":["company"],"access":false}`.
76
+
77
+ `protection enable` creates or connects Cloudflare Access applications independently
78
+ of login methods. Its `--file` accepts the `cloudflareAccess` object described in
79
+ [installation setup](../../guide/platform/installation/setup.md#choose-login-methods).
80
+ Protection changes require installation ownership, the saved recovery credentials,
81
+ and a human administrator session. They revoke current human sessions. Before
82
+ removing protection, change any signup rule that depends on that gate. Cloudflare
83
+ applications are retained for deliberate cleanup.
84
+
85
+ `recover <connection-id>` restores an existing administrator when normal login is
86
+ unavailable. Its file contains `administratorUserId`, optional nonsecret provider
87
+ `configuration`, and an `expectedIdentity` object with exact `issuer` and `subject`
88
+ when using `--yes`. Recovery requires Cloudflare management/database authority,
89
+ original recovery keys, and a successful browser provider test. Use
90
+ `--client-secret-env <name>` for new or rotated credentials.
91
+
92
+ For automation, supply `VOID_OPERATOR_TOKEN` with an explicit `VOID_API_URL` or `--connection`. Operator tokens are stored separately from application deployment credentials. The API checks your current administrator access on every request. See [Using Scripts](../../guide/platform/administration/operations.md#using-scripts) for an example.
@@ -0,0 +1,81 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Platform Email {#operator-email}
6
+
7
+ Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
8
+
9
+ Decide who mail from the shared sender may reach, who registers email domains, and a project's outbound caps:
10
+
11
+ ```sh
12
+ void platform email policy
13
+ void platform email policy-set <verified|domains|any> [--domains <domain[,domain...]>]
14
+ void platform email settings
15
+ void platform email settings-set --domains <self-serve|admin>
16
+ void platform email limit <project-id|slug> [--monthly <n>] [--burst <n>]
17
+ void platform email logs <project-id|slug> [--page <n>] [--limit <n>] [--json]
18
+ void platform email attempts [--project <id|slug>] [--page <n>] [--limit <n>]
19
+ void platform email attempt-resolve <attempt-id> --ended --reason <text>
20
+ void platform email operation-resolve <operation-id> --ended --outcome <applied|not-applied> --reason <text>
21
+ void platform email shared-recipients [--project <id|slug>] [--page <n>] [--limit <n>]
22
+ void platform email shared-recipient-resolve <recipient-id> --ended --outcome <applied|not-applied> --reason <text>
23
+ ```
24
+
25
+ `policy` decides which recipients a project's `<slug>+tag@<mail domain>` sender reaches: `verified` (the default) means only that project's verified destinations; `domains` adds every address on the listed domains; `any` lifts the check. Neither widens delivery to addresses on the platform's own mail domain: those stay verified-destination-only, so no project reaches another project's inbox without its consent. Cloudflare still refuses a destination it has not verified until the platform mail domain is onboarded for Email Sending, so under `domains` or `any` such refusals arrive as per-recipient `UNVERIFIED_DESTINATION` results. Custom-domain sends are not affected.
26
+
27
+ `settings-set --domains admin` tells `void email domain add` to print the administrator's command instead of starting token setup. `limit` overrides the project's monthly and rolling 60-second caps (defaults 200 and 10); a project page in the admin UI shows and clears them.
28
+
29
+ `logs` inspects retained receipt and recipient outcomes, including operation IDs, provider references, error codes, and policy versions. Pages contain at most 100 records, newest first; use `--json` for all fields. After project deletion, use its project ID to inspect metadata until the 30-day retention period expires. Message content and credentials are never included.
30
+
31
+ `attempts` lists interrupted provider calls and their earliest resolution time. Once
32
+ the original Worker execution has ended and the attempt is at least 24 hours old,
33
+ `attempt-resolve` records `outcome_unknown`, retains its quota charge, and releases
34
+ the project/domain cleanup fence. `--ended` is your attestation that the call is no
35
+ longer active; `--reason` is stored in the operator audit log. Keep recipient
36
+ addresses and message content out of the reason. The send is never retried. Use
37
+ `--plan` to preview and `--yes` to apply without a prompt.
38
+
39
+ `operation-resolve` recovers a Cloudflare routing, Worker, secret, catch-all, or
40
+ Sending mutation whose outcome remains unknown. After the original execution
41
+ has ended and the operation is at least 24 hours old, inspect the exact resource
42
+ named by the preview and attest whether its write was `applied` or `not-applied`.
43
+ Applied writes continue at the next step; not-applied writes retry the same
44
+ persisted intent. The running platform version must match that intent, so restore
45
+ the matching version before recovering an operation created by older code. The
46
+ preview pins the step, attempt, connection and route generations, resource
47
+ identity, and digest used by the apply request. Time alone never retries a write.
48
+
49
+ `shared-recipients` discovers shared inbound addresses, provider rule names and
50
+ IDs, and interrupted creation intents, including projects awaiting deletion.
51
+ If creation has an unknown outcome, use `shared-recipient-resolve` after the
52
+ original execution has ended and its creation intent is at least 24 hours old.
53
+ Inspect the exact account, zone, recipient and rule named by `--plan`, and use
54
+ Cloudflare's provider audit to establish whether creation was `applied` or
55
+ `not-applied`. A missing rule alone is insufficient evidence for `not-applied`.
56
+ Supply that finding in `--reason`; it is recorded in platform events.
57
+
58
+ Applied recovery requires the exact owned rule to be present and records its
59
+ ID. Not-applied recovery releases the creation intent only after repeated
60
+ provider inspection and your attestation. Both outcomes leave delivery unready
61
+ until normal reconciliation verifies it. Recovery itself creates or deletes no
62
+ provider rule and never reopens a deleting project; retry deletion afterward
63
+ when recovering cleanup. Use `--yes` to apply the preview without a prompt.
64
+ If the intent or provider ownership changes, inspect a new plan.
65
+
66
+ Register and maintain email domains for projects whose owners hold no Cloudflare credential:
67
+
68
+ ```sh
69
+ void platform email domains [--project <id|slug>]
70
+ void platform email domain-add <domain> --project <id|slug> [--token-stdin]
71
+ void platform email domain-status <domain>
72
+ void platform email domain-sync <domain>
73
+ void platform email domain-rotate-secret <domain>
74
+ void platform email domain-remove <domain> [--token-stdin]
75
+ ```
76
+
77
+ `domain-add` uses the platform's Cloudflare credential for zones in its account. For another account, pipe a scoped Cloudflare API token on standard input with `--token-stdin --yes`. Managed custom inbound email requires the Cloudflare zone apex (`example.com`). If its MX records already belong to another mail provider, use the project's shared email address or choose another unused zone. Native Cloudflare deployments also support literal recipient addresses on subdomains; see [Your own Cloudflare account](../../guide/email/domains.md#your-own-cloudflare-account).
78
+
79
+ `domain-status` shows inbound, outbound, and credential-management readiness with the latest operation. A blocked operation resumes through `domain-sync`; a blocked rotation resumes through `domain-rotate-secret`, preserving already confirmed steps and its staged credential. An uncertain operation remains stopped until read-back proves the result or an administrator uses `operation-resolve`. Domains an administrator adds show `managed_by: admin`; their owners can list and inspect them but use these commands for `sync`, `domain-rotate-secret`, and `remove`.
80
+
81
+ If project deletion leaves cleanup blocked by an expired or revoked Cloudflare token, use `domain-remove <domain> --token-stdin --yes` with a replacement scoped to the same account and zone. This resumes the retained cleanup only when no other project uses the connection. For a live project, renew its token through `domain-add` instead.
@@ -0,0 +1,127 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Platform Installation {#void-platform-install}
6
+
7
+ ```sh
8
+ void platform install [options] [--yes]
9
+ ```
10
+
11
+ | Option | Purpose |
12
+ | --------------------------------- | ------------------------------------------------------------------------------------ |
13
+ | `--name <slug>` | Installation name used in `void-<name>-<role>` resource names; choose an unused name |
14
+ | `--display-name <name>` | Human-readable platform name |
15
+ | `--account <id>` | Cloudflare account id |
16
+ | `--auth-config <path>` | Login methods, signup policy, and environment references for provider secrets |
17
+ | `--login-methods <methods>` | Comma-separated `github`, `google`, `oidc`, or `cloudflare-access` login methods |
18
+ | `--access-protection` | Protect the platform UI and APIs with Cloudflare Access |
19
+ | `--no-access-protection` | Skip Cloudflare Access protection |
20
+ | `--hyperdrive <create\|id>` | Create Hyperdrive or use the specified existing configuration |
21
+ | `--application-domain <domain>` | Base domain for deployed apps |
22
+ | `--workers-dev` | Explicit testing mode; add an application domain later |
23
+ | `--zone <domain>` | Cloudflare zone containing the application domain |
24
+ | `--dedicated-zone` | Add zone-wide catch-all routes; valid only when the app domain is the whole zone |
25
+ | `--no-dedicated-zone` | Skip zone-wide application catch-all routes |
26
+ | `--control-plane-domain <domain>` | Optional API custom hostname; defaults to `workers.dev` |
27
+ | `--no-control-plane-domain` | Use the default `workers.dev` API hostname |
28
+ | `--dashboard-url <origin>` | HTTPS origin of an optional dashboard deployed separately |
29
+ | `--plan` | Resolve and print a read-only plan |
30
+ | `--resume` | Continue the matching checkpointed installation |
31
+ | `--runtime <path>` | Deploy a locally built, integrity-checked runtime directory |
32
+ | `--yes` | Acknowledge Cloudflare changes in non-interactive use |
33
+
34
+ For a first installation, follow [Install a Void Platform](../../guide/self-hosted-platform.md). The interactive installer recommends using a domain and offers **Use workers.dev for testing** as a visible alternative. Void creates the platform infrastructure and tables. External PostgreSQL and a configured login method are required in either mode; GitHub OAuth is the default login choice, not a requirement. `--workers-dev` skips zone/DNS/certificate operations and cannot be combined with `--application-domain`, `--zone`, or `--dedicated-zone`.
35
+
36
+ Read-only plans, workers.dev installations with the default API hostname, and supported lifecycle operations can use Cloudflare browser login and the system keychain. Installation that writes DNS or creates a zone needs an explicit management token through `CLOUDFLARE_API_TOKEN` or `CF_API_TOKEN`.
37
+
38
+ The installed platform needs a separate runtime token to provision resources for apps. The interactive installer prompts for it and the other setup values. For non-interactive installs, inject the variables listed in [Install from CI](../../guide/platform/installation/ci.md).
39
+
40
+ To enable email during install or upgrade, set both `VOID_EMAIL_SENDER_DOMAIN` and `VOID_EMAIL_SHARED_ZONE_ID`. Void records the pair for later upgrades; supplying only one is an error.
41
+
42
+ Use `--dashboard-url https://dash.example.com` when deploying the optional user
43
+ dashboard separately. The URL must be an HTTPS origin without credentials, a
44
+ path, query, or fragment. Void permits that origin's login callbacks and saves
45
+ it for later maintenance; it does not deploy a dashboard Worker. Omission keeps
46
+ an existing installation's saved dashboard origin.
47
+
48
+ `--plan` previews resource names, login methods, callback URLs, and credential requirements. Run the install or resume command printed at the end to continue. For login configuration, use either `--auth-config` or `--login-methods` with the Access protection flags.
49
+
50
+ New resources use `void-<name>-<role>` names; choose an unused installation name. The installer opens setup pages for missing credentials and reuses values already supplied.
51
+
52
+ Installation progress and partial credentials are saved encrypted locally. Rerun the installer to continue unfinished setup, or pass `--resume --name <id>`. Use lifecycle commands for completed installations.
53
+
54
+ Use an empty PostgreSQL database dedicated to the installation. You can correct a failed initial connection, but after the database is claimed or Hyperdrive is provisioned, commands reject a different URL.
55
+
56
+ Choose whether Void creates Hyperdrive or uses an existing configuration. An existing Hyperdrive must point to the platform database with SQL result caching disabled. Supply a database owner URL for migrations. See [Use an existing Hyperdrive](../../guide/platform/installation/prerequisites.md#use-an-existing-hyperdrive) for setup and [Install from CI](../../guide/platform/installation/ci.md) for unattended inputs.
57
+
58
+ Recovery secrets are encrypted using your system keychain. Without one, supply a base64-encoded 32-byte `VOID_PLATFORM_RECOVERY_KEY`. Keep the original credentials in protected CI secrets for recovery.
59
+
60
+ If a newly created zone is waiting for registrar delegation, resume after it becomes active:
61
+
62
+ ```sh
63
+ void platform install --resume --name <installation-id>
64
+ ```
65
+
66
+ See [Self-host a Void platform](../../guide/self-hosted-platform.md) for prerequisites, token scope, exact footprint, domain behavior, and an end-to-end walkthrough.
67
+
68
+ ## `void platform domain set` {#void-platform-domain-set}
69
+
70
+ ```sh
71
+ void platform domain set <domain> [--installation <id>] [--zone <domain>] [--dedicated-zone] [--plan] [--yes]
72
+ ```
73
+
74
+ Add an application domain to a workers.dev test platform. Domain-based installations remain the recommended default. The command detects the zone when possible, creates missing DNS and routes after confirmation, and checks HTTPS and project Zero Trust protection before making the domain canonical. If DNS, certificates, or protection are pending, rerun the same command to resume. `--plan` is read-only; non-interactive mutations require `--yes`.
75
+
76
+ Existing workers.dev URLs remain available, and the platform API origin, OAuth callback, projects, and deployments stay unchanged. The command verifies the running runtime token's Cache Purge permission for the new zone. A disabled platform stays disabled. Use the database URL from the original installation when administering from another machine. Replacing an already configured application domain is not supported. See [Adding a Domain](../../guide/platform/installation/domains.md#adding-a-domain).
77
+
78
+ ## Lifecycle commands {#lifecycle-commands}
79
+
80
+ Use these commands to recover, update, pause, or remove an installation:
81
+
82
+ ```sh
83
+ void platform discover [--account <id>] [--installation <id-or-name>]
84
+ void platform upgrade [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
85
+ void platform rollback [id] --runtime <earlier-path> [--from-runtime <current-path>] [--plan] [--yes]
86
+ void platform repair [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
87
+ void platform disable [id] [--plan] [--yes]
88
+ void platform enable [id] [--runtime <path>] [--plan] [--yes]
89
+ void platform uninstall [id] [--plan] [--purge-data] [--keep-zone] [--yes]
90
+ ```
91
+
92
+ `discover --installation` limits recovery and endpoint verification to one installation in a shared Cloudflare account.
93
+
94
+ Omit `id` when only one installation is configured, or choose from the interactive picker. Non-interactive commands need an ID when several installations exist. Commands that make changes also require `--yes`; `--plan` only previews changes.
95
+
96
+ To add or explicitly change a separately deployed dashboard after installation,
97
+ use `repair --dashboard-url <origin>` or `upgrade --dashboard-url <origin>`.
98
+ Preview with `--plan` first. Existing Access protection must cover the configured
99
+ dashboard origin before maintenance can proceed. See [Optional Dashboard](../../guide/platform/installation/domains.md#optional-dashboard).
100
+
101
+ After discovery on another machine, set `VOID_PLATFORM_DATABASE_URL`. An upgrade that preserves every deployed Worker also preserves its secrets. For an email-enabled installation without its encrypted recovery file, restore `VOID_PLATFORM_EMAIL_SIGNING_SECRET`; recreating only the email gateway needs that key and does not need the Cloudflare runtime token or JWT signing key. Recreating the API or proxy also requires the email key when email is enabled, in addition to their normal secrets. Recreating the API requires its original runtime-token, GitHub, R2, JWT, and project-encryption values; recreating the proxy requires the runtime token and JWT signing key.
102
+
103
+ | Command | Behavior |
104
+ | ----------- | --------------------------------------------------------------------------------------------- |
105
+ | `discover` | Verifies remote ownership and restores local installation records without downloading secrets |
106
+ | `repair` | Recreates missing resources owned by the installer |
107
+ | `upgrade` | Deploys the selected runtime and supported pending migrations |
108
+ | `rollback` | Restores a declared-compatible earlier runtime without reversing PostgreSQL migrations |
109
+ | `disable` | Blocks platform traffic through routing storage without removing data |
110
+ | `enable` | Restores traffic after checking the platform |
111
+ | `uninstall` | Blocks traffic and removes eligible resources, retaining data by default |
112
+
113
+ Repair and upgrade preserve disabled state. New, resumed, and previously disabled installations block user traffic until all target Workers pass verification; the installer's health probes can still run. Routes and custom domains remain attached.
114
+
115
+ `--runtime` selects a custom platform build. Relative paths resolve from your current directory. Void verifies the build before making changes; see [Platform Development](../../guide/platform/development/runtime.md#deploying-your-runtime) for creating one.
116
+
117
+ Without `--runtime`, the CLI uses its packaged platform version.
118
+
119
+ Platform migrations only move forward. Void checks compatibility before updating the database and tells you if an intermediate release is needed.
120
+
121
+ An upgrade completes after the new Workers pass health checks. If rollout fails, Void attempts to restore the previous Workers. Retrying does not repeat completed migrations.
122
+
123
+ `platform rollback` restores a compatible earlier runtime without reversing database migrations. Pass its files with `--runtime`; if the installed version is custom, also supply that version with `--from-runtime`. Void refuses incompatible targets.
124
+
125
+ Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are always retained for manual review.
126
+
127
+ See [Disable and Uninstall](../../guide/platform/installation/uninstall.md#remove-retained-resources) for the full removal policy and the cleanup order.
@@ -0,0 +1,90 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Platform Operations {#operator-deployments}
6
+
7
+ Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
8
+
9
+ Find a deployment, inspect its manifest, or request cancellation:
10
+
11
+ ```sh
12
+ void platform deployment list [--project <id-or-slug>] [--status <status>] [--search <text>] [--page <n>] [--limit <n>]
13
+ void platform deployment show <id>
14
+ void platform deployment cancel <id>
15
+ void platform deployment migrate-assets <id> [--cursor <cursor>] [--plan|--yes]
16
+ ```
17
+
18
+ Cancellation applies while a deployment is pending, uploading, migrating, or prerendering, and can be requested again while it is canceling. A deployment that has begun switching traffic, is compensating for a failure, or has finished cannot be canceled through this command.
19
+
20
+ `migrate-assets` copies legacy assets to scoped R2 storage, verifies their contents, and updates each batch only after all its assets are verified. Original assets remain in place, and application traffic stays on the same deployment. Upgrade the platform runtime before using this command. Migrate both active deployments and retained rollback deployments before removing support for older asset storage.
21
+
22
+ Use `--plan` to preview the first batch. Applying authorizes all remaining batches for that deployment; the CLI previews each batch and prints its result, including `nextCursor`. With `--json`, results are JSON Lines. If a later batch fails or the command is interrupted, resume with the cursor from the last successful result. An ambiguous request is never retried automatically; inspect the deployment before resuming. A completed migration reports `complete: true` and `nextCursor: null`.
23
+
24
+ Use [`void platform system asset-migrations`](#operator-system) to find deployments requiring migration. Inspect every inventory page, migrate each deployment with `needsMigration` greater than zero, then inspect every page again. Include retained rollback deployments and stored bundles. Investigate rows marked `invalid` before considering migration complete. Keep the older asset readers until the full inventory is valid and no protected deployment needs migration.
25
+
26
+ Read its runtime logs with:
27
+
28
+ ```sh
29
+ void platform deployment logs <id> [--since <time>] [--cursor <cursor>] [--limit <n>] [--follow]
30
+ ```
31
+
32
+ The default is the last hour, oldest first, with up to 100 records. `--since` accepts a duration such as `10m`, `2h`, or `1d`, an ISO date, or epoch milliseconds. Set `--limit` from 1 to 500 and pass the response's `nextCursor` as `--cursor` to read another page.
33
+
34
+ `--follow` reads the remaining pages and checks for new logs every two seconds until you press Ctrl+C. It checks a five-minute overlap for delayed records and suppresses replayed rows. Records that arrive later may need a subsequent historical query. Following stops with an error if a window exceeds 10,000 records; use a narrower historical query in that case.
35
+
36
+ ## Builds {#operator-builds}
37
+
38
+ Inspect a build or read its output:
39
+
40
+ ```sh
41
+ void platform build show <id>
42
+ void platform build logs <id> [--since <sequence>] [--limit <n>] [--follow]
43
+ ```
44
+
45
+ Build logs start at sequence `0` and return up to 500 lines. Use the returned `lastSeq` as `--since` to continue; `--limit` accepts 1 to 500. Container log retrieval requires managed builds to be enabled. GitHub Actions builds return an external log URL.
46
+
47
+ Following waits for the final logs after the build becomes terminal. If completion cannot be confirmed within two minutes, the command exits with an error. Older builds without a completion signal may wait for 30 seconds without new lines before following stops.
48
+
49
+ ## System {#operator-system}
50
+
51
+ Inspect activity, check service health, or review administrative changes:
52
+
53
+ ```sh
54
+ void platform system overview
55
+ void platform system health
56
+ void platform system cli-versions
57
+ void platform system asset-migrations [--page <n>] [--limit <n>]
58
+ void platform system events [--page <n>] [--limit <n>]
59
+ void platform system backfill-queue-tokens
60
+ void platform system sandbox-drain [--cursor <opaque-cursor>]
61
+ ```
62
+
63
+ `overview` shows platform totals and recent activity. `health` checks the configured services and database, and exits with a nonzero status if a check fails. `cli-versions` reports the CLI versions used by deployments.
64
+
65
+ `asset-migrations` inventories active deployments, retained rollback deployments, and deployments with stored bundles. It reports their asset counts, `needsMigration`, and an `invalid` flag for unreadable metadata. Read all pages using the response's pagination fields. Migrate each deployment with `needsMigration` greater than zero through [`deployment migrate-assets`](#operator-deployments), then rerun the full inventory. Migration keeps the original assets; removing those assets or their older readers requires separate verification.
66
+
67
+ `events` shows the administrator, target, and outcome of changes. A pending event means the outcome has not been recorded. Previews and session login/logout do not create these events. `backfill-queue-tokens` repairs older queue entries that are missing authentication tokens and supports `--plan` before applying the repair.
68
+
69
+ Use `sandbox-drain` when an upgrade from the legacy tenant-owned Sandbox runtime asks you to finish cleanup. Preview with `--plan`; pass the returned `nextCursor` as `--cursor` to inspect later pages. Apply with `--yes` and rerun until it reports `complete: true`, then rerun the interrupted upgrade. Application traffic stays paused during cleanup, while administrator login remains available. The completed upgrade enables the current managed Sandbox controller automatically.
70
+
71
+ Use the [platform lifecycle commands](./platform-installation.md#lifecycle-commands) to maintain your installation's Workers.
72
+
73
+ ## Hosted Workers {#operator-workers}
74
+
75
+ The following commands manage the Workers of the hosted Void Cloud platform.
76
+ They are unavailable on a self-hosted installation; use the
77
+ [lifecycle commands](./platform-installation.md#lifecycle-commands) there instead.
78
+
79
+ ```sh
80
+ void platform worker list [--environment <production|staging>]
81
+ void platform worker show <worker-name> [--environment <production|staging>]
82
+ void platform worker rollback <worker-name> <version-id> [--environment <production|staging>]
83
+ void platform worker rollback-all [--environment <production|staging>]
84
+ void platform worker events [batch-id] [--environment <production|staging>]
85
+ ```
86
+
87
+ Use a name from `worker list`, such as `api` or `proxy`. `show` lists its
88
+ versions and current deployment. Preview either rollback with `--plan`, then
89
+ apply it interactively or with `--yes` in a script. `events` lists worker
90
+ operation events or inspects one batch by ID.